文字を文字通り入力できます。使用
ttyドライバの "lnext"機能(通常デフォルトでは^ V)
ただし、ターミナルエミュレータではCtrl+を「貼り付け」にバインドします。 (制御フローを使用しないため)+にv再バインドしたいと思います。私は次を試しましたlnext
Ctrlq~/.zshrc
setopt noflowcontrol # Don't use ^s and ^q for control flow
bindkey -r "^Q" # Unbind ^q from push-line
stty lnext '^Q' # Bind ^q to lnext
しかし、うまくいかないようです。 +lnext
に再バインドする方法はありますか?Ctrlq
編集する
追加のトラブルシューティングを行いましたが、他のsttyキーを再バインドできないようです。テストのために削除しsetopt noflowcontrol
、stty start '^A'
またはstty start '^B'
。どちらも効果がありません。start
それでもCtrl+にバインドされていますq。 (FWIW私は文字通り^A
または前の^B
文字自体を試しました。)lnext
答え1
stty lnext
ターミナルデバイスラインルール内部エディタにのみ影響します(このようなアプリケーションを実行すると、cat
独自のラインエディタなしで非常に制限されたエディタが得られます)。 zshエディタの場合は、独自のエディタで同じタスクを実行するためにtty LD設定をクエリする(行エディタとは異なり)bindkey
を使用するzle
必要があります。readline
bash
stty lnext '^Q' start '' -ixon # for tty LD editor
bindkey '^Q' quoted-insert # for zle
各端末に対してこの部分を実行する必要があり、stty
tty LD設定がデフォルト値(例:以降)に復元されたら、もう一度実行する必要がありますstty sane
。
一部のシステムでは、HPUXとstty lnext '^Q' < /dev/ttyconf
。
^V
zsh 行エディタのカーソルに X11 CLIPBOARD 選択項目を貼り付けます。
get-clipboard() {
local clip
clip=$(xclip -sel c -o 2> /dev/null && echo .) || return
LBUFFER+=${clip%.}
}
zle -N get-clipboard
bindkey '^V' get-clipboard