Đây chủ yếu chỉ là một ghi chú thú vị về bash
và readline
, nhưng nếu bạn đặt EDITOR
biế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 emacs
chế độ. Nếu bạn readline
được đặt thành vim
chế độ, 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-command
hoặ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.