Saya perhatikan saat mengedit sepanjang baris dalam file .txt dalam mode insert kursor akan pindah ke awal baris setelah menulis menggunakan urutan tombol:
<esc>:w
Saya ingin mengubah perilaku ini sehingga kursor akan tetap dalam posisi mengikuti a: write. Apakah ini mungkin? Saya tidak membutuhkan kursor untuk tetap dalam mode insert, saya hanya ingin mempertahankan posisi terakhirnya setelah menulis.
Saya menggunakan gVim 7.4 di windows. .Vimrc saya sangat mendasar, saya tidak percaya pengaturan saya mengganggu perilaku ini. Saya juga telah menghapus sumber mswin.vim dan example.vim dari .vimrc saya (seperti yang dibundel dengan installer windows resmi vim.org).
Setelah membaca komentar di bawah ini saya melihat masalah lagi dan menyadari kursor hanya meluncur ke paling kiri setelah menulis pada baris yang seluruhnya terdiri dari ruang putih tertinggal. Dengan kata lain, kursor hanya meluncur ke paling kiri pada esc-: w ketika garis adalah lekukan menggantung tanpa karakter lain selain spasi . .Vimrc menangani perilaku indent dengan pengaturan ini:
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set autoindent
Jadi, baris baru yang dibuat di bawah garis indentasi akan berisi 4 spasi putih sebagai 4 spasi pertama dari garis (yang ingin saya pertahankan). Setelah tombol 'esc' tekan kursor slide ke paling kiri dari buffer.
Apakah ada cara untuk mempertahankan posisi kursor setelah menekan 'esc' untuk kembali ke mode normal, pada garis yang terdiri dari spasi spasi putih (seperti indentasi)?
gvim -u NONE -U NONE
(Anda dapat menggunakan cmd.exe, atau membuat pintasan)? Ini akan mencegah pemuatan (g) file vimrc Anda.Jawaban:
Melihat dokumentasi untuk autoindent memiliki jawaban mengapa dan bagaimana mengatasinya.
:help 'autoindent'
:Dengan kata lain, jika Anda ingin indentasi tidak hilang, ketik sesuatu dan kemudian mundur ruang sebelum memukul Esc, dan ruang terkemuka akan tetap ada.
Atau, jika Anda hanya ingin kembali pada level indentasi ketika Anda kembali ke mode insert dan menggunakan
'cindent'
juga, gunakan Shift-Ssebagai gantinya i, yang akan menghapus baris (sudah kosong), dan mulai pada level indentasi yang sesuai. Ini bukan solusi umum seperti yang di atas, tapi saya lebih suka ini ketika saya sedang menulis kode C, sehingga file-file saya tidak benar-benar disimpan dengan garis spasi putih saja.sumber
nnoremap o o <BS><Esc><DEL>
, dannnoremap O O <BS><Esc><DEL>