: vimgrep и окно быстрого исправления в MacVim - PullRequest
2 голосов
/ 02 января 2011

Я перехожу из Textmate в MacVim и пытаюсь воспроизвести функцию Textmate «Найти в проекте».Я могу просто найти с помощью :vimgrep /foo/g **/*.py и открыть окно быстрого исправления с помощью :cope.Оттуда я могу без проблем перейти к соответствующему совпадению и открыть его.

Моя проблема в том, что если открытое совпадение не соответствует действительности, я не могу найти способ вернуть окно результатов поиска.без запуска всего поиска снова.Я могу снова открыть окно quickfox с помощью :cope, но оно содержит только 1 результат, файл, который я только что открыл.

Каков общий рабочий процесс поиска нескольких файлов и управления результатами?

Ответы [ 7 ]

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

Я столкнулся с той же проблемой с quickfix, и, заметив ваш комментарий о filetype plugin indent on, заставляющем окно быстрого исправления немедленно очиститься, отследил это до плагина: jslint, который устанавливал окно быстрого исправления каждый раз, когда открывался файл JavaScript или написано Возможно, вы включили подобный плагин для какого-то открытого типа файла.

3 голосов
/ 03 января 2011

Вы можете перемещаться по списку быстрых исправлений с помощью :cnext и :cprevious.Я считаю, что сопоставления из без изменений очень полезны, поэтому ]q для :cnext и [q для :cprevious.Если вам нужны только сопоставления, а не весь неповрежденный плагин, добавьте в ваш файл .vimrc следующее:

nnoremap ]q :cnext<cr>
nnoremap [q :cprevious<cr>
3 голосов
/ 02 января 2011

Я обычно не использую vimgrep, я использую один из двух плагинов: Ack или grep . Может быть, вам повезет больше, если вы воспользуетесь одним из этих двух.

0 голосов
/ 27 апреля 2013

Команды :colder и :cnewer могут использоваться для перехода к предыдущим / более новым спискам быстрых исправлений (ошибок).

Из справки vim:

: холоднее

:col[der] [count]   Go to older error list.  When [count] is given, do
            this [count] times.  When already at the oldest error
            list, an error message is given.

: cnewer

:cnew[er] [count]   Go to newer error list.  When [count] is given, do
            this [count] times.  When already at the newest error
            list, an error message is given.
0 голосов
/ 21 июля 2012

Если я правильно помню, проблема заключалась в том, что скрипт / плагин Vim каким-то образом мешал нормальной работе окна быстрого исправления. Я осознал, что когда сталкиваешься с такими проблемами в Vim, хорошей практикой будет лишить Vim самого необходимого и посмотреть, сохраняется ли проблема.

0 голосов
/ 01 февраля 2012

То, что предлагает dreel, вероятно, является исправлением.У меня возникла та же проблема с исчезновением контента Quickfix, и выяснилось, что это вызвано линтером pyflakes.vim.Линтер пытался создать записи быстрого исправления для ошибок lint, но он просто имел эффект очистки содержимого быстрого исправления от поисков.Я установил опцию для плагина linter, который отключил поддержку быстрого исправления, и это устранило проблему.

0 голосов
/ 02 января 2011

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

Если это не так, игнорируйте мой пост, иначе используйте cscope.

  1. Создайте базу данных cscope, используя: cscope -Rb в корневом каталоге вашего проекта.Это создаст cscope.out файл

  2. , откройте vim и добавьте базу данных cscope, используя:

    : cs add

  3. findстрока как:

    : cs fs

  4. Перейти к нужному файлу из результата команды 3 и внести необходимые изменения.

  5. Снова используйте шаг 3 или нажмите ctrl + ^, чтобы вернуться к исходному файлу.

...