Cập nhật mới nhất về kinh nghiệm của tôi
Phần 0"+y$dd
trong ánh xạ sau đây thực sự là một cái gì đó mà bạn nên suy nghĩ cẩn thận và điều chỉnh nó theo sở thích / quy trình làm việc / kinh nghiệm của bạn.
Chẳng hạn, rất thường xuyên tôi thấy mình kết thúc với nhiều dòng trong bộ đệm, nơi tôi chỉ muốn thực thi một con trỏ đang bật; trong trường hợp này tôi có thể sử dụng 0"+y$dd:%d<CR>
thay vì 0"+y$dd
.
Và đây chỉ là một trong những tình huống có thể xảy ra.
Câu trả lời cuối cùng cho những ai thích vim
- Đặt
vim
làm EDITOR
/ VISUAL
, để khi chỉnh sửa một dòng lệnh, bạn sẽ sử dụng vim
để chỉnh sửa nó.
- Đặt tệp
au BufEnter /tmp/bash-fc.* nn <Leader>d 0"+y$dd:wq<CR>
của bạn ~/.vimrc
vào ánh xạ Leaderd(mà bạn sẽ hiếm khi sử dụng khi chỉnh sửa lệnh) cho hành động "xóa dòng hiện tại vào thanh +
ghi mà không có EOL theo dõi".
- Khi chỉnh sửa xong một lệnh trong
vim
trình chỉnh sửa , nhấn EscapeLeaderd.
- Dán bảng tạm vào thiết bị đầu cuối (điều này phụ thuộc vào thiết bị đầu cuối).
Câu trả lời gốc
Tôi thường cần phải làm như vậy, và tôi làm như sau. (Tôi thường sử dụng set -o vi
trong bash
, vì vậy điểm 1 và 2 trong những điều sau đây là khác nhau nếu bạn sử dụng set -o emacs
, mặc định; dựa trên câu hỏi của bạn có vẻ như điểm 1 và 2 được thống nhất trong Ctrl+ xtiếp theo Ctrl+ e, đó là khó khăn hơn để gõ, IMHO .)
- nhấn Escapeđể ở chế độ bình thường,
- nhấn vđể vào trình chỉnh sửa để chỉnh sửa lệnh,
- chỉnh sửa lệnh theo ý muốn,
(Đây là nơi bạn đặt câu hỏi.)
- đánh Escape0"+y$dd:wq,
- Lưu ý : 0"+y$, không chỉ đơn giản "+yy, vì sau này cũng sẽ sao chép dòng mới và điều này sẽ dẫn đến việc thực thi lệnh khi dán nó trong dòng lệnh,
- dán bảng tạm vào dòng lệnh
- Làm thế nào để làm điều này phụ thuộc vào thiết bị đầu cuối bạn đang sử dụng, tôi đoán; Tôi nhấn Ctrl+ Alt+ vvào
URxvt
.
- tiến hành phê duyệt / chỉnh sửa thủ công.
Rõ ràng đây chỉ là một cách giải quyết, bao gồm sao chép lệnh đã chỉnh sửa vào bảng tạm trước khi xóa toàn bộ lệnh, để không có gì được thực thi khi thoát khỏi trình soạn thảo; tuy nhiên đó là điều tốt nhất tôi có thể có được cho bản thân mình.
Cập nhật
Vì EDITOR
(và VISUAL
) của tôi bằng vim
, khi tôi chỉnh sửa lệnh, tôi chỉnh sửa nó trong vim
.
Về mặt này, tôi đã nhận thấy rằng bộ đệm được đặt tên /tmp/bash-fc.random
, trong đó random
là một chuỗi ngẫu nhiên gồm 6 ký tự chữ và số.
Điều này mang lại không gian cho rất nhiều khả năng, nếu bạn sử dụng vim
làm trình soạn thảo của mình, vì bạn có thể xác định một số ánh xạ trong bạn .vimrc
để thực hiện toàn bộ chuỗi Escape0"+y$dd:wq. Chẳng hạn, một lệnh mà bạn hiếm khi sử dụng khi chỉnh sửa một dòng lệnh là Leaderd; do đó bạn có thể đặt map
ping sau vào .vimrc
tệp của mình
au BufEnter /tmp/bash-fc.* nn <Leader>d 0"+y$dd:wq<CR>
để bước 4 trong công thức trên trở thành
- đánh EscapeLeaderd
edit-and-execute-command
.