У меня есть длинный список файлов, открытых в vim, который выглядит так:
/dir1/file1
/dir2/file2
/dir2/file3
.....
Как я могу открыть все из них один за другим самым простым способом в одном сеансе vim с помощью split или edit?
У меня есть длинный список файлов, открытых в vim, который выглядит так:
/dir1/file1
/dir2/file2
/dir2/file3
.....
Как я могу открыть все из них один за другим самым простым способом в одном сеансе vim с помощью split или edit?
Я бы сказал, что -p для вкладок
vim -p `cat yourlistoffiles`
Вы можете использовать режим fastfix, как показано ниже
:set errorformat=%f
:cf myfilelist
в этот момент вы можете использовать обычные быстрые клавиши быстрого доступа, чтобы просмотреть ваши файлы, :cn
для следующего файла, :cp
для предыдущего и :cr
, чтобы перейти к первому снова.
EDIT:
oh, если вы хотите прочитать список из текущего буфера, используйте :cb
вместо :cf
в инструкциях выше
Я собираюсь предположить, что у вас есть список файлов, открытых внутри Vim, и хотите имитировать команду "gf" по всему списку...
Отредактируйте свой .vimrc, чтобы включить эту функцию:
function Openall()
edit <cfile>
bfirst
endfunction
Затем вы можете выделить весь файл (или набор путей, которые вы хотите открыть), используя визуальный режим (1G, Shift-V, G) и набрав ": call Openall()". После этого строка команды покажет это:
:'<,'>call Openall()
Это приведет к запуску новой функции Openall() по всем выделенным строкам.
Нажмите "Enter", и все файлы будут открыты в фоновых буферах. Затем вы можете получить к ним доступ, используя обычные команды буфера.: ls отобразит их как список.
Вы можете сделать следующее
cat file | xargs vim
Где "файл" содержит ваш список файлов, это откроет файлы в том же сеансе vim. Как обычно при открытии нескольких буферов вы можете перемещаться вперед с помощью: bn и backward: bp.
Я предполагаю, что вы хотите выбрать и перечислить в vim. все файлы определенного расширения. Из вашего домашнего каталога или конкретного источника.
find . -name "*.sh" | vim -
Затем в vim вы можете искать и просматривать этот потенциально огромный список. (Еще одна тема)
Вы нашли свой файл, теперь вы хотите открыть его в расколе?
CTRL-W F *CTRL-W_F*
Split current window in two. Edit file name under cursor and
jump to the line number following the file name. See |gF| for
details on how the line number is obtained.
{not available when the |+file_in_path| feature was disabled
at compile time}
CTRL-W gf *CTRL-W_gf*
Open a new tab page and edit the file name under the cursor.
Like "tab split" and "gf", but the new tab page isn't created
if the file does not exist.
{not available when the |+file_in_path| feature was disabled
at compile time}
Возможно, это могло бы помочь:
Это так же просто, как набирать
vim /dir1/file1 /dir2/file1 /dir2/file2 ...
Как только вы в vim, вы можете переключить betwen, затем на ": n", чтобы перейти к следующему файлу "prev", чтобы перейти к предыдущему файлу.
My searchInRuntime плагин имеет команды: Sp и a: Vsp, которые будут делать трюк при вызове banged. Однако файлы должны существовать.
Попробуйте это с помощью bash:
$ vim -S <(sed "s/^/badd /" <your file name>)
Но я не знаю, почему первая строка файла игнорируется...: -O
Этот script работает как ожидалось:
rm -f myfile
for i in `seq 10000`
do
touch $i
echo $i >> myfile
done
vi -c "badd `head -1 myfile`" -S <(sed "s/^/badd /" myfile)
http://vimdoc.sourceforge.net/htmldoc/starting.html#-S
http://vimdoc.sourceforge.net/htmldoc/windows.html#:bad
Мне часто нужно открывать меняющийся список файлов, которые были изменены в моей SVN-кассе. Этот один лайнер работает, чтобы открыть все измененные файлы в вкладках vim.
svn st | grep ^M | awk "{print($2)}" | xargs vim -p