Tại sao xuất vim dưới dạng EDITOR trong zsh lại tắt phím tắt?


23

Tôi .zshrctrông như thế này:

export EDITOR="/usr/bin/vim"

Bây giờ khi tôi mở một thiết bị đầu cuối và nhập một phím tắt như ctrlađi đến đầu dòng, nó không hoạt động. Thay vào đó, chuỗi ^A(hoặc một số chuỗi khác, tùy thuộc vào lối tắt tôi đã nhập) được nhập vào thiết bị đầu cuối:

emlai:~ % ^A

Xóa từ exportkhỏi tôi .zshrclàm cho các phím tắt hoạt động đúng:

EDITOR="/usr/bin/vim"

Xuất khẩu EDITORnhư một cái gì đó khác hơn là vimlàm cho các phím tắt cũng hoạt động, ví dụ:

export EDITOR="/usr/bin/nano"

Lý do tại sao điều này xảy ra?

Tôi cũng đã thử nghiệm điều này bashvà các phím tắt hoạt động đúng trong mọi trường hợp ở đó.

Câu trả lời:


27

zshgiống như hầu hết các shell hiện đại có một sự lựa chọn giữa hai ánh xạ bàn phím khác nhau để chỉnh sửa dòng lệnh: một vivà một emacs. Trong một số vỏ (nhưtcsh hoặc readlinedựa trên cơ sở như bash), emacscái này là mặc định và có thể là cái bạn mong đợi.

Với zsh, bạn có emacschế độ theo mặc định trừ khi $EDITORhoặc $VISUALcó chứa vi(nếu bạn là vi/ nvi/ vim/ elvisngười dùng (mặc dù cũng vimacsvà nếu$EDITOR là ...), giả sử bạn thích mode)./home/victor/bin/emacszshvi

Để buộc một chế độ cụ thể bất kể giá trị của $EDITOR, hãy thêm:

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

hoặc tương đương di động hơn của họ:

set -o emacs
set -o vi

để của bạn ~/.zshrc. Xem

info -f zsh -n Keymaps

để biết chi tiết.


Hấp dẫn. Có bất kỳ lý do để sử dụng bindkeyhơn set -o?
đỉnh

@zenith, có lẽ là không. bindkeylà cách tcsh và cách ban đầu. Ngày nay họ nên tương đương.
Stéphane Chazelas
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.