Невозможно закрыть много буферов одной командой в Vim - PullRequest
70 голосов
/ 03 мая 2009

Я использую Vim в Screen. Я запускаю команду

vim <bigFolder>

Я застрял, так как нет смысла закрывать каждый буфер на

:q

Как закрыть все активные буферы в Vim, одной командой внутри Vim?

Ответы [ 9 ]

83 голосов
/ 03 января 2010

Команда :bufdo позволяет вам выполнить команду для всех буферов. В этом случае вы хотите запустить :bufdo bdelete, чтобы закрыть все открытые буферы за один раз.

78 голосов
/ 03 мая 2009

:qall или :qa закроет все окна

65 голосов
/ 27 июня 2010

:% шд (далить)

Я думаю, это то, что вы просите

16 голосов
/ 06 мая 2009
:on

закроет все буферы, кроме того, который вы редактируете в данный момент (курсор находится внутри этого буфера).

:on!

также закроет модифицированные буферы, но они станут скрытыми буферами.

:ls

выведет список всех буферов с их статусом (скрытый, ...)

Некоторая помощь:

:h only
:h hidden-buffer
:h ls
12 голосов
/ 10 сентября 2010

:on НЕ закрывает буферы.

Закрывает только другие окна.

6 голосов
/ 09 апреля 2013

Это не совсем то, что вы просили, но следующее может дать желаемый результат. Это:

  • делает текущую вкладку единственной открытой вкладкой (:tabo)
  • делает окно во вкладке единственным открытым окном (:only)
  • отображает первый буфер в открытом окне (1 b)
  • удаляет буферы с номерами от 2 до 2000 (2,2000bd)

    :tabo | :only | 1 b | 2,2000 bd

Если у вас открыто более 2000 буферов, настройте их соответствующим образом.

Если вы просто хотите удалить все буферы, 1,2000bd должен выполнить эту работу, но учтите, что для всех открытых вкладок и окон будут созданы новые пустые буферы.

5 голосов
/ 03 мая 2009

Это не спасает буферы, хотя. Возможно: wqall! : XALL! немного лучше.

1 голос
/ 29 июня 2009

Если вы случайно застряли в VIM, вы все равно сможете убить его из-за пределов VIM.

  • Если вы можете приостановить VIM с помощью CTRL + Z, вы можете убить его с помощью kill %vim
  • Если вы не можете приостановить VIM, вы сможете найти его pid, используя ps. Вы можете убить его:
$ ps -f -C vim
UID        PID  PPID  C STIME TTY          TIME CMD
nfellman 27273  7473  0 Jun24 pts/15   00:00:00 /nfs/iil/home/nfellman/vim/bin/vim a.pl
nfellman 37213  23747 0 Jun23 pts/15   00:00:00 /nfs/iil/home/nfellman/vim/bin/vim b.pl

Так что, если я хочу убить VIM, который редактирует a.pl, вы можете сделать:

kill -9 27273

Это должно работать даже внутри экрана

0 голосов
/ 29 июня 2009

:q!

всегда работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...