Как я могу расширить автозавершение клавиши Tab в терминале для отправки текстовых сообщений посреди команды?

Файл в качестве примера: Selection_192.png

  1. $ ls 192
  2. Теперь я нажимаю Tab дважды
  3. Это должно автоматически заполнить к $ ls Selection_192.png

Примечание:

Это должно не только работать с ls но любой вид команды и быть предпочтительно решением, которое работает с оболочкой по умолчанию в Единице Ubuntu 16.04.

1
задан 16 September 2016 в 16:02

1 ответ

Так как Вы не упоминали определенную оболочку, один путь состоит в том, чтобы установить zsh.

sudo apt-get install zsh
# now change the default shell
chsh -s /usr/bin/zsh
sudo chsh -s /usr/bin/zsh

Теперь, поскольку Вы получили zsh, поскольку оболочка по умолчанию вместо удара, для получения нечеткого завершения добавляют это к ~/.zshrc файл:

zstyle ':completion:*' matcher-list '' \
  'm:{a-z\-}={A-Z\_}' \
  'r:[^[:alpha:]]||[[:alpha:]]=** r:|=* m:{a-z\-}={A-Z\_}' \
  'r:|?=** m:{a-z\-}={A-Z\_}'

, Например, это - то, как мой ~/.zshrc похож:

 # bash style (read as the adequate) for navigating words
 autoload -U select-word-style
 select-word-style bash

 # some plugins
 source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
 source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
 ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=7'
 zstyle ':completion:*' matcher-list '' \
         'm:{a-z\-}={A-Z\_}' \
         'r:[^[:alpha:]]||[[:alpha:]]=** r:|=* m:{a-z\-}={A-Z\_}' \
         'r:|?=** m:{a-z\-}={A-Z\_}'
 bindkey \^U backward-kill-line

 #useful aliases
 alias grep1="grep --exclude-dir=\".*\""
 alias gdb="gdb -q"

NB: полноценность zsh - то, что это очень расширяемо, и во многих отношениях совместимо с ударом. На противоположном, например, рыбе (другая альтернатива удару, который в значительной степени похож на настроенный zsh) , по моему опыту, причины много проблем несовместимости.

UPD: на комментарии OP: если Вы хотите повысить требование для букв, чтобы быть близко к каждому другим (т.е. вместо нечеткого завершения это - просто завершение подпоследовательности) , то вместо этого из regexp я упомянул , можно поместить в ~/.zshrc этот код :

zstyle ':completion:*' completer _complete
zstyle ':completion:*' matcher-list '' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' '+l:|=* r:|=*'
autoload -Uz compinit
compinit
3
ответ дан 7 December 2019 в 12:38

Другие вопросы по тегам:

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