Подтвердить что ты не робот

Vim: открывать многократные файлы на разных строках

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

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

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

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

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

Кстати, иногда файл1 может быть тем же файлом, что и файл2...

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

EDIT:

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

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

tab all
tablast
1337
tabprev
tabprev
42

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

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

RE-EDIT:

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

Ответ 3

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

Ответ 4

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

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

EDIT: связанный с более подходящим связыванием vim script.

Ответ 5

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

vim -c ":e file1.txt|:3|:e file2.txt|:4"

Ответ 6

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

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