Câu trả lời:
Không. Vim (hoặc bất kỳ ứng dụng nào khác cho vấn đề đó) không có cách nào để liên lạc với bash rằng thay vào đó nên thực hiện một hành động khác.
M-x shell
Tùy chọn; trong vim có !
theo sau là lệnh để thực thi các lệnh shell, cũng như "system ()" và các hàm khác có thể được sử dụng trong vimrc.
Bạn có thể muốn xem xét sử dụng bộ đệm vim để chỉnh sửa nhiều tệp.
Chỉnh sửa cả hai tập tin: vim example.txt someother.txt
sau đó chuyển đổi giữa chúng bằng cách sử dụng :buffer <filename>
.
Xem thêm mẹo chuyển đổi bộ đệm dễ dàng hơn và Câu hỏi thường gặp về bộ đệm Vim .
:e <file>
.
vim $1
với nano $1
hoặc là passwordmanagerpro $1
v.v.
Một giải pháp ví dụ, hoạt động theo bash (yêu cầu dán, grep, sed). Nó là dành riêng cho Vim nhưng có thể được điều chỉnh cho một trình soạn thảo khác.
jim () {
paste <(jobs) <(jobs -p | xargs -n1 ps o cmd= -p) |
grep "$1$" > ~/tmp/jm && fg $(cat ~/tmp/jm | sed -r 's/^\[([0-9]+).*/\1/')
[[ $? == 1 ]] && vim $1
}
Thưởng thức!
Tôi không nghĩ có một cách chung để sử dụng lại công việc.
Đối với quy trình chỉnh sửa của bạn, bạn có thể muốn chuyển sang emacs. Thay vì nhấn ctrl-z để quay lại shell, bạn có thể chạy shell con trong bộ đệm emacs với M-x ansi-term
hoặc là M-x shell
và chuyển đổi qua lại giữa trình bao và bộ đệm chỉnh sửa của bạn hoặc thậm chí tách chế độ xem để hiển thị cả hai cùng một lúc. Emacs theo dõi thư mục làm việc của shell, vì vậy nếu bạn điều hướng xung quanh hệ thống tệp và quyết định bạn muốn mở tệp, thay vì nhập emacs somefile
, bạn chỉ có thể nói với emacs để mở nó với C-x C-f somefile<RET>
và nó sẽ mở tập tin trong một bộ đệm khác và chuyển sang nó.
Bạn cũng có thể khởi động máy chủ emacs và chạy emacsclient somefile
để nói với phiên emacs hiện có để mở một số tệp. Nếu nó đã mở, nó chỉ chuyển sang bộ đệm hiện có.
screen
hoặc chuyển đổi thiết bị đầu cuối ảo.