Вот функция shell, которая должна сделать этот трюк
appendFile(){
local iFile oFile;
[ ! -f "$1" ] || [ -z "$2" ] && {
while [ ! -f "$iFile" ]; do read -p "Input file: " -i "$1" iFile; done;
read -i "$2" -p "Output file: " oFile;
};
cat "${iFile-$1}" >> "${oFile-$2}";
cat "${oFile-$2}";
}
stty lnext
влияет только на внутренний редактор дисциплины линии терминального устройства (самый ограниченный, который вы получаете при запуске таких приложений, как cat
, которые не имеют собственного редактора строк). Для редактора zsh вам нужно использовать bindkey
( zle
не похож на readline
(строковый редактор bash
), который запрашивает настройку tty LD, чтобы сделать то же самое в собственном редакторе).
stty lnext '^Q' start '' -ixon # for tty LD editor
bindkey '^Q' quoted-insert # for zle
Обратите внимание, что вам нужно выполнить часть stty
для каждого терминала и делать это снова каждый раз, когда настройки tty LD возвращаются к значениям по умолчанию, например, после stty sane
.
Некоторые системы позволяют изменять настройки tty по умолчанию, например HPUX, с помощью stty lnext '^ Q' dev / ttyconf
.
И для ^ V
, чтобы вставить содержимое выделения X11 CLIPBOARD в курсор в редакторе строки zsh:
get-clipboard() {
local clip
clip=$(xclip -sel c -o 2> /dev/null && echo .) || return
LBUFFER+=${clip%.}
}
zle -N get-clipboard
bindkey '^V' get-clipboard