Есть ли способ определить команду bash readline? [закрыто]

Возможно, что-то вроде:

perl -pe 's{((?:[ios=\%].|[\$^T\@!/()])+.)| }{$1}g'
5
22.04.2018, 17:52
2 ответа

Немного глупо, но могло быть и так:

bind '"\C-xx":"$(date) \e\C-e\ef\ef\ef\ef\ef"'

Сначала он вводит литерал $(date), затем вызывает shell-expand-lineа затем перемещается на 5 слов вперед.

Чтобы сохранить привязку клавиш, добавьте следующее вinputrc:

"\C-xx":"$(date) \e\C-e\ef\ef\ef\ef\ef"
8
27.01.2020, 20:33

Вы можете написать функцию, которая редактирует переменные строки чтения READLINE_POINTи READLINE_LINE. Например, установите в.bashrc:

_myinsert() { # add date at point
    local TOADD=$(date)
    READLINE_LINE="${READLINE_LINE:0:$READLINE_POINT}${TOADD}${READLINE_LINE:$READLINE_POINT}"
    READLINE_POINT=$(($READLINE_POINT + ${#TOADD}))
}
# cannot put this in ~/.inputrc
bind -x '"\C-xx":_myinsert'

Здесь используется опция -xкоманды bind для вызова вашей функции. Я не знаю, как поместить эквивалент в файл ~/.inputrc. (Конечно, вы не можете просто начать строку с -x, например ).

4
27.01.2020, 20:33

Теги

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