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.