Cara menyisipkan karakter tab saat opsi ekspansi tab aktif di Vim


352

Ketika saya dalam mode penyisipan dan saya memiliki expandtabopsi diaktifkan, menekan Tab ↹hasil dalam memasukkan jumlah ruang yang dikonfigurasi.

Tetapi kadang-kadang saya ingin memasukkan karakter tab yang sebenarnya.

Apakah Anda tahu bagaimana melakukan ini?

Jawaban:


516

Anda dapat menggunakan <CTRL-V><Tab>"mode insert". Dalam mode sisipkan, sisipkan <CTRL-V>salinan literal dari karakter Anda selanjutnya.

Jika Anda perlu sering melakukan ini, @ Dee`Kej menyarankan (di komentar) pengaturan Shift+ Tabuntuk memasukkan tab asli dengan pemetaan ini:

:inoremap <S-Tab> <C-V><Tab>

Juga, seperti dicatat oleh @feedbackloop, pada Windows Anda mungkin perlu menekan <CTRL-Q>daripada <CTRL-V>.


33
Dan kemudian gunakan .untuk mengulangi perintah terakhir jika Anda ingin menyisipkan banyak tab.
— Xavier T.

10
Saya mempunyai beberapa masalah dalam menggunakan kombinasi ini karena saya dalam mode Perintah. Pastikan Anda menjalankan perintah ini dalam mode EDIT.
— mgfernan

11
Mode INSERT, secara teknis.
— mkmurray

2
Catatan: Jika Anda menggunakan gVim di Windows, Anda mungkin perlu menggunakan CTRL+ Qsebagai gantinya - lihat stackoverflow.com/questions/6951672/…
— feedbackloop

8
Saya baru saja saya jalan pintas sederhana untuk kasus ini dan tampaknya berfungsi (tidak melanggar apa pun): inoremap <S-Tab> <C-V><Tab>- Anda dapat memasukkannya ke dalam ~/.vimrcfile Anda .
— Dee'Kej

34

Anda dapat menonaktifkan opsi expandtab dari dalam Vim seperti di bawah ini:

:set expandtab!

atau

:set noet

PS: Dan atur kembali ketika Anda selesai dengan memasukkan tab, dengan "set expandtab" atau "set et"

PS: Jika Anda memiliki set tab yang setara dengan 4 spasi di .vimrc (softtabstop), Anda mungkin juga ingin mengaturnya menjadi 8 spasi agar dapat memasukkan tab dengan menekan tombol tab sekali alih-alih dua kali (set softtabstop = 8 ).


Singkatnya: set etdan set noetuntuk beralih tabdan spacesesuai kebutuhan.
— Eric Wang

Ctrl + V menyebabkan paste terjadi dan saya tidak punya waktu untuk menyesuaikan keybindings. Ini membantu
— Shirish Hirekodi

2

Dari dokumentasi di expandtab:

Untuk memasukkan tab asli saat expandtabaktif, gunakan . Lihat juga dan ins-expandtab . Opsi ini disetel ulang ketika opsi disetel dan dikembalikan saat opsi diatur ulang.CTRL-V<Tab>:retab
pastepaste

Jadi jika Anda memiliki pemetaan untuk mengganti pasteopsi, mis

set pastetoggle=<F2>

Anda juga bisa melakukannya <F2>Tab<F2>.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.