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?

ztik
sumber

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.

Kaya
sumber
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
Martin York
sumber
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