Đây chủ yếu chỉ là một ghi chú thú vị về bashvà readline, nhưng nếu bạn đặt EDITORbiến môi trường của mình thành vim, nhấn Ctrl+ x+ esẽ mở ra dòng hiện tại vim. Hơn nữa, nếu bạn gõ Meta(Alt/Opt/Esc)+ Ctrl+ e, bash sẽ thực hiện mở rộng tại chỗ trên dòng lệnh hiện tại, nghĩa là:
$ echo $EDITOR # Assuming EDITOR was set
với Meta(Alt/Opt/Esc)+ Ctrl+ esẽ trở thành
$ echo vim # Assuming EDITOR was set
với Ctrl+ x+ esẽ trở thành
1 echo vim # Assuming EDITOR was set
~
~
/tmp/sometmpbufferfile
Lưu ý rằng khi thoát vim, nội dung của bộ đệm vim được thực thi trên dòng lệnh.
Các tính năng này trở nên rất hữu ích đối với tôi khi tôi muốn thực hiện các lệnh nhiều dòng trong bash, chẳng hạn như các vòng lặp hoặc chương trình yêu cầu các câu lệnh ở đây và cung cấp một cách thú vị để lưu một chút lịch sử dòng lệnh để sử dụng sau này.
Vì vậy, để trả lời câu hỏi ban đầu, bạn cũng có thể viết,
$ This is an example
và sau đó nhấn Ctrl+ x+ eđể tải nó lên vim. Ngoài ra bạn có thể có,
$ $(cat /etc/hosts)
và do Meta(Alt/Opt/Esc)+ Ctrl+ ethen Ctrl+ x+ e, sẽ đặt tất cả các tệp máy chủ trên một dòng và tải nó lên vim(có thể không sử dụng tốt nhất các tính năng này - tuy nhiên, tính hữu ích của các phương thức này có thể được ngoại suy từ một vài ví dụ được thảo luận đây).
Lưu ý rằng tôi giả sử rằng bạn readlineđược đặt thành emacschế độ. Nếu bạn readlineđược đặt thành vimchế độ, bạn có thể dễ dàng khám phá các ràng buộc có liên quan bằng cách sử dụng lệnh:
bind -p
và tìm kiếm edit-and-execute-commandhoặc shell-expand-line, tương ứng được liên kết với các ràng buộc Ctrl+ x+ evà Meta(Alt/Opt/Esc)+ Ctrl+ e.
:help stdin... Thật đáng ngạc nhiên khi người ta có thể tìm thấy câu trả lời nhanh bằng cách đặt câu hỏi của họ về tài liệu được xây dựng.