Bagaimana saya bisa menggunakan pintasan Readline di baris perintah vim?

15

Ketika saya mengedit perintah Vim, saya ingin menggunakan cara pintas yang sama seperti di Bash dan setiap REPL lainnya: M-buntuk kembali kata, M-Backspaceuntuk menghapus kata sebelumnya, M-uuntuk mengubah kata menjadi huruf besar, C-kuntuk memotong sampai akhir baris, dll. Saya telah dapat mengkonfigurasi beberapa perintah, menggunakan :cmap, tetapi tidak semua.

Apakah ada plugin atau pengaturan yang menyediakan ini?

Saya tahu cedit, tapi saya merasa tidak praktis ketika yang saya butuhkan adalah memasukkan perintah cepat.

Mihai
sumber
Tunggu, apakah Anda mengatakan Anda menggunakan Bash dalam mode Emacs meskipun Anda menggunakan Vim sebagai editor Anda?
Kyle Strand
3
@KyleStrand Saya belum pernah melihat seseorang yang menggunakan Bash dalam mode vi. Sepertinya sebagian besar manfaat editor modal hilang ketika Anda hanya terbatas pada satu baris.
Mihai
1
Menarik. Saya hanya pernah menggunakan Bash dalam mode Vi, meskipun sepertinya mode Emacs mendukung beberapa hal yang tidak dimiliki mode Vi. Saya kebetulan tahu keybindings Vi sementara tetap hampir sama sekali tidak tahu tentang binding Emacs, dan saya tidak pernah menganggapnya sebagai masalah yang cukup mendesak untuk mempelajari default.
Kyle Strand

Jawaban:

11

Apakah ada plugin atau pengaturan yang menyediakan ini?

Ya, plugin rsi.vim :

fitur

  • Pemetaan garis baca disediakan dalam mode penyisipan dan mode baris perintah. Mode normal sengaja dihilangkan.
  • Bindings kunci Vim penting (seperti mode insert Cn dan Cp selesai) tidak diganti.
  • Binding meta kunci disediakan dengan cara yang bekerja di terminal tanpa bahaya memetakan kembali.
  • Cd, Ce, dan Cf dipetakan sedemikian rupa sehingga mereka melakukan perilaku Readline di tengah-tengah baris dan perilaku Vim di akhir. (Pikirkan tentang itu.)
mMontu
sumber
1

Apakah ada plugin atau pengaturan yang menyediakan ini?

Ada juga readline.vim .

Ini adalah plug-in yang lebih baru yang hanya berfokus pada command-line. Itu juga mengimplementasikan bagian yang lebih besar dari pintasan Readline dan memiliki tujuan menerapkan setiap pintasan persis seperti di Readline.

Apa yang membuat plugin ini berbeda dari plugin serupa adalah ia mengimplementasikan subset yang lebih besar dari pemetaan Readline, dan itu melakukan pekerjaan yang lebih baik dengan meniru perilaku Readline untuk setiap perintah.

Perintah gerakan kata dan penghapusan memiliki perilaku yang berbeda antara Vim dan Readline. Perbedaan terbesar adalah bahwa dalam tanda baca Readline selalu dilewati ketika mencari batas kata. Perbedaan lainnya adalah bahwa _ (garis bawah) diperlakukan sebagai pembatas kata. Plugin ini mengimplementasikan perilaku Readline untuk gerakan kata dan perintah penghapusan.

wefwefa3
sumber
1
Saya terkejut ada orang yang mencari hal semacam ini. Sangat mudah untuk menggunakan mode vim readline sehingga saya pikir setiap pengguna vim biasa akan melakukannya. (Saya tidak menemukan perintah tambahan dalam mode emacs semua yang menarik.) Tapi mungkin "bagaimana" tidak banyak diketahui (... dan mungkin saya beruntung bahwa bashrc pertama yang saya lihat / salin ... bertahun-tahun yang lalu daripada yang ingin saya akui ... punya set -o vim:)
B Layer