2017-01-16 67 views
6

當使用NeoVim的:terminal功能時,我希望能夠從寄存器中粘貼文本。如何在終端模式下粘貼NeoVim寄存器?

與標準的文本緩衝區的工作,我經常使用兩種方法來從寄存器粘貼文本:

  • 在普通模式:"{register}p在插入模式
  • <C-r>{register}

我無法讓這些命令以我希望他們在終端緩衝區中工作的方式工作。當終端緩衝區處於正常模式時,我可以使用"{register}p在當前命令行的末尾附加寄存器的內容。有時候我想在當前命令行的開始處插入文本,或者在中途插入文本,而且似乎沒有辦法使用此命令來執行此操作。

它發生,我認爲這應該通過切換到終端模式(這似乎是終端緩衝器相當於插入模式),並使用該命令<C-r>{register}是可能的。但CTRL +[R直接發送到我的殼。我使用bash shell,它映射這些鍵的reverse search功能,所以我發現自己在看這樣的提示:

(reverse-i-search)`': 

有沒有我可以在終端模式下使用<C-r>{register}什麼辦法?

+0

如果你沒有在這裏得到一個答案,也嘗試[Vi和Vim的SE(https://vi.stackexchange.com):) – cxw

回答

5

Nvim對終端模式下處理任意鍵(<C-\><C-N>除外)保守,因此默認情況下不處理CTRL-R。另外,Nvim不知道在:terminal內運行哪個應用程序,所以只是盲目地向輸入流發送文本。

說了這麼多,你可以用:tnoremap以獲取CTRL-R類似的效果:

:tnoremap <expr> <C-R> '<C-\><C-N>"'.nr2char(getchar()).'pi' 
+0

在纏繞我的頭圍繞如何說':tnoremap'命令有效,我現在意識到在當前命令行的任意位置都可以使用{「{reg} p」}插入文本。感謝您的幫助! – nelstrom

+0

我發現Bash中的交互式搜索功能很有用, ð希望能夠繼續使用'CTRL-r'了點。我用''作爲觸發適應你所建議的映射。我打算讓使用''的習慣,作爲「領導者「終端模式映射(因爲''爲此設置了先例)。 – nelstrom

+1

另外,我爲['TermCursor'](https://neovim.io/doc/user/syntax.html#hl-TermCursor)和'TermCursorNC'設置了顏色,它清楚了粘貼文本的位置出現在命令行中。 – nelstrom

2

其實沒有必要在配置中插入控制字符。 你可以讓Nvim爲你嘲笑他們。

"Enable CTRL-V in terminal mode 
tnoremap <expr> <C-R> '<C-\><C-N>"'.nr2char(getchar()).'pi' 
+0

謝謝,更新了我的答案。 –

相關問題