Вы могли бы сделать что-то вроде этого
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