21

У меня есть несколько текстовых файлов в каталоге, и я знаю, что мне нужно редактировать каждый из них по отдельности.

Я начинаю с линии похвалы с

vim *.txt

который открывает файлы как отдельные буферы в vim и оставляет меня глядя на первый. Я редактирую его, затем использую «:w» для его сохранения и «:bd» для закрытия буфера и перехода к следующему.

Это ':w:bd' для сохранения и закрытия буфера мне кажется долгим, и я подозреваю, что есть более vim-ниндзя способ сделать это - какой рекомендуемый способ сохранить и закрыть буфер, над которым вы работаете, одним махом?

2 ответа2

21

При передаче файлов в Vim из командной строки они не только открываются в буферах, но и заполняют список аргументов. Поэтому вы можете использовать такие команды, как :next и :first для навигации по ним (и :argdo для пакетной обработки, что может быть изящным приемом). Команда, которую я рекомендую для вашего вопроса :wnext (краткая форма :wn), которая :write текущий буфер и затем переходит к :next .

Вам не нужно явно :bdelete буфер, особенно если вы запускаете Vim из командной строки с набором файлов, а затем завершаете его, когда закончите. (Единственное исключение, о котором я могу подумать, это выгрузка огромного файла для экономии системной памяти или повторное использование одного экземпляра GVIM для многих различных правок.)

Однако, если вы действительно этого хотите, просто определите пользовательскую команду, например

:command Wd write|bdelete
4

Хотя я согласен с тем, что вам не нужно удалять открытые буферы, которые вы в данный момент не используете, мне нравится их удалять, потому что у меня включена строка вкладок vim-Airlines , которая показывает все открытые буферы все время в верхней части окна. окно. У меня есть следующее в моем .vimrc:

nnoremap qq :w\|bd<cr>

qq сохраняет и закрывает текущий буфер, но также портит функциональность "макрос записи" в vim (с которой у меня все в порядке).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .