Я использую zsh с oh-my-zsh каждый день, но есть кое-что, что беспокоит меня. Если я использую git log или любую другую подобную команду, то вывод занимает полное окно терминала. После нажатия q вывод очищается, и я возвращаюсь к моей подсказке.

Я хотел бы, чтобы вывод оставался на экране. Что я могу настроить, чтобы добиться этого?

Картинка стоит тысячи слов, так что вот рисунок текущего поведения:

А вот и мой .zshrc:

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

2 ответа2

3

По умолчанию и в зависимости от вашего файла ~/.gitconfig git будет использовать пейджер по умолчанию для вывода git log git diff и т.д.

Чтобы отключить это поведение, вы можете использовать параметр --no-pager :

git --no-pager log

2

Посмотрите, что вы настроили в core.pager. Вы, вероятно, установили его на less без установленного флага -X . Если этот флаг установлен, будет less очищать экран при выходе.

Если это так, перейдите в ~/.gitconfig и отредактируйте pager разделе [core] . У меня установлен -FRSX .

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

И для вашего удобства, это от less человека страницы с описанием того, что каждый из этих флагов означают:

   -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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .