После запуска grep-поиска в vim с помощью: grep, я получаю список файлов. Есть ли способ выбрать один из этих файлов и открыть его на новой вкладке в этой конкретной строке?
Выбор результирующих файлов из grep в vim
Ответ 1
Для достижения того, что вы хотите, вы должны открыть окно quickfix/error после вызова grep:
:copen
У меня есть script, который делает это для меня каждый раз, когда я использую grep.
Ответ 2
Только для полноты, а также команды :copen
также есть :cw
, который открывает окно "quickfix", если есть записи (поэтому, если ваш 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
Если вы хотите сделать это по умолчанию, возможно, вы можете использовать autocmds BufEnter
и BufLeave
для создания и удаления отображения при входе и выходе из окна quickfix; однако это, вероятно, не тривиально.
:help :cw
:help :copen
:help quickfix
Ответ 3
Если вы получаете список файлов, вы можете просматривать их по древовидному виду через
:cn
:colder
Для получения дополнительной информации
:help grep
и прокрутите до нижней части записи
Ответ 4
Я наткнулся на эту тему, ища ответ на очень похожий вопрос. Ответ, представленный выше, хотя и правильный, не смог описать удобный способ открытия ВСЕХ файлов в окне QuickFix сразу... в буферах или вкладках.
Кажется, что нет встроенной команды, но это тривиально, как плагин VIM... кто-то сделал это здесь http://pastebin.com/J9RwciFQ
Это 12 строк кода (одна функция)..., вставленных здесь, чтобы сохранить клик во время анализа. Следуйте ссылке pastebin, если вы попытаетесь реализовать это, хотя... мой плагин установлен в каталог патогенов, и я немного модифицировал плагин из оригинала (подробности после кода).
~/.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 open в виде буферов... если вы хотите запускать любые операции commeon, такие как find/replace, вы можете префикс регулярной команды с помощью команды bufdo, которая будет выполнять вашу команду в все... в VIM типа "help bufdo"
Вы можете довольно тривиально модифицировать этот плагин, если вы хотите использовать вкладки... он использует начальное "редактирование"... просто замените его на "tabe" и: QuickFixOpenAll откроет каждый буфер результатов на новой вкладке.