キーボードを使用して、システムクリップボード(またはテキストの選択)から「viなど」のシェルプロンプトとして貼り付けることができるようにしたいです。私は通常zshを使用し、時にはbashを使用します。どちらの場合も、bindkey -v
viと同様の動作(/)でシェルを設定しましたset -o vi
。
vimで私が探しているアクションはキーシーケンスを介して取得できます"+p
。ただし、この特定のキーシーケンスはviサポートシェルプロンプトでは期待どおりに機能しません。 zshまたはbashシェルプロンプトでviと同様のキーバインディングを維持しながら、キーボードのみを使用して同様の動作を有効にする方法はありますか?
- 編集する -
ユースケース:私はしばしばFirefox間をナビゲートします。5本指プラグイン、端末エミュレータとvim自体 - 使用シモネードウィンドウマネージャには、取り外し可能なカスタムキーが用意されています。 3つのプログラムはすべてviに似たキーバインディングを持っており、非常に効率的です(「指メモリ」用)。したがって、vim構文(または非常に似た構文)を使用してそれらの間にテキストを渡すのが理想的です。
ベストアンサー1
私が知る限り、Zshは内部レジスタ以外には何もサポートしておらず、bashはレジスタをまったくサポートしていません。通常、シェルはviコマンドをサポートしますが、vimコマンドはサポートしません。
zshでは、以下はコマンドモードでX選択にアクセスするための概念証明です。実際に使用するには、これらの技術について詳しく説明する必要があります。私が使用するプログラムはxsel
あなたxclip
も利用できます。レジスタを使用してあるvimインスタンスから別のvimインスタンスにコピーする方法。私が使用する機能を見つけることができますリングルマニュアル。
vi-append-x-selection () { RBUFFER=$(xsel -o -p </dev/null)$RBUFFER; }
zle -N vi-append-x-selection
bindkey -a '^X' vi-append-x-selection
vi-yank-x-selection () { print -rn -- $CUTBUFFER | xsel -i -p; }
zle -N vi-yank-x-selection
bindkey -a '^Y' vi-yank-x-selection
この関数はvi-append-x-selection
現在のX選択をカーソルの後ろに挿入します(またはに似ていp
ますP
)。この機能は、vi-yank-x-selection
最後に削除またはインポートされたテキストを X 選択項目にコピーします。zle -N
関数をzleウィジェット(編集コマンドなど)として宣言します。bindkey -a
vi コマンドモードのバインディングを設定します。