закрытие ожидающих vim окон для открытия - PullRequest
3 голосов
/ 06 октября 2011

Я знаю, что могу закрыть все открытые буферы в vim: qall.

Я хочу закрыть событие для ожидающих открывающих буферов.
У меня проблема при просмотре моих изменений в песочнице P4.Когда у меня есть изменения в нескольких файлах, и я пытаюсь просмотреть свой код с помощью «P4 diff» и установить для моего P4DIFF значение vimdiff.
Он открывает один за другим vimdiff всех измененных файлов.Теперь, если у меня есть 10 открытых файлов и после просмотра 2 файлов, я хочу закрыть diff для остальных 8 файлов.Как я могу это сделать?

Спасибо,

Ответы [ 4 ]

0 голосов
/ 08 марта 2015

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

Добавьте "qall" без qoutes поверх вашего .vimrc.

:e ~/.vimrc
:source ~/.vimrc
:q

Все файлы автоматически закрываются после открытия.

Затем откройте vimrc в emacs или sed и удалите qall.

0 голосов
/ 06 октября 2011

Я предполагаю, что вы открываете vim с несколькими аргументами (известными как ... список аргументов).

Вам, вероятно, следует сбросить его:выборочно управлять списком (:argdelete).Дополнительная информация: :he arglist

0 голосов
/ 03 мая 2012

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не использовал перформанс, поэтому мне пришлось сделать предположение: когда несколько файлов имеют незафиксированные изменения, он будет вести себя как множество VCS и будет запускать настроенную команду diff (в данном случае vimdiff ) для каждого измененного файла по очереди (я думаю, это то, что вы имели в виду, когда "открывает один за другим vimdiff всех измененных файлов").

Если это так, то vim не будет иметь никаких ссылок на оставшиеся файлы при просмотре изменений для какого-либо конкретного файла, поэтому никакие хитрости в рамках одного сеанса vim вам не помогут.

Если вы вообще хотите изменить свой рабочий процесс, возможно, вы сможете что-то сделать с помощью сценария vim, который я нашел: http://www.vim.org/scripts/script.php?script_id=240

Он претендует на то, чтобы быть смоделированным после графического интерфейса P4, так что, надеюсь, мог бы вписаться в ваше использование. Из обзора сценария кажется, что он сможет показать вам сводку файлов, которые были изменены, и позволить вам просмотреть изменения.

Если ничего из этого вам не подходит, вы всегда можете попробовать старый любимый Ctrl-C сразу после закрытия сеанса vimdiff для файла.

0 голосов
/ 06 октября 2011

Звучит как работа для на скорую руку выучил Vimscript! В частности, операторы :bufdo, if и match!

Попробуйте следующее:

:bufdo if match(expand("%"), ".vim") >= 0 | bw | endif
  • bw для buffer wipe в режиме Ex (оператор :)
  • expand("%") возвращает имя текущего буфера
  • match(string, pattern) находит индекс pattern в string
  • | отдельные строки, если вы находитесь в Ex-режиме

Это соответствует буферам, которые содержат .vim в именах файлов, и закрывает эти буферы.

Я предполагаю, что если это временные буферы, которые передаются в vimdiff, у них не будет имен файлов для начала. Возможно, вы можете использовать bufnr(".") для вывода номера текущего буфера. Затем вы можете закрыть все буферы до или после определенного числа.

Вы, вероятно, можете сделать еще больше манипуляций с буфером с некоторыми плагинами. Я рассматривал возможность использования одного из следующих трех плагинов, которые помогут управлять плагинами:

  • LustyExplorer
  • FuzzyFinder
  • minibufexpl Я не могу говорить о каких-либо достоинствах, но я слышал, что они упоминались несколько раз в Интернете и в IRC.
...