vim - öffne Datei und gehe zu Zeilennummer mit <Dateiname>: <Zeilennummer>:

21

Mehrere Werkzeuge wie grep, py.testusw ... das Muster verwenden , <FileName>:<line number>:um Punkt auf Fehler. Beispielsweise:

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

Wie kann ich vim und gvim so ändern, dass ich sie folgendermaßen aufrufen kann:

gvim setup.cfg:11:

anstatt

gvim setup.cfg +11

Ich weiß, dass ich ein kleines Shell-Skript schreiben kann, das die Dinge analysieren würde, aber ich frage mich, ob es einen einfacheren Weg gibt.

Sardathrion - Setzen Sie Monica wieder ein
quelle
2
Dies ist nicht genau analog, aber vim hat eine Funktion, mit der die Ausgabe von grep oder (zum Beispiel) Compiler-Fehlern von make geladen und zwischen diesen navigiert werden kann. Siehe :help quickfixfür weitere Informationen.
Random832

Antworten:

16

Sie können das hier verfügbare file: line-Plugin verwenden , das genau das macht, was Sie wollen ...

mmigdol
quelle
1
Es ist sicher und mit dem zusätzlichen Bonus, dass Sie vundle verwenden können , um es zu installieren.
Sardathrion - Wiedereinsetzung von Monica am
1
Die Referenzen Datei-line - Plugin hat einige Probleme, einschließlich Zerbrochen wenn Registerkarten in Gebrauch ist. vim-fetch macht das, was file-line macht, aber besser.
Lekensteyn
9

Es gibt keinen Weg, und ich denke, ein Skript ist der einzige Weg. Der Grund ist, was wäre, wenn Sie eine Datei namens setup.cfg: 11 hätten und diese bearbeiten wollten?

Hier ist ein kurzes Skript, das genau das macht, was Sie als Oneliner wollen ...

editline() { vim ${1%%:*} +${1##*:}; }
julianisch
quelle
Entschuldigung, das ist nicht korrekt: Was ist, wenn Sie eine Datei namens hatten +11? Sie können natürlich dafür verwenden --.
Sardathrion
2
Sie können eine +11-Datei bearbeiten, indem Sie vim ./+11
Julian
3

Fügen Sie mit Vundle.vim Folgendes hinzu .vimrc:

Plugin 'bogado/file-line'
Dorian
quelle
@Sardathrion: Welche Probleme hast du?
Dorian
Ich bin zu neovim gewechselt und es gibt viele Probleme, die andere Module (oder wie auch immer neovim sie nennt) als inkompatibel markieren.
Sardathrion - Wiedereinsetzung von Monica
0

Sie können auch einen solchen Alias ​​verwenden:

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"'
user2683458
quelle