завершення вкладки zsh для запуску скриптів у поточній папці (. <TAB> scr <TAB>) -> ./ script.sh


2

У мене проблема з zsh (або о-мі-zsh):

Коли я хочу запустити скрипт у поточному каталозі, я це роблю ./script.sh. У bash я міг би це зробити, .<TAB>і це дасть мені те, ./де я можу продовжувати вводити ім'я сценарію, ./sc<TAB>яке в кінцевому підсумку закінчиться./script.sh

Тепер проблема полягає в тому, що коли я роблю .<TAB>в zsh, я отримую список альтернатив, де жодної з них немає ./.

Причина, яку я не просто набираю, ./полягає в тому, що вона досить громіздка в норвезькій розкладці клавіатури: .тоді SHIFT+7. Змушує мене відчувати себе неефективним :)

Я спробував zstyle ':completion:*' special-dirs trueі деякі варіанти, як

setopt autolist
unsetopt menucomplete `

Але ніби нічого не працює на мене.

Я зовсім новачок у цьому, тому дуже вдячний за будь-яку допомогу у вирішенні цього питання!


Я знаю , що це дратує SHIFT+7занадто добре ... Деякий час назад я зіставляти один з цих непотрібних вікон ключів ;)до /. Відтоді набирати справжню забаву //////////. Можливо, це варіант і для вас.
mpy

Відповіді:


1

Я не знаю, як налаштувати систему завершення, щоб вона .завжди розширювалася ./. Але ось вирішення описаного вами окремого випадку, тобто на початку командного рядка:

expand-or-complete-special-dot() {
  if [[ $BUFFER == "." ]]; then
    LBUFFER="./"          
  fi 
  zle expand-or-complete
}
zle -N expand-or-complete-special-dot
bindkey "^I" expand-or-complete-special-dot

Це обгортка для звичайної expand-or-completeфункції, до якої (за замовчуванням) прив’язана TAB.


Блискуче! Саме такої поведінки я хочу :)
Paaske
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.