Mengapa mengekspor vim sebagai EDITOR di zsh menonaktifkan pintasan keyboard?


23

.zshrcPenampilan saya seperti ini:

export EDITOR="/usr/bin/vim"

Sekarang ketika saya membuka terminal dan memasukkan pintasan keyboard seperti ctrlapergi ke awal baris, itu tidak berfungsi. Sebagai gantinya, string ^A(atau string lain, tergantung pada pintasan yang saya masukkan) akan dimasukkan ke terminal:

emlai:~ % ^A

Menghapus kata exportdari saya .zshrcmembuat pintasan keyboard berfungsi dengan baik:

EDITOR="/usr/bin/vim"

Mengekspor EDITORsebagai sesuatu yang lain selain vimmembuat pintasan keyboard juga berfungsi, misalnya:

export EDITOR="/usr/bin/nano"

Mengapa ini terjadi?

Saya mengujinya bashjuga, dan pintasan keyboard berfungsi dengan baik dalam semua kasus di sana.

Jawaban:


27

zshseperti kebanyakan shell modern memiliki pilihan antara dua pemetaan keyboard yang berbeda untuk pengeditan baris perintah: visatu dan emacssatu. Dalam beberapa shell (seperti tcshatau readline-berbasis suka bash), yang emacsmerupakan default dan mungkin yang Anda harapkan.

Dengan zsh, Anda mendapatkan emacsmodus secara default kecuali $EDITORatau $VISUALmengandung vi(jika Anda seorang vi/ nvi/ vim/ elvispengguna (meskipun juga vimacsdan jika $EDITORini ...), mengasumsikan Anda lebih memilih mode)./home/victor/bin/emacszshvi

Untuk memaksa mode tertentu terlepas dari nilai $EDITOR, tambahkan:

bindkey -e # for emacs
bindkey -v # for vi

atau padanannya yang lebih portabel:

set -o emacs
set -o vi

untuk Anda ~/.zshrc. Lihat

info -f zsh -n Keymaps

untuk detail.


Menarik. Apakah ada alasan untuk menggunakan bindkeylebih set -o?
puncak

@zenith, mungkin tidak. bindkeyadalah cara tcsh dan cara asli. Saat ini mereka harus setara.
Stéphane Chazelas
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.