Sử dụng lại các công việc hiện có khi mở tệp


0

Câu hỏi được đưa ra tốt nhất bằng các ví dụ:

vim example.txt #Opens Vim on new or existing file

Ctrl + Z

vim someother.txt

Ctrl + Z

vim example.txt #Auto-runs `fg 1` since example.txt is already open

Điều này có thể không?


Cân nhắc sử dụng screen hoặc chuyển đổi thiết bị đầu cuối ảo.
LawrenceC

Câu trả lời:


0

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.


thực tế một số ứng dụng (bao gồm cả vim) có thể giao tiếp với bash chúng được bắt đầu từ
Alex

@Alex: Làm sao vậy?
Ignacio Vazquez-Abrams

ví dụ. như đã đề cập trong câu trả lời khác emacs 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.
Alex

@Alex: Những người không "giao tiếp với bash", họ chạy một vỏ hoàn toàn mới .
Ignacio Vazquez-Abrams

0

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 Câu hỏi thường gặp về bộ đệm Vim .


Tôi biết phương pháp này nhưng nó quá cụ thể ứng dụng + yêu cầu một người biết tất cả các tệp họ sẽ làm việc trên
Alex

Không chắc chắn những gì bạn mena bởi "quá cụ thể ứng dụng". Ví dụ của bạn cũng sử dụng vim, nếu bạn không tìm cách chỉnh sửa nhiều tệp bằng vim thì có lẽ bạn cần chỉ định điều đó trong câu hỏi. Vì không biết trước tệp nào cần chỉnh sửa, bạn có thể thêm nhiều tệp vào danh sách bộ đệm với :e <file>.
Bram

vim được đưa ra làm ví dụ trong cả câu hỏi và câu trả lời. trong câu trả lời người ta chỉ có thể thay thế vim $1 với nano $1 hoặc là passwordmanagerpro $1 v.v.
Alex

0

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!


0

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 shellvà 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ó.

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.