Выбор результирующих файлов из grep в vim - PullRequest
11 голосов
/ 05 августа 2009

После запуска поиска grep в vim с помощью: grep я получаю список файлов. Есть ли способ выбрать один из этих файлов и открыть его на новой вкладке в этой конкретной строке?

Ответы [ 4 ]

12 голосов
/ 06 августа 2009

Просто для полноты, а также для команды :copen есть также :cw, который открывает окно «быстрого исправления» только при наличии записей (поэтому, если у вашего grep нет результатов, он не появится).

Я думаю, что самый простой способ (без определения сопоставления) сделать файлы открытыми в новой вкладке - сделать:

:cw                " Open the quickfix window
Ctrl-W T           " Switch the window into a new tab
<ENTER>            " Open the file/line

В качестве альтернативы вы можете сделать:

:cw                " Open the quick fix window
Ctrl-W <ENTER>     " Open the file/line in a new window
Ctrl-W T           " Move the new window to a new tab

Если вы хотите сделать это по умолчанию, вы можете использовать BufEnter и BufLeave autocmds для создания и удаления сопоставления при входе и выходе из окна быстрого исправления; однако, это, вероятно, не тривиально.

:help :cw
:help :copen
:help quickfix
11 голосов
/ 05 августа 2009

Для достижения желаемого вам нужно открыть окно быстрого исправления / ошибки после вызова grep:

:copen

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

1 голос
/ 17 августа 2011

Я наткнулся на эту ветку в поисках ответа на очень похожий вопрос. Приведенный выше ответ, хотя и правильный, не смог описать удобный способ сразу открыть ВСЕ файлы в окне QuickFix ... в буферах или на вкладках.

Кажется, что нет встроенной команды, чтобы сделать это, но это просто, как плагин VIM ... кто-то сделал это здесь http://pastebin.com/J9RwciFQ

Это 12 строк кода (одна функция) ... вставлено здесь, чтобы сэкономить ваш клик во время анализа. Перейдите по ссылке pastebin, если вы собираетесь попытаться реализовать это, хотя ... мой плагин установлен в директории pathogen, и я немного изменил плагин по сравнению с оригиналом (подробности после кода).

~/.v/b/v/p/quickfixopenall.vim
" Create command
command! QuickFixOpenAll :call StartQuickFixOpenAll()

function!  StartQuickFixOpenAll()
    if empty(getqflist())
        return
    endif
    let s:prev_val = ""
    for d in getqflist()
        let s:curr_val = bufname(d.bufnr)
        if (s:curr_val != s:prev_val)
            exec "edit " . s:curr_val
        endif
        let s:prev_val = s:curr_val
    endfor
endfunction

Так что, как только я получу результат grep, я удовлетворен ... у плагина есть функция: QuickFixOpenAll ... Мне пришлось изменить плагин, как указано (добавлена ​​следующая строка в quickfixplugin.vim). И я переименовал его в данную функцию StartQuickFixOpenAll ...

 " Create command
 command! QuickFixOpenAll :call StartQuickFixOpenAll()

Тогда у вас все файлы в результате поиска grep открыты как буферы ... если вы хотите выполнить какие-либо операции с запятыми, такие как поиск / замена, вы можете добавить префикс обычной команды к команде "bufdo", которая выполнит вашу команду в все ... в VIM типа "help bufdo"

Вы можете довольно просто изменить этот плагин, если хотите использовать вкладки ... он использует коммандное "редактирование" ... просто замените его на "tabe" и: QuickFixOpenAll откроет каждый буфер результатов в новой вкладке.

1 голос
/ 05 августа 2009

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

:cn
:colder

Для получения дополнительной информации

:help grep

и прокрутите до конца записи

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