vim - відкрийте номер файлу та перехідного рядка за допомогою <filename>: <line nbr>:


21

Кілька інструментів, таких як grep, py.testі т.д. ... використовують шаблон, <FileName>:<line number>:щоб вказати на помилки. Наприклад:

; grep -Hn Common setup.cfg
setup.cfg:11:    Common

Як я можу змінити vim та gvim, щоб я міг викликати їх так:

gvim setup.cfg:11:

замість

gvim setup.cfg +11

Я знаю, що можу написати невеликий сценарій оболонки, який би розбирав речі, але мені цікаво, чи є простіший спосіб.


2
Це не зовсім аналогічно, але vim має функцію завантаження виводу з grep або (наприклад) помилок компілятора з make і переміщення між ними. Див. Для :help quickfixотримання додаткової інформації.
Випадково832

Відповіді:


16

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


1
Він впевнено робить і з додатковим бонусом, що ви можете використовувати vundle для його встановлення.
Сардатріон

1
Плагін файлового рядка з посиланнями має деякі проблеми, зокрема посередництво, коли використовуються сторінки вкладок. vim-fetch робить те, що робить файл-рядок, але краще.
Лекенштейн

9

Немає способу, і я думаю, що сценарій - єдиний спосіб. Причина в тому, що якщо у вас був файл під назвою setup.cfg: 11 і хочете його відредагувати?

Ось швидкий сценарій, який робить те, що ви хочете, як oneliner ...

editline() { vim ${1%%:*} +${1##*:}; }

Вибачте, це не точно: Що робити, якщо у вас був названий файл +11? Можна, звичайно, використовувати --для цього.
Сардатріон

2
Ви можете відредагувати файл +11 кажучи Vim ./+11
Джуліан

3

За допомогою Vundle.vim додайте це до свого .vimrc:

Plugin 'bogado/file-line'

@Sardathrion: Які проблеми у вас є?
Доріан

Я перейшов до neovim, і є багато питань, які позначають інші модулі (або, як там називається, neovim) як несумісні.
Сардатріон

0

Ви також можете використовувати такий псевдонім:

alias gd 'set number=`echo \!:1 | perl -pe "s/([0-9]*:)?(.+)[,:]([0-9]+).*/\3/"`; set file=`echo \!:1 | perl -pe "s/([0-9]*:)?(.+)[,:]([0-9]+).*/\2/"`; eval "if ($number == $file) then \\
   gvim $file \\
else \\
   gvim $file +$number \\
endif"'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.