Как я могу исказить расширение истории в zsh?

Я сам столкнулся с этой проблемой, и мне потребовалось довольно много времени, чтобы найти ответ! Итак, вот оно, и у меня это работает.

Чтобы использовать несколько версий unison, установите unison-all . Затем ...

Использование нескольких версий Unison на клиенте

Выберите конкретную версию для запуска, добавив номер версии, например:

unison-2.40 ...

Или, если вы хотите запустить последнюю версию, вы можете просто ввести:

unison

Использование нескольких версий Unison на сервере

Указать клиентской версии Unison вызвать соответствующую версию Unison на сервере с помощью тега -addversionno , примерно так:

unison -addversionno

Для получения дополнительных сведений

и если вы все еще получаете

Fatal error: Received unexpected header from the server

, см. это решение .

3
03.09.2018, 17:13
1 ответ

Нельзя, расширение истории происходит до расширения псевдонима или параметра.

Лично я ненавижу расширение истории и отключаю его в первую очередь.

Здесь, вместо расширения истории, я бы предложил создать виджет, который увеличивает E<n>число слева от курсора:

increment-episode() {
  emulate -L zsh
  setopt extendedglob
  LBUFFER=${LBUFFER/(#b)(*E)(<->)/$match[1]${(l:${#match[2]}::0:)$((match[2]+1))}}
}

zle -N increment-episode

bindkey '\e+' increment-episode

Затем вы просто нажимаете Вверх , а затем Alt + + , и у вас есть визуальная обратная связь о том, что происходит на каждом этапе, и вы можете отменить/ переделывать/адаптировать по желанию, а не работать вслепую, как с расширением истории csh (функция 70-х годов, которая, по мнению ИМО, имела смысл тогда, но не так много сейчас, когда у нас есть более быстрые и более мощные терминалы и линейные -редакторы ).

Но если вы действительно хотите вслепую оценить код в предыдущей команде в истории с увеличением числа после E, вы можете сделать:

rerun-with-next-episode() {
  emulate -L zsh
  setopt extendedglob
  local new
  new=${${history:0:1}/(#b)E(<->)/E${(l:${#match[1]}::0:)$((match[1]+1))}}

  # display it
  print -ru2 -- $new

  # put it on the history
  print -rs -- $new

  # evaluate it
  eval -- $new
}
2
27.01.2020, 21:25

Теги

Похожие вопросы