14

NeoVim の:terminal機能を使用する場合、レジスターからテキストを貼り付けられるようにしたいと考えています。

標準のテキスト バッファを使用する場合、レジスタからテキストを貼り付けるために 2 つの方法をよく使用します。

  • 通常モード:"{register}p
  • 挿入モード:<C-r>{register}

これらのコマンドをターミナル バッファで希望どおりに動作させることができません。ターミナル バッファが通常モードの場合"{register}p、現在のコマンド ラインの末尾にレジスタの内容を追加するために使用できます。現在のコマンド ラインの先頭または途中にテキストを挿入したい場合がありますが、このコマンドを使用してそれを行う方法はないようです。

これは、ターミナル モード (挿入モードに相当するターミナル バッファのようです) に切り替えて<C-r>{register}コマンドを使用することで可能になるはずです。しかし、ctrl+rはシェルに直接送信されます。これらのキーを逆検索機能にマップする bash シェルを使用しているため、次のプロンプトが表示されます。

(reverse-i-search)`':

<C-r>{register}をターミナル モードで使用する方法はありますか?

4

3 に答える 3

4

実際には、構成に制御文字を挿入する必要はありません。Nvim にエスケープ解除させることができます。

"Enable CTRL-V in terminal mode
tnoremap <expr> <C-R> '<C-\><C-N>"'.nr2char(getchar()).'pi'
于 2017-01-17T07:41:02.090 に答える
1

ドキュメントで

neovim のドキュメント ( :help terminal-input) では、次のように提案されています。

To simulate i_CTRL-R in terminal-mode:
    :tnoremap <expr> <C-R> '<C-\><C-N>"'.nr2char(getchar()).'pi'

通常のキーボードの場合

残念ながら、これは端末履歴検索 Cr と衝突します。これを変更して、通常のキーボードの Alt キーで動作するようにすることができます。

To simulate i_CTRL-R in terminal-mode:
    :tnoremap <expr> <A-R> '<C-\><C-N>"'.nr2char(getchar()).'pi'

マックブックの場合

しかし、Alt は問題ではなく、NeoVim は Command⌘ のバインドを行わないため、MacbookPro では機能しません。これは MacbookPro で動作し、これまでのところかなり快適だと感じています。

To simulate i_CTRL-R in terminal-mode:
    :tnoremap <expr> <C-\><C-\> '<C-\><C-N>"'.nr2char(getchar()).'pi'

免責事項:set -o vi端末で使用しています。それで、それがあります。あなたのマイレージは異なる場合があります。ああ、私は iTerm2 を使用していません。Alacritty ターミナル エミュレータを使用しています。したがって、私が履歴検索を行うとき、私がすることは、自分のものが見つかるまでCtrl-[だけです。nnnnNまたはCtrl-[/<searchterm><enter>などnnNn

于 2019-04-24T21:31:14.490 に答える