Wie kann man zsh mit oh-my-zsh konfigurieren, um den git-Verlauf nach dem Drücken von "q" sichtbar zu machen?

587
Dominik Roszkowski

Ich benutze zsh täglich mit oh-my-zsh, aber es gibt eine Kleinigkeit, die mich stört. Wenn ich git logoder einen anderen ähnlichen Befehl verwende, belegt die Ausgabe das vollständige Terminalfenster. Nach dem Drücken wird qdie Ausgabe gelöscht und ich komme wieder zu meiner Eingabeaufforderung.

Ich möchte, dass die Ausgabe auf dem Bildschirm bleibt. Was könnte ich konfigurieren, um dies zu erreichen?

Ein Bild sagt mehr als tausend Worte, also hier ein Gif des aktuellen Verhaltens:

enter image description here

Und hier ist meine .zshrc:

plugins=( gitfast docker osx web-search cp ) ZSH_THEME="powerlevel9k/powerlevel9k" 
0

2 Antworten auf die Frage

3
rhabbachi

Standardmäßig und abhängig von Ihrer ~/.gitconfigDatei verwendet git standardmäßig einen Pager für die Ausgabe von git logund git diffusw.

Um dieses Verhalten zu deaktivieren, können Sie die --no-pagerOption verwenden:

git --no-pager log

Vielen Dank, das ist wirklich nützlich, aber es zeigt die gesamte Historie auf einmal anstatt der von @ junior-citizen bereitgestellten Lösung Dominik Roszkowski vor 6 Jahren 2
2
Junior Citizen

Sehen Sie sich an, was Sie unter core.pager konfiguriert haben. Sie haben es wahrscheinlich auf gesetzt, lessohne dass das -XFlag gesetzt ist. Wenn dieses Flag gesetzt ist, wird lessder Bildschirm beim Beenden nicht gelöscht.

Wenn dies der Fall ist, gehen Sie zu ~/.gitconfigund bearbeiten Sie pagerden [core]Abschnitt. Ich habe meine eingestellt -FRSX.

$ git config --get core.pager less -FRSX 

Und zu Ihrer Bequemlichkeit finden Sie auf der lessManpage, was jedes dieser Flaggen bedeutet:

 -F or --quit-if-one-screen Causes less to automatically exit if the entire file can be displayed on the first screen.  -R or --RAW-CONTROL-CHARS Like -r, but only ANSI "color" escape sequences are output in "raw" form. Unlike -r, the screen appearance is maintained correctly in most cases. ANSI "color" escape sequences are sequences of the form:  ESC [ ... m  where the "..." is zero or more color specification characters For the purpose of keeping track of screen appearance, ANSI color escape sequences are assumed to not move the cursor. You can make less think that characters other than "m" can end ANSI color escape sequences by setting the environment variable LESSANSIENDCHARS to the list of characters which can end a color escape sequence. And you can make less think that characters other than the standard ones may appear between the ESC and the m by setting the environment variable LESSANSIMIDCHARS to the list of characters which can appear.  -S or --chop-long-lines Causes lines longer than the screen width to be chopped (truncated) rather than wrapped. That is, the portion of a long line that does not fit in the screen width is not shown. The default is to wrap long lines; that is, display the remainder on the next line.  -X or --no-init Disables sending the termcap initialization and deinitialization strings to the terminal. This is sometimes desirable if the deinitialization string does something unnecessary, like clearing the screen.