Vim - lưu và đóng bộ đệm trong một lệnh


24

Tôi có một loạt các tệp văn bản trong một thư mục và tôi biết tôi sẽ cần chỉnh sửa từng tệp một.

Tôi bắt đầu ở dòng khen với

vim *.txt

Nó mở các tập tin dưới dạng bộ đệm riêng biệt trong vim và để tôi nhìn vào cái đầu tiên. Tôi chỉnh sửa nó - sau đó tôi sử dụng ': w' để lưu nó và ': bd' để đóng bộ đệm và chuyển sang cái tiếp theo.

Đây là:


Cách giới thiệu của tôi sẽ chỉ là di chuyển đến :nextbộ đệm và viết / đóng mọi thứ sau khi nhiệm vụ của bạn kết thúc :wqa. Điều này cho rằng bạn có :set hiddentrong của bạn ~/.vimrc.
romainl

Câu trả lời:


22

Khi truyền các tệp cho Vim trên dòng lệnh, chúng không chỉ được mở trong bộ đệm, mà còn điền vào danh sách đối số . Do đó, bạn có thể sử dụng các lệnh như :next:firstđể điều hướng qua chúng (và :argdođể xử lý hàng loạt, đây có thể là một thủ thuật tiện lợi). Lệnh tôi khuyên dùng cho câu hỏi của bạn là :wnext(dạng ngắn :wn), đây :writelà bộ đệm hiện tại và sau đó chuyển đến bộ đệm :next.

Bạn không cần phải rõ ràng :bdeletemột bộ đệm, đặc biệt là khi bạn khởi chạy Vim từ dòng lệnh với một tập hợp các tệp và sau đó thoát khỏi bộ đệm khi bạn hoàn tất. (Các ngoại lệ duy nhất tôi có thể nghĩ đến là dỡ một tệp khổng lồ để tiết kiệm bộ nhớ hệ thống hoặc sử dụng lại một phiên bản GVIM duy nhất cho nhiều chỉnh sửa khác nhau.)

Tuy nhiên, nếu bạn thực sự muốn điều này, chỉ cần xác định một lệnh tùy chỉnh, ví dụ:

:command Wd write|bdelete

5
Bạn đã đề cập đến hai phương pháp để đạt được những gì OP yêu cầu, nhưng cách thứ hai không rõ ràng : :w|bd.
Jonno

-> Điều này có lợi thế phù hợp với cách tiếp cận mà OP sử dụng, mặc dù tôi đồng ý :nextcó ý nghĩa hơn trong một số trường hợp.
Jonno

4

Mặc dù tôi đồng ý rằng bạn không phải xóa các bộ đệm mở mà bạn hiện không sử dụng, tôi muốn xóa chúng vì tôi đã bật dòng tab của vim-Hãng hàng không , hiển thị tất cả các bộ đệm mở mọi lúc ở đầu cửa sổ. Tôi có những điều sau đây .vimrc:

nnoremap qq :w\|bd<cr>

qq lưu và đóng bộ đệm hiện tại, nhưng cũng gây rối với chức năng "ghi macro" của vim (tôi không sao).


2
Tích hợp sẵn trong ZZtâm trí, nhưng cuối cùng lại tiết kiệm và thoát hoàn toàn Vim, thay vì chỉ xóa bộ đệm. Chữ thường zzcó thể là một ánh xạ thay thế thú vị, cho bất kỳ ai tìm thấy macro có giá trị hơn so với việc định tâm chế độ xem trên dòng con trỏ hiện tại.
8bittree

1
Gần đây tôi đã đổi nó thành Q, sau khi nhận ra bản ghi có giá trị trong Vim có thể như thế nào.
apostl3pol
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.