Я предполагаю, что вы имеете в виду, что когда вы нажимаете клавишу TAB
выполняете команду / имя файла, пробел добавляется автоматически, но после нажатия кнопки |
это снова исчезает.
В противном случае я не могу воспроизвести этот эффект.
Однако в этом случае решение должно быть таким простым, как
ZLE_REMOVE_SUFFIX_CHARS=""
Объяснение немного хитрое, поэтому я просто цитирую man zshparam
ZLE_REMOVE_SUFFIX_CHARS
/ ZLE_SPACE_SUFFIX_CHARS
Эти параметры используются редактором строк. В определенных обстоятельствах суффиксы (обычно пробел или косая черта), добавленные системой завершения, будут удалены автоматически либо потому, что следующая команда редактирования не была вставляемым символом, либо потому, что символ был помечен как требующий удаления суффикса.
Эти переменные могут содержать наборы символов, которые приведут к удалению суффикса. Если ZLE_REMOVE_SUFFIX_CHARS
установлен, эти символы приведут к удалению суффикса; если ZLE_SPACE_SUFFIX_CHARS
установлен, эти символы приведут к удалению суффикса и замене пробела.
Если ZLE_REMOVE_SUFFIX_CHARS
не установлен, поведение по умолчанию эквивалентно:
ZLE_REMOVE_SUFFIX_CHARS=$' \t\n;&|'
Если ZLE_REMOVE_SUFFIX_CHARS
установлен, но пуст, ни один символ не имеет такого поведения. ZLE_SPACE_SUFFIX_CHARS
имеет приоритет, так что следующее:
ZLE_SPACE_SUFFIX_CHARS=$'&|'
вызывает символы &
и |
удалить суффикс, но заменить его пробелом.
Чтобы проиллюстрировать разницу, предположим, что опция AUTO_REMOVE_SLASH
действует, и каталог DIR был только что завершен с добавлением /
, после чего пользователь вводит &
. Результат по умолчанию - DIR&
. С установленным ZLE_REMOVE_SUFFIX_CHARS
но без включения &
результат - DIR/&
. С ZLE_SPACE_SUFFIX_CHARS
установленным для включения &
результат - DIR &
.
Обратите внимание, что некоторые дополнения могут обеспечивать свое собственное удаление суффикса или поведение замены, которое переопределяет значения, описанные здесь.