GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya bisa mengubah spasi menjadi tab di Vim atau Linux?

1 - Jika Anda memiliki spasi dan ingin tab.

Pertama, Anda perlu memutuskan berapa banyak ruang yang akan memiliki satu tab. Yang mengatakan, misalkan Anda memiliki garis dengan 4 spasi di depan, atau 8 ... Dari yang Anda sadari, Anda mungkin ingin tab menjadi 4 spasi. Sekarang dengan info itu, Anda melakukan:

:set ts=4
:set noet
:%retab!

Ada masalah di sini! Urutan perintah ini akan mencari semua teks Anda, bukan hanya spasi di awal baris. Itu berarti sebuah string seperti:"Hey,␣this␣␣␣␣is␣4␣spaces" akan menjadi "Hey,␣this⇥is␣4␣spaces" , tapi tidak! ini adalah tab!.

Untuk mengatasi masalah kecil ini saya merekomendasikan search , bukan retab .

:%s/^\(^I*\)␣␣␣␣/\1^I/g

Pencarian ini akan mencari di seluruh file untuk setiap baris yang dimulai dengan berapa pun jumlah tab, diikuti dengan 4 spasi, dan menggantinya dengan berapa pun jumlah tab yang ditemukan ditambah satu.

Ini, sayangnya, tidak akan berjalan sekaligus!

Pada awalnya, file akan memiliki baris yang dimulai dengan spasi. Pencarian kemudian akan mengonversi hanya 4 spasi pertama menjadi tab, dan membiarkan yang berikut...

Anda perlu mengulangi perintahnya. Berapa kali? Sampai Anda mendapatkan pattern not found . Saya belum bisa memikirkan cara untuk mengotomatiskan prosesnya. Tetapi jika Anda melakukannya:

`[email protected]:`

Anda mungkin sudah selesai. Perintah ini mengulangi pencarian/ganti terakhir sebanyak 10 kali. Sepertinya program Anda tidak akan memiliki begitu banyak indentasi. Jika sudah, ulangi lagi @@ .

Sekarang, hanya untuk melengkapi jawabannya. Saya tahu Anda meminta sebaliknya, tetapi Anda tidak pernah tahu kapan Anda perlu mengurungkan sesuatu.

2 - Anda memiliki tab dan menginginkan spasi.

Pertama, putuskan berapa banyak ruang yang Anda inginkan untuk mengubah tab Anda. Katakanlah Anda ingin setiap tab menjadi 2 spasi. Anda kemudian melakukan:

:set ts=2
:set et
:%retab!

Ini akan memiliki masalah yang sama dengan string. Tapi sebagai gaya pemrograman yang lebih baik untuk tidak menggunakan tab keras di dalam string, Anda sebenarnya melakukan hal yang baik di sini. Jika Anda benar-benar membutuhkan tab di dalam string, gunakan \t .


Menggunakan Vim untuk memperluas semua terdepan spasi (lebih lebar dari 'tabstop' ), Anda benar menggunakan retab tapi sebelumnya pastikan 'expandtab' disetel ulang (:verbose set ts? et? adalah temanmu). retab mengambil rentang , jadi saya biasanya menentukan % berarti "seluruh file".

:set tabstop=2      " To match the sample file
:set noexpandtab    " Use tabs, not spaces
:%retab!            " Retabulate the whole file

Sebelum melakukan hal seperti ini (terutama dengan file Python!), Saya biasanya mengatur 'list' , agar saya bisa melihat ruang putih dan perubahan.

Saya memiliki pemetaan berikut di .vimrc saya untuk ini:

nnoremap    <F2> :<C-U>setlocal lcs=tab:>-,trail:-,eol:$ list! list? <CR>

Linux
  1. Bagaimana saya mengonfigurasi Vim sebagai editor default saya di Linux

  2. Cara Mengatur atau Mengubah Nama Host Sistem di Linux

  3. Cara Mengatur Variabel $Path di Linux

  1. Bagaimana saya bisa menghubungkan file di Linux?

  2. Bagaimana Anda bisa mengganti tombol j dan k di vim?

  3. Bagaimana cara mengatur tab ke 4 spasi di vim?

  1. Cara mengatur printer Anda di Linux

  2. Cara mengatur jail chroot Linux

  3. Bagaimana saya bisa mengatur afinitas prosesor dari suatu proses di Linux?