Ответ 1
Вот путь: vim +6 file1 +"sp +3 file2"
.
Измените sp
на tabnew
, если вы предпочитаете вкладки.
Но это было бы действительно полезно, только если кто-то мог бы сделать с ним script...
Мне было интересно, есть ли способ открыть многократные файлы с Vim, но каждый файл по определенному номеру строки. Я объясняю:
Я часто использую синтаксис: vim my/way/too/far/file +120 чтобы отредактировать этот файл в строке 120, потому что gcc также сказал мне:)
Теперь то, что я ищу, - это способ сделать это для файлов мультиплекса в одно и то же время!
Конечно, vim file1 + xx file2 + xx... не будет работать (опция + влияет только на первый файл... не спрашивайте меня почему)
Итак, если кто-нибудь знает, как это исправить? Я не нашел его в manpage...
Кстати, иногда файл1 может быть тем же файлом, что и файл2...
Вот путь: vim +6 file1 +"sp +3 file2"
.
Измените sp
на tabnew
, если вы предпочитаете вкладки.
Но это было бы действительно полезно, только если кто-то мог бы сделать с ним script...
Я только что написал 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
работает так, как ожидалось.
vim может прочитать ваш вывод gcc и создать список быстрых ошибок, который позволяет легко перемещаться, хотя все ошибки в вашем коде. Вы можете прочитать существующий файл ошибок, используя vim -q, или если ваш проект использует Makefile, тогда вы можете использовать команду: make для выполнения make изнутри vim и захвата его вывода.
Другой вариант - использовать script как utl, автоматически создавая файл, полный гиперссылок на номера файлов/строк на основе выход gcc (это должно быть тривиально с sed).
Ссылка будет отформатирована так: utl: <url:error.c#line=10>
EDIT: связанный с более подходящим связыванием vim script.
Чтобы перейти к строке 3 в файле file1.txt и строке 4 на file2.txt, я делаю это:
vim -c ":e file1.txt|:3|:e file2.txt|:4"
Существует vim-плагин с именем file-line, который позволяет вам легко это сделать, хотя в нем есть несколько проблем с открытием нескольких файлов для определенных строк в настоящее время. Мне нравятся некоторые из обходных решений выше, но файловая строка работает, если вы хотите получить список буферов :ls
с файлами с их номерами строк, а затем вы можете использовать что-то вроде bufdo
, чтобы открыть их все в расколы.