Ok, akhirnya saya membuat perubahan besar. Di .zshenv saya, saya mengubah EDITOR saya:
export EDITOR=vim
Ada beberapa pertanyaan yang saya miliki yang sangat kecil sehingga saya tidak ingin memulai pertanyaan terpisah untuk mereka. Di sini mereka:
Bagaimana cara mendapatkan zsh untuk membedakan antara mode insert dan mode perintah seperti di vim? Lebih disukai ini akan mengubah kursor dari garis bawah ke blok seperti di vim, tetapi menampilkan teks di bagian bawah akan bekerja juga.
Bagaimana saya membuatnya bertindak lebih seperti vim? Sebagai contoh, saya lebih suka dalam mode perintah secara default dan tidak keluar setelah satu perintah.
~
karakter yang dimasukkan ketika saya menekanDelete
tombolzsh
. Saya mengajukan pertanyaan tentang hal ini di sini: superuser.com/questions/997593/...Jawaban:
1. ) (lihat http://zshwiki.org/home/examples/zlewidgets dan http://pthree.org/2009/03/28/add-vim-editing-mode-to-your-zsh-prompt/ ) :
Dimana:
"RPS" adalah singkatan dari 'string prompt kanan' dan mendefinisikan prompt yang muncul di sisi kanan terminal, dan sintaks $ {variabel / pola / penggantian} adalah dari 'ekspansi parameter', lihat: http: // mywiki .wooledge.org / BashSheet # Parameter_Operations .
'zle -N' menyebabkan widget yang dapat ditentukan pengguna 'zle-line-init' dan 'zle-keymap-select' untuk diikat (untuk shell fungsi dari nama yang sama), sehingga mereka akan dipanggil ketika editor baris diinisialisasi dan keymap diubah masing-masing, lihat: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#SEC125 .
2. ) saya menduga Anda harus menulis zsh-widget lain untuk melakukan itu, dapatkan inspirasi dari tautan pertama dari dua untuk masalah pertama.
sumber
solusi akira memiliki masalah berikut ketika menggunakan prompt multi-line: ketika beralih dari mode ins ke cmd, redraw prompt menyebabkan beberapa baris dihapus dari output sebelumnya (dan prompt baru ditampilkan beberapa baris di atas). Berapa banyak baris tergantung pada berapa banyak baris yang Anda miliki di prompt Anda.
Cara untuk menghadapinya adalah menggunakan
zle-line-finish
, tanpa menggunakannyazle reset-prompt
. Sebuah contoh:Dan kemudian Anda dapat menambahkannya ke prompt kanan Anda, misalnya:
Ini langsung dari posting blog saya tentang hal itu:
sumber
zle-line-init
widget tetapi tidak berhasil. Mengubahnya agar sesuai dengan apa yang disediakan Pawel dan bingo!RPROMPT2
harus diatur juga sehingga status ditampilkan dalam garis lanjutan. Juga, saat menggunakan ini, Anda mungkin ingin melakukannyasetopt transient_rprompt
agar mode untuk saluran yang diterima sebelumnya tidak ditampilkan.bindkey -e
) masih muncul[INS]
.dua baris ini memastikan itu dimulai dalam mode perintah
sumber
Di bawah ini akan mengatur Anda dengan kursor yang dimodifikasi dan prompt menampilkan mode yang Anda masuki. Anda dapat mengubah
DEFAULT_VI_MODE
salah satuviins
atauvicmd
. Cukup rekatkan di bawah ini ke dalam segar.zshrc
untuk memulai:Catatan: Saya hanya menguji ini di Terminal.app (2.7.3) pada MacOS (10.12.6) dengan zsh (5.3.1). Juga, jika Anda pernah menambahkan
edit-command-line
maka mode akan diatur dengan benar juga.sumber