Как я могу использовать bindkey для запущения скрипта?

Вместо точки монтирования попытайтесь размонтировать устройство

 umount //metro/released 
8
19.06.2013, 00:00
3 ответа

Можно определить виджет, который называет сценарий:

my-script_widget() my-script its args
zle -N my-script_widget
bindkey '\ej' my-script_widget

Но почему Вы хотели бы назвать свой сценарий непосредственно от zle?

Если это отобразит что-нибудь, то это испортит дисплей. Если Вы хотите его вывод, отображенный, поскольку другой виджет обменивается сообщениями, можно сделать:

my-script_widget() zle -M "$(my-script its args)"

Или если Вы хотите вывод, вставленный в курсоре:

my-script_widget() LBUFFER+=$(my-script its args)
5
27.01.2020, 20:10

Я думаю, вам не нужен виджет для этого:

bindkey -s '\eb' '/path/to/script.sh\n' 

Из zsh docs:

Как и команды ZLE, последовательности клавиш могут быть привязаны к другим строкам, используя 'bindkey -s'.

10
27.01.2020, 20:10

Чтобы немного расширить ответ @suside :

Поскольку bindkey -sпросто отправляет последовательности клавиш, если в вашей подсказке уже что-то есть, и вы пытаетесь использовать привязку, она просто вводит это после того, что уже есть в подсказке. Это можно исправить, отправив kill-whole-lineдля очистки подсказки перед вводом команды/скрипта.

kill-whole-lineобычно привязан к ^u(Ctrl+U), см. docs . Если это не так, вы можете связать его с помощью:

bindkey '^u' kill-whole-line

Затем вы можете сделать:

bindkey -s '\eb' '^u/path/to/script.sh^M'

который привязывает Alt+bк уничтожению текущей строки перед вводом ваших символов, а затем отправляет^M(новую строку ).

0
26.06.2020, 21:30

Теги

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