Sisipkan tab dalam mode INSERT saat Expandtab diatur


12

Saya telah menetapkan expandtabdi .vimrcfile saya untuk mengkonversi tabke beberapa spacekarakter. Namun beberapa file (seperti Makefile) membutuhkan tabkarakter yang dimasukkan.

Apakah ada cara mudah untuk memaksa penyisipan tabsaat saya mengetik?

Jawaban:


27

Alih-alih hanya menekan Tab, pertama tekan Ctrl-Vlalu tekan Tab.

Ini dapat digunakan untuk memasukkan berbagai karakter khusus. Lihat :help i_CTRL-Vdetailnya.

Ctrl-Vjuga bekerja dalam mode command-line ( :help c-CTRL-V), dan bahkan dalam beberapa program lain sepenuhnya. (mis. bash, mutt.)

Jika Anda telah Ctrl-Vmemetakan ke hal lain, coba Ctrl-Q. Ini memiliki efek yang sama di Vim Ctrl-V, tetapi beberapa terminal menggunakannya untuk aliran kontrol, dalam hal ini Vim tidak akan pernah melihatnya.


5
Atau <c-v>009dalam kasus kunci Tab rusak atau hardcore ASCII purist :-)
Martin Tournoij

17

Alih-alih mengubah perilaku Anda (yang rawan kesalahan).
Saya akan mengatur vim untuk berperilaku berbeda untuk tipe file ini.

Jadi dalam pengeditan normal, saya perluas tab. Namun khusus untuk makefile saya atur noexpandtabagar tab tetap dipertahankan.

Tambahkan berikut ini ke file ~ / .vimrc Anda:

" Normal action
set expandtab

if has("autocmd")

    " If the filetype is Makefile then we need to use tabs
    " So do not expand tabs into space.
    autocmd FileType make   set noexpandtab

endif

3
Saya menjawab pertanyaannya, tetapi Anda sebenarnya sudah tahu apa masalah yang mendasarinya jauh lebih baik daripada saya. Kerja bagus.
Kaya

Saya pikir kedua jawaban itu berharga. Karena kadang-kadang Anda masuk ke suatu tempat yang jauh dan tidak ingin mengacaukan konfigurasi vim tetapi hanya dengan cepat ingin mengedit Makefile.
Daniel Schmitz
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.