Как предотвратить подстановку процесса vim (т.Е. git ls эхо вместо перенаправления в vim)

#bash #git #shell #terminal

#баш #мерзавец #оболочка #терминал

Вопрос:

git branch отбрасывает вывод, по-видимому, в vim, а не просто сбрасывает список ветвей прямо в терминал.

Я знаю, что мог бы сделать что-то вроде git config alias.ls '!git branch | cat' , но это плохо сочетается с аргументами.

Есть ли способ просто отключить перенаправление git на vim?

Fwiw, я использую Oh My ZSH / ZSH; однако я пробовал аналогичные команды в vanilla bash как в iTerm2, так и в Terminal с теми же результатами.

Комментарии:

1. Что стоит git ls на первом месте?

2. Ах, извините, имел в виду git branch

3. Если вывод перенаправляется на что- либо , это будет ваш пейджер. Если vim действует как ваш пейджер, это будет либо что-то в вашей конфигурации git, либо ваши переменные среды, которые это настраивают.

4. … таким git --no-pager branch образом, f / e будет иметь тот же эффект без | cat

5. ..итак, в качестве отправной точки: что declare -p PAGER излучает? Если он говорит, что такой переменной нет, я мог бы перейти к git config -l | grep pager (из-за недостатка терпения искать точное использование, чтобы запрашивать только то, что нас волнует).

Ответ №1:

Обычно используемый вами пейджер less , если не указано иное. Однако, независимо от используемого вами пейджера, вы можете отключить его.

Если вы хотите, чтобы пейджер был отключен для одной команды, выполните git --no-pager branch (например), но обратите внимание, что --no-pager он предшествует команде. Это отлично подходит для псевдонимов. Если вы хотите, чтобы пейджер был отключен для всех команд, установите core.pager значение cat , и Git не будет вызывать пейджер. Нет способа отключить его только для одной команды, а не для других.

Обратите внимание, что пейджер по умолчанию не вызывается для команд, выходные данные которых не являются TTY, поэтому, если вы пишете сценарий, он автоматически отключается.

Комментарии:

1. Спасибо! Благословляю ваш быстрый ответ 🙂