neovimターミナルペインに入るときに挿入モードに入る方法


16

neovimのターミナルペインから簡単に移動できるように、次のマッピングがあります。

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ペインに移動するときは、常に挿入モードにする必要があります。これを達成する最良の方法は何ですか?

回答:


18

端末バッファ名は常に次で始まりますterm://

autocmd BufWinEnter,WinEnter term://* startinsert

これにより、ウィンドウを離れるときに使用していたモードに関係なく、ターミナルウィンドウに移動すると常に挿入モードになります。


同様のオートコマンドを使用して、ターミナルウィンドウを離れるときに、このウィンドウをどのように離れても、常に通常モードに戻ることができます。

autocmd BufLeave term://* stopinsert


このソリューションでは、この問題が発生します。あなたはそれを回避する方法を知っていますか?
ラスタポポロス

BufEnterそれのようなルックスautocmdは、この問題はありません。
ラスタポポロス

3

ターミナルにターミナルバッファセットbuftypeを入力すると、代わりに実際にこれを使用できます。

:au BufEnter * if &buftype == 'terminal' | :startinsert | endif

:startinsertは、この投稿の時点でネイティブのvim 8端末では機能しないことがわかりました。実際には:help terminal、「:startinsertは無効です」と明示されています。exec 'normal! i'代わりに動作することがわかりました。
ケビン

1
「この投稿の時点で、ネイティブのvim 8端末では:startinsertが機能しないことがわかりました。」それは悲しいです。VimにはNeoVimから学ぶべきことがたくさんあります。
trusktr

0

またはわずかに優れています:

  function! TerminalOptions()
    " /* folded code */
    silent au BufEnter <buffer> startinsert!
    silent au BufLeave <buffer> stopinsert!
  endfunction
  au TerminalOpen * call TerminalOptions()

これは<buffer>auコマンドをローカルに適用するため、端末バッファータイプのみに適用されます。これは、端末の設定のみを変更する場合にも役立ちます。相対線から絶対線へのswtichなど;)

また..... :startinsertすべてのドキュメントがそれを指していても、私は仕事に着手できません。私は次のことをしなければなりませんでした:

    au BufEnter <buffer> exec "normal i"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.