Как расширить переменные среды с помощью сочетания клавиш в Fish? - PullRequest
0 голосов
/ 10 мая 2018

В Bash ярлык Esc Ctrl-e можно использовать для раскрытия переменной среды в оболочке:

$ echo $PATH
/home/joe

$ $PATH<Press Esc Ctrl-e>
$ /home/joe

Есть ли ярлык для достижения чего-то похожего в Рыбе?

1 Ответ

0 голосов
/ 10 мая 2018

Вы могли бы сделать что-то вроде этого

function bind_expand_all
    # what are the tokens of the current command line
    set tokens (commandline --tokenize)
    # erase the current command line (replace with empty string)
    commandline -r ""
    for token in $tokens
        # append the expanded value of each token followed by a space
        commandline -a (eval echo $token)" "
    end
    # move the cursor to the end of the new command line
    commandline -C (string length (commandline))
end

тогда

bind \e\ce bind_expand_all

И если это ваша текущая командная строка (с курсором на подчеркивании):

$ echo $HOME (date -u)_

когда вы нажимаете Alt Ctrl e , вы получаете

$ echo /home/jackman Thu May 10 19:27:18 UTC 2018 _

Чтобы сохранить эту привязку навсегда, добавьте ее в свойФункция fish_user_key_bindings (создайте ее, если она не существует):

По умолчанию привязки клавиш не сохраняются между сеансами. Голые bind операторы в config.fish не будут иметь никакого эффекта, потому что они получены до настройки привязок клавиш по умолчанию. Чтобы сохранить пользовательские привязки клавиш, поместите операторы bind в функцию с именем fish_user_key_bindings, который будет автоматически загружен.


Немного приятнее:

function bind_expand_all
    set -l expanded
    for token in (commandline --tokenize)
        set expanded $expanded (eval echo $token)
    end
    set -l new (string join " " $expanded)
    commandline -r $new
    commandline -C (string length $new)
end
...