Я могу придумать несколько способов сделать это:
Используйте vimgrep
Использовать vimgrep: после запуска gvim введите:
:vimgrep /background/ **/*.vim
Это заполнит список быстрых исправлений всеми совпадениями (возможно, более одного на файл), поэтому вы можете использовать такие вещи, как :copen
, :cw
, :cn
и т. Д. Для навигации (см. :help quickfix
)
Использовать встроенный ум vim
Используйте findstr
, чтобы получить список файлов, а затем получите vim, чтобы открыть эти файлы:
findstr /m background *.vim > list_of_files.txt
gvim list_of_files.txt
" In Gvim, read each file into the buffer list:
:g/^/exe 'badd' getline('.')
" Open the files in tabs:
:bufdo tabedit %
Это загрузит каждый файл, но также сохранит список файлов открытым (вы всегда можете загрузить его или что-то еще).
Редактировать :
Использование :tabedit
в списке файлов не работало (я только проверял :badd
). Вы можете обойти это, используя badd и затем bufdo (как указано выше) или сделав что-то вроде этого (поместите это в ваш vimrc):
command! -range=% OpenListedFiles <line1>,<line2>call OpenListedFiles()
function! OpenListedFiles() range
let FileList = getline(a:firstline, a:lastline)
for filename in FileList
if filereadable(filename)
exe 'tabedit' filename
endif
endfor
endfunction
Затем просто откройте файл, содержащий все необходимые имена файлов, и введите:
:OpenListedFiles
Используйте функциональность сервера Vim и некоторые ужасные пакетные сценарии
Используйте функциональность сервера и некоторую магию пакетного сценария (которую я не понимаю, когда использую bash)
@echo off
REM Welcome to the hideous world of Windows batch scripts
findstr /m background *.vim > list_of_files.txt
REM Run GVIM (may not be required)
gvim
REM Still in command prompt or .bat file here
REM for each line in the file "list_of_files.txt", pass the line to OpenInTab
for /f %%i in (list_of_files.txt) do call:OpenInTab %%i
goto:eof
:OpenInTab
REM Open the file in a separate tab of an existing vim instance
gvim --remote-tab %~1
goto:eof
Eeeurrgh.
Если бы это был я, я бы выбрал опцию «Использовать встроенный ум vim». На самом деле, это не так: я бы использовал скрипт bash cygwin и просто использовал bash, но если бы я ДОЛЖЕН делать это с помощью встроенных инструментов, я бы использовал встроенный подход к интеллекту.