как открыть файл в списке файлов в vim? - PullRequest
26 голосов
/ 13 января 2009

У меня есть длинный список файлов, открытых в vim, который выглядит так:

/dir1/file1
/dir2/file2
/dir2/file3
.....

Как я могу открыть их все один за другим самым простым способом в одном сеансе vim с помощью split или edit?

Ответы [ 10 ]

55 голосов
/ 13 января 2009

Я бы сказал, с -p для вкладок

vim -p `cat yourlistoffiles`
15 голосов
/ 13 января 2009

Вы можете использовать режим быстрого исправления, как показано ниже

:set errorformat=%f
:cf myfilelist

на данный момент вы можете использовать обычные сочетания клавиш для быстрого доступа к вашим файлам, :cn для следующего файла, :cp для предыдущего и :cr для перехода к первому.

EDIT:

о, если вы хотите прочитать список из текущего буфера, используйте :cb вместо :cf в инструкциях выше

8 голосов
/ 13 января 2009

Я предполагаю, что у вас открыт список файлов в Vim, и вы хотите смоделировать команду "gf" по всему списку ...

Отредактируйте ваш .vimrc, чтобы включить эту функцию:

function Openall()
    edit <cfile>
    bfirst
endfunction

Затем можно выделить весь файл (или набор путей, которые вы хотите открыть), используя визуальный режим (1G, Shift-V, G) и набрав «: call Openall ()». После этого в командной строке будет показано:

:'<,'>call Openall()

Это запустит новую функцию Openall () для всех выделенных строк.

Нажмите Enter, и все файлы будут открыты в фоновых буферах. Вы можете получить к ним доступ, используя обычные команды буфера. : ls отобразит их в виде списка.

4 голосов
/ 13 января 2009

Вы можете сделать следующее

cat file | xargs vim

Если «file» содержит ваш список файлов, это откроет файлы в том же сеансе vim. Как обычно при открытии нескольких буферов, вы можете перемещаться вперед с помощью: bn и назад: bp.

2 голосов
/ 25 июля 2017

Полагаю, вы хотите выбрать и перечислить в 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}
1 голос
/ 25 августа 2014

Мне часто нужно открывать изменяющийся список файлов, которые были изменены в моей проверке SVN. Этот вкладыш позволяет открывать все измененные файлы на вкладках vim.

svn st | grep ^M | awk "{print($2)}" | xargs vim -p
1 голос
/ 13 января 2009

Попробуйте это с помощью bash:

$ vim -S <(sed "s/^/badd /" <your file name>)

Но я не знаю, почему первая строка файла игнорируется ...: -O

Этот скрипт работает как положено:

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

1 голос
/ 13 января 2009

Это так же просто, как набрать

vim /dir1/file1 /dir2/file1 /dir2/file2 ...

После того, как вы перейдете в vim, вы можете переключиться между ними, затем ": n", чтобы перейти к следующему файлу, ": prev", чтобы перейти к предыдущему файлу.

0 голосов
/ 13 января 2009
Плагин

My searchInRuntime имеет команды: Sp и a: Vsp, которые помогут вам при вызове. Однако файлы должны существовать.

0 голосов
/ 13 января 2009

Может быть, это может помочь:

http://vimdoc.sourceforge.net/htmldoc/windows.html

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