Làm cách nào để chỉnh sửa dòng lệnh trong trình chỉnh sửa toàn màn hình trong ZSH?


52

Trong bash, sử dụng chế độ vi, nếu tôi nhấn Esc, vdòng lệnh hiện tại của tôi được mở trong trình $EDITORchỉnh sửa được chỉ định bởi và tôi có thể chỉnh sửa nó ở chế độ toàn màn hình trước khi 'lưu' lệnh được trả về trình bao và được thực thi.

Làm thế nào tôi có thể đạt được hành vi tương tự trong zsh? Đánh vtrong chế độ lệnh dẫn đến tiếng chuông không có tác dụng rõ ràng, mặc dù EDITORbiến môi trường được đặt.

Câu trả lời:


36

Xem edit-command-linetrong zshcontrib.

bindkey -M vicmd v edit-command-line

13
(Chỉ cần làm rõ): Để kích hoạt edit-command-linewidget Widget, bạn sẽ cần một cái gì đó giống như autoload edit-command-line; zle -N edit-command-linetrong một trong các tệp zsh init của bạn (xem phần Chức năng ZLE của zshcontribtài liệu ).
Chris Johnsen

Làm thế nào để bạn kích hoạt điều này một khi nó vào vị trí? Các ràng buộc trong câu trả lời kiểu emacs có ý nghĩa với tôi. Nhưng tôi không thể tìm thấy tài liệu tham khảo về những gì bindkey -M vicmd vthiết lập.
Mat Schaffer

@MatSchaffer Giống như Bash: nếu bạn đang ở chế độ vi, sau đó nhấn <ESC>để vào chế độ lệnh từ chế độ chèn và sau đó vchuyển sang chế độ trực quan ( Meta-vgiống như vậy) hoặc chỉ vkhi bạn đã ở chế độ lệnh. Nếu bạn đang sử dụng chế độ Emacs, ràng buộc thông thường là C-x C-e.
ephemient

1
Ánh xạ lại phím v có nghĩa là bạn không thể sử dụng chế độ trực quan nữa, vì vậy tôi thích ánh xạ lại vào phím cách (không làm gì hữu ích trong chế độ bình thường) vớibindkey -M vicmd ' ' edit-command-line
gib

37

Trong trường hợp bạn thích keybindings của Emacs:

autoload -z edit-command-line
zle -N edit-command-line
bindkey "^X^E" edit-command-line

9
Các ^x^eràng buộc dường như là một mặc định với .oh-my-zsh hiện tại , cực kỳ tốt đẹp.
quodlibetor

^ x ^ e chính xác là những gì tôi đang tìm kiếm.
jmreicha

1
Thiết lập tương tự cho Prezto miễn là editormô-đun được tải.
AL the X

23

Bạn có thể sử dụng fcđể chỉnh sửa lệnh cuối cùng trong lịch sử. Nó không giống như chỉnh sửa cùng một lệnh, nhưng nhấn nhanh vào phím Enter làm cho lệnh hiện tại của bạn trở thành lệnh cuối cùng trong lịch sử.


14

Đây là cấu hình hoàn chỉnh mà tôi đã thêm vào ~/.zshrcđể nhận hành vi tương tự từ bash:

export VISUAL=vim
autoload edit-command-line; zle -N edit-command-line
bindkey -M vicmd v edit-command-line

Theo các nhận xét trước đó, điều này được cấu hình theo mặc định nếu bạn đang sử dụng Oh my ZSH hoặc Prezto . Cái sau đòi hỏi editormô-đun được tải và vihoặc vimđược chọn cho chế độ lệnh.
AL the X

Tôi bỏ phiếu để làm cho câu trả lời được chấp nhận này, nó đã giải quyết câu hỏi của tôi với tất cả các cấu hình được mô tả. Cảm ơn.
Laurent
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.