Neovim の terminal mode2021/08/26

Neovim の terminal mode

Neovim の terminal mode の操作についてのメモです。

terminal mode は Vim 及び Neovim のウィンドウでターミナルのコマンドの実行・結果の表示ができるものです。 ファイルを編集しながらコマンドを実行したりできるので、とても便利です。

使うときにちょっと癖があるので便利になる設定と基本的な使い方を以下にメモしています。

概要

  • terminal mode
  • 便利なコマンドを設定

terminal mode

:terminal コマンドでterminal mode に入ります。Neovim の場合は現在のウィンドウで開かれます。 短縮版の :term:te でも同様です。

別のウィンドウで開く場合は :vs|te とかで開くのが簡単でおすすめです。画面を分割してから terminal mode に入ります。

terminal-job モードでコマンド実行

terminal mode では最初は terminal-normal モードになっていて、ターミナルへの入力はできません。 ターミナルの出力を遡ったりヤンクやペーストのみできる状態です。Vim でいうノーマルモードに近いです。

iキーで terminal-job モードに入ることができます。Vim でいうインサートモードに近く、ターミナルの入力・実行ができます。

terminal-normal モードに戻る

コマンド実行後は元のファイル編集ウィンドウに戻りたいですが、job モードではウィンドウ移動ができません。 <C-\><C-n> で terminal-normal モードに戻ることができます。そうすればウィンドウの移動ができます。

便利なコマンドを設定

上記で説明しましたが、terminal-normal モードに戻る <C-\><C-n> はちょっと覚えにくく操作もしづらいですね。 私は以下のコマンドを設定して <C-[> で terminal-normal モードへ戻れるようにしています。

tnoremap <C-[> <C-\><C-n>

tnoremap でterminal mode のキーマッピングを設定できます。

あとは、以下のコマンドで編集中ファイルのパスを取得してレジスタへ保存できるようにしました。

nmap <silent> <Leader><Leader>p :let @* = expand("%")<CR>

これで terminal mode に入り、npm test などを編集中ファイルのパスを渡して実行することで、編集中ファイルに対してコマンドを実行できます。

おわりに

Neovim 上でターミナルを操作できると、出力などをヤンクしたり検索したりでき、とても便利です。 ちょっとモード切り替えなどに癖があるので、その部分だけコマンドを用意してあげればとても使いやすくなります。

tmux でペイン分割してターミナル操作でもいいですが、Neovim 上で解決できる方法も知っておくと便利な場合もあるのでおすすめです。

  • このエントリーをはてなブックマークに追加