Vim: открыть несколько файлов на разных строках - PullRequest
18 голосов
/ 27 января 2010

Мне было интересно, есть ли способ открыть несколько файлов с помощью Vim, но каждый файл с определенным номером строки. Я объясняю:

Я часто использую синтаксис: vim my / way / too / far / file +120 чтобы отредактировать этот файл в строке 120, потому что gcc сказал мне тоже:)

Теперь я ищу способ сделать это для нескольких файлов одновременно!

Конечно, vim file1 + xx file2 + xx ... не будет работать (опция + влияет только на первый файл ... не спрашивайте меня, почему)

Так, если кто-нибудь знает способ исправить это? Я не нашел его на странице руководства ...

Кстати, иногда file1 может совпадать с файлом file2 ...

Ответы [ 6 ]

11 голосов
/ 27 января 2010

Вот способ: vim +6 file1 +"sp +3 file2". Измените sp на tabnew, если вы предпочитаете вкладки.

Но это было бы действительно полезно, только если бы кто-то мог сделать сценарий с ним ...

5 голосов
/ 31 июля 2013

Я только что написал https://gist.github.com/xim/6123691

Спасибо Пикрассу за идею =)

EDIT:

Как говорит Клаферри, использование + tabnew ... ограничивает вас 10 файлами. Обновлено суть использования -S.

Функция vim создает строку ($ script), содержащую сценарий vim, который открывает файлы в соответствующих строках на вкладках. Объясняя с помощью примера, это делается путем изменения vim -R file1:42 file2 file3:1337 на vim -S <script> -R file1 file2 file3 - содержащего скрипт vim, в данном случае:

tab all
tablast
1337
tabprev
tabprev
42

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

Этот хак проверен только умеренно, комментируйте любые ошибки.

RE-EDIT:

Исправлен скрипт, так что даже такой сумасшедший пример, как vim -R 1:3 "a file" foo -- -- "some other file":34 -R, работает как положено.

3 голосов
/ 28 января 2010

vim может прочитать ваш вывод gcc и создать список быстрых исправлений, который позволяет вам легко перемещаться по всем ошибкам в вашем коде.Вы можете прочитать существующий файл ошибок, используя vim -q, или, если ваш проект использует Makefile, вы можете использовать команду: make, чтобы выполнить make изнутри vim и захватить ее вывод.

1 голос
/ 23 января 2015

Чтобы перейти к строке 3 в file1.txt и строке 4 в file2.txt, я делаю это:

vim -c ":e file1.txt|:3|:e file2.txt|:4"
1 голос
/ 28 января 2010

Другой вариант - использовать скрипт типа utl , автоматически создающий файл, полный гиперссылок на номера файлов / строк, на основе выходных данных gcc (это должно быть тривиально с sed).

Ссылка будет отформатирована следующим образом: utl: <url:error.c#line=10>

РЕДАКТИРОВАТЬ: связано с более подходящим сценарием связи vim.

0 голосов
/ 24 августа 2016

Существует плагин vim, называемый file-line, который позволяет вам легко это сделать, хотя в настоящее время у него есть пара проблем с открытием нескольких файлов для определенных строк. Мне нравятся некоторые из обходных путей, описанных выше, но строка файла работает, если вы хотите получить список буферов :ls, полный файлов с соответствующими номерами строк, и затем вы можете использовать что-то вроде bufdo, чтобы открыть их все в расщепляется.

https://github.com/bogado/file-line

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