tnoremap <C-h> <C-\><C-n><C-w>h
" Workaround since <C-h> isn't working in neovim right now
tnoremap <C-w>h <C-\><C-n><C-w>h
tnoremap <C-j> <C-\><C-n><C-w>j
tnoremap <C-k> <C-\><C-n><C-w>k
tnoremap <C-l> <C-\><C-n><C-w>l
唯一的问题是当我移回终端面板时,我必须按
i
回到插入模式。当我进入运行终端的Neovim窗格时,我总是希望它处于插入模式。实现此目标的最佳方法是什么?#1 楼
终端缓冲区名称始终以term://
开头:autocmd BufWinEnter,WinEnter term://* startinsert
请注意,无论您使用哪种模式,这都将始终使您在进入终端窗口时处于插入模式
还可以使用类似的自动命令在离开终端窗口时始终返回正常模式,无论您如何离开该窗口:
autocmd BufLeave term://* stopinsert
#2 楼
输入终端缓冲区会将buftype
设置为终端,实际上您可以使用它::au BufEnter * if &buftype == 'terminal' | :startinsert | endif
评论
我发现:startinsert不适用于本机vim 8终端。实际上,在:help终端中明确指出:“:startinsert无效”。我发现那个执行官很正常!我工作了。
–凯文
18-2-6在15:11
“截至本文,我发现:startinsert不适用于本地vim 8终端。”真伤心Vim有很多可以从NeoVim中学习的东西。
–trusktr
18 Mar 2 '18 at 3:52
#3 楼
在neovim上,您可以执行以下操作: autocmd TermOpen * startinsert
在
:help :terminal
中找到。 #4 楼
甚至更好一点: function! TerminalOptions()
" /* folded code */
silent au BufEnter <buffer> startinsert!
silent au BufLeave <buffer> stopinsert!
endfunction
au TerminalOpen * call TerminalOptions()
<buffer>
将使au命令在本地应用,因此仅适用于termal缓冲区类型。这对于仅更改终端的设置也很有用。例如从相对行到绝对行的swtich;)也...即使所有文档都指向
:startinsert
,我也无法正常工作。我必须执行以下操作: au BufEnter <buffer> exec "normal i"
评论
使用此解决方案,我会遇到此问题。您知道解决方法吗?
– Rastapopoulos
'18 Apr 19在10:18
BufEnter autocmd似乎没有此问题。
– Rastapopoulos
18年4月19日在10:49