vim - otwórz plik i numer linii goto używając <nazwa_pliku>: <linia nbr>:


21

Kilka narzędzi, takich jak grep, py.testitd ... użyć wzoru <FileName>:<line number>:do punktu na błędy. Na przykład:

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

Jak mogę zmodyfikować vim i gvim, aby móc je wywoływać w następujący sposób:

gvim setup.cfg:11:

zamiast

gvim setup.cfg +11

Wiem, że potrafię napisać mały skrypt powłoki, który analizowałby różne rzeczy, ale zastanawiam się, czy jest łatwiejszy sposób.


2
Nie jest to dokładnie analogiczne, ale vim ma funkcję ładowania danych wyjściowych z błędów grep lub (na przykład) błędów kompilatora z make i nawigowania między nimi. Zobacz :help quickfixwięcej informacji.
Random832

Odpowiedzi:


16

Możesz użyć wtyczki file: line dostępnej tutaj , która robi dokładnie to, co chcesz ...


1
Z pewnością tak jest i dzięki dodatkowej premii, że można użyć programu Vundle, aby go zainstalować.
Sardathrion

1
Wtyczka pliku linii odnośników ma pewne problemy, w tym uszkodzenie, gdy używane są strony z kartami. vim-fetch robi to, co robi linia pliku, ale lepiej.
Lekensteyn,

9

Nie ma sposobu i myślę, że skrypt jest jedynym sposobem. Powodem jest to, że jeśli masz plik o nazwie setup.cfg: 11 i chcesz go edytować?

Oto krótki skrypt, który robi to, co chcesz jako oneliner ...

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

Przykro nam, to nie jest dokładne: co, jeśli plik miał nazwę +11? Możesz oczywiście użyć --do tego.
Sardathrion - Przywróć Monikę

2
Możesz edytować plik +11, mówiąc vim ./+11
Julian


0

Możesz także użyć takiego aliasu:

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"'
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.