Pertanyaan Masukkan baris kosong tanpa memasuki mode insert


Saya sering menemukan diri saya terpental pada o atau O dan ctrl {untuk memasukkan baris kosong dan keluar dari mode insert.

Berpikir harus ada cara yang lebih sederhana, dan berharap untuk mempertahankan posisi kursor saya, saya meretas makro-macet yang ceroboh ini:

map <Leader>O :let cursorpos = getpos(".")<CR>:i<CR><CR>.<CR>:let cursorpos[1] = cursorpos[1] + 1<CR>:call setpos('.', cursorpos)<CR>
map <Leader>o :let cursorpos = getpos(".")<CR>:a<CR><CR>.<CR>:call setpos('.', cursorpos)<CR>

Namun, ini tidak memungkinkan rentang. Akan menyenangkan untuk bisa pergi 5 \ O dan mendapatkan 5 kosong di atas garis saya saat ini.

Ada saran tentang bagaimana saya dapat memperbaiki ini untuk memungkinkan rentang dan masih kembali ke posisi kursor asli ketika selesai?


11
2017-07-03 04:50


asal


Jawaban:


Kamu dapat memakai :call append(linenumber, repeat([''], 5)). Itu tidak akan menggerakkan kursor.


12
2017-07-03 09:30



Itu tak terhalang Plugin menambahkan pemetaan yang melakukan apa yang Anda inginkan. Kamu bisa masukkan baris kosong di atas kursor dengan [<space>, atau di bawah kursor dengan ]<space>. Kedua pemetaan ini dapat ditambahkan dengan hitungan.


9
2017-07-05 12:23



Saya menambahkan ini ke .vimrc saya

"create new line below current line without leaving normal mode or moving cursor
noremap - m`o<Esc>``
"create new line above current line without leaving normal mode or moving cursor
noremap _ m`O<Esc>``

Saya lebih memilih solusi ini karena beberapa alasan:

  • Saya biasanya tidak menggunakan - atau _ kunci dalam mode normal dan mereka berada pada kunci fisik yang sama pada keyboard saya.
  • Sepertinya menginstal plugin untuk ini adalah berlebihan. Saya menghindari mengunduh plugin untuk hal-hal sederhana karena mereka memperkenalkan kode baru ke lingkungan saya yang belum sepenuhnya saya pahami atau percayai dan mungkin mengganggu penyesuaian atau plugin lain.
  • Saya mencoba solusi dari penulis pertanyaan ini yang terletak di komentarnya di bawah jawaban yang diterima, tetapi setelah menggunakan ini, . perintah melakukan hal-hal aneh dan mengganggu.
  • Saya biasanya lebih suka menekan . beberapa kali melewati argumen numerik, sehingga alih-alih duduk di sana menghitung hal-hal di jari saya, saya terus menekan . sampai terlihat benar (kurang visualisasi konseptual dan visi yang lebih nyata). Sayangnya bahkan solusi ini tidak berfungsi seperti yang saya inginkan dengan . perintah. Namun, dengan memetakan - dan _, ini dapat ditekan berulang kali untuk efek yang sama. Hanya memalukan itu tidak lebih dekat ke baris rumah ...

PERINGATAN:


1
2017-11-02 05:52