Làm cách nào để chỉnh sửa lệnh shell hiện tại trong VI


31

Tôi đã thấy trong các blog trên các máy Linux, bạn có thể chỉnh sửa lệnh bash shell hiện tại trong VI (hoặc bất cứ điều gì EDITOR được đặt thành) bằng cách nhấn ctrl-x, ctrl-e.

Điều này dường như không hoạt động trên 10.8. Bất kỳ ý tưởng về cách chỉnh sửa lệnh bash hiện tại trong trình chỉnh sửa mặc định?


Điều này sẽ làm việc trong 10.8 (ít nhất là đối với tôi). Bạn đã cố gắng bỏ đặt FCEDIT và EDITOR chưa?
nohillside

Tài liệu về C-xC-e có ở đây - VISUALbiến của bạn là gì?
glenn jackman

nó không phải là khoảng 10.8. Tôi vào ngày 10.8 và nó hoạt động tốt với tôi. Tôi đã không thay đổi bất cứ điều gì trong .bash_profile của tôi để kích hoạt tính năng này.
Vincent


1
Tôi mới nhận ra rằng tôi đang thực hiện Ctrl + (x, e) (giữ ctrl, nhấn x, nhấn e, giải phóng điều khiển) - đây là lý do tại sao nó không hoạt động với tôi. Khi tôi đổi sang nhấn hai nét rõ ràng Ctrl-x, hãy nhả Ctrl, Ctrl-e - sau đó mọi thứ bắt đầu hoạt động hoàn hảo!
Dimitry K

Câu trả lời:


32

Bạn muốn set -o vi(thêm nó vào của bạn ~/.bashrc). Sau đó, để chỉnh sửa dòng hiện tại, chỉ cần nhấn Escđể vào chế độ lệnh.

Xem http://www.gnu.org/software/bash/manual/bashref.html#Readline-vi-Mode

Để chỉnh sửa lệnh hiện tại trong trình chỉnh sửa toàn màn hình, hãy đặt VISUALbiến môi trường của bạn thành vim(Tôi giả sử bạn muốn vim), sau đó ở chế độ lệnh trong nhận xét hiện tại, nhấn v.


5
nhấn "v" là nước sốt bí mật tôi đã bỏ lỡ. cảm ơn.
Scott Walter

2
Có thể nhận vlệnh này khi ở chế độ emacs (không vi) không?
Alex Kahn

10
Chỉ cần làm Ctrl-X rồi Ctrl-E.
albapa

7

Bạn edit-and-execute-commandcó thể không bị ràng buộc cho vichế độ. Thử:

bind -m vi-insert '"\C-x\C-e": edit-and-execute-command'

Để làm cho nó vĩnh viễn, thêm dòng đó vào ~/.inputrctập tin của bạn .

(thông qua câu trả lời này ; ghi có vào @unfitableid cho liên kết)

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.