Возможно, что-то вроде:
perl -pe 's{((?:[ios=\%].|[\$^T\@!/()])+.)| }{$1}g'
Немного глупо, но могло быть и так:
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"
Вы можете написать функцию, которая редактирует переменные строки чтения 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
, например ).