Ich habe eine Funktion in bash geschrieben, um sie manpages
in vim zu sehen
viman () { man "$@" | vim -R +":set ft=man" - ; }
Dies funktioniert gut, das einzige Problem tritt auf, wenn ich ein manpage
an es übergebe, das nicht existiert. Es wird gedruckt, dass das manpage
nicht vorhanden ist, aber dennoch vim
mit einem leeren Puffer geöffnet wird .
Also habe ich die Funktion geändert, um den Fehlercode (der 16
hier ist) zu überprüfen und zu beenden, wenn der manpage
nicht existiert. Die modefied Funktion sieht ungefähr so aus -
viman () { man "$@" | [[ $? == 16 ]] && exit 1 | vim -R +":set ft=man" - ; }
Aber jetzt macht es nichts !!
Ich möchte das Programm nur beenden, wenn das manpage
nicht existiert, sonst öffne das manpage
mitvim
viman
Funktion fertig -viman () { text=$(man "$@") && echo "$text" | vim -R +":set ft=man nomod nonu noma nolist colorcolumn=" - ; }
Ich mag die Idee, den
man
Rückkehrcode zu überprüfen . Sie können jedoch nicht zum Test pfeifen. Sie könnten nurman
zweimal laufen :Dies wird
man ... | vim ...
nur ausgeführt, wenn der erste Aufruf vonman
erfolgreich war.quelle
Es gibt eine Umgebungsvariable namens
MANPAGER
,man
mit der Sie den Befehl aufrufen können, den Sie zum Anzeigen der Manpage benötigen. Dies hat den Vorteil, dass Sieman
direkt anrufen und der Pager überhaupt nicht ausgeführt wird, wenn die Manpage nicht vorhanden ist.Also ein Wrapper-Skript, sagen wir in
~/bin/vimman
:Mit diesem in Ihren Shell-Initialisierungsdateien irgendwo:
Und Sie können direkt
man foo
zu Manpages in Vim laufen .(Abhängig vom verwendeten
man
Befehl können Sie auch Folgendes haben:direkt anstelle eines Wrapper-Skripts.)
Wenn Sie ein ausreichend neues Vim haben, können Sie die
--not-a-term
Option verwenden, um Vim davon abzuhalten, sich darüber zu beschweren, dass stdin kein TTY ist.Schamloser Plug: Ich habe ein kleines Plugin geschrieben , um die Verwendung von Vim als Manpager zu erleichtern.
quelle
yelp man:foo
( askubuntu.com/a/390095/158442 )Basierend auf dieser Antwort startet vim und wird beendet, wenn sich nichts im Puffer befindet. Der Nachteil ist, dass es startet,
vim
so dass der Bildschirm "blinkt". Es wird auch kein Exit-Code festgelegt, wenn eineman
Seite nicht gefunden wird.Dies ist eine Verbesserung gegenüber Jeff Schallers Antwort, da die
man
Seite nicht zweimal geladen wird, wenn sie vorhanden ist. Es wird auch nichtvim
unnötig geladen wie in meinem vorherigen Beispiel. Und es wird ein Exit-Code festgelegt, wenn keineman
Seite vorhanden ist.Beide Beispiele verwenden die Bash-Prozessersetzung, um die Meldung "Vim: Lesen von stdin ..." zu vermeiden.
Weder lädt die Seite in eine Variable.
quelle
man -w
kann seinman -w
.