9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Neovimのターミナルモードを快適に使いたい

Posted at

Neovimのターミナルモード。便利ではあるものの初期状態だとなかなか使いにくい部分があったので僕なりに改善しました。

ターミナルモード(terminal mode)とは

ターミナルモードとは
vimから進化を遂げたneovimの大きな特徴として,terminalモードが実装されたことがあげられます.
ターミナルモードでは普通のコンソールと全く同様のものをvimのキーバインドで操作できるような作りになっています.
ターミナルモードの起動コマンドは次のようになっています.
下記コマンドを実行すると,ターミナルエミュレータが新しいタブで開きます.
:terminal

https://sy-base.com/myrobotics/vim/neovim-settings/ より引用)

改善1. 切り替えを楽に

ターミナルモードを起動するのに毎回:terminalと打つのはめんどくさいです。

neovimの設定ファイルinit.vimに以下を追記

init.vim
" 新規タブでターミナルモードを起動
nnoremap <silent> tt <cmd>terminal<CR>
" 下分割でターミナルモードを起動
nnoremap <silent> tx <cmd>belowright new<CR><cmd>terminal<CR>

個人的にはvscodeみたいにウィンドウの下部分にターミナルを表示したかったので、画面下分割&ターミナルモード切り替えをtxで可能にしました。
新規タブで開く場合はttで可能です。

改善2. ターミナルを開いたら常にインサートに

切り替えは楽になりましたが、ターミナルを開いた後にそのままコマンド実行できなかったらスマートじゃないので、、

以下を追加

init.vim
" ターミナルを開いたらに常にinsertモードに入る
autocmd TermOpen * :startinsert

ターミナルモードのバッファを開いた時点でインサートモードにすることでターミナル開いた際にすぐにコマンドが実行できるようになりました!

行番号は非表示にする

ターミナルで行番号が表示されていたらなんか気持ち悪いので

init.vim
" ターミナルモードで行番号を非表示
autocmd TermOpen * setlocal norelativenumber
autocmd TermOpen * setlocal nonumber

改善3. <C-w>で使えるウィンドウの管理系をターミナルモードにマップする

ターミナルモードでの操作を改善します。

以下を追加

tnoremap <ESC> <C-\><C-n>
tnoremap <C-W>n       <cmd>new<cr>
tnoremap <C-W><C-N>   <cmd>new<cr>
tnoremap <C-W>q       <cmd>quit<cr>
tnoremap <C-W><C-Q>   <cmd>quit<cr>
tnoremap <C-W>c       <cmd>close<cr>
tnoremap <C-W>o       <cmd>only<cr>
tnoremap <C-W><C-O>   <cmd>only<cr>
tnoremap <C-W><Down>  <cmd>wincmd j<cr>
tnoremap <C-W><C-J>   <cmd>wincmd j<cr>
tnoremap <C-W>j       <cmd>wincmd j<cr>
tnoremap <C-W><Up>    <cmd>wincmd k<cr>
tnoremap <C-W><C-K>   <cmd>wincmd k<cr>
tnoremap <C-W>k       <cmd>wincmd k<cr>
tnoremap <C-W><Left>  <cmd>wincmd h<cr>
tnoremap <C-W><C-H>   <cmd>wincmd h<cr>
tnoremap <C-W><BS>    <cmd>wincmd h<cr>
tnoremap <C-W>h       <cmd>wincmd h<cr>
tnoremap <C-W><Right> <cmd>wincmd l<cr>
tnoremap <C-W><C-L>   <cmd>wincmd l<cr>
tnoremap <C-W>l       <cmd>wincmd l<cr>
tnoremap <C-W>w       <cmd>wincmd w<cr>
tnoremap <C-W><C-W>   <cmd>wincmd w<cr>
tnoremap <C-W>W       <cmd>wincmd W<cr>
tnoremap <C-W>t       <cmd>wincmd t<cr>
tnoremap <C-W><C-T>   <cmd>wincmd t<cr>
tnoremap <C-W>b       <cmd>wincmd b<cr>
tnoremap <C-W><C-B>   <cmd>wincmd b<cr>
tnoremap <C-W>p       <cmd>wincmd p<cr>
tnoremap <C-W><C-P>   <cmd>wincmd p<cr>
tnoremap <C-W>P       <cmd>wincmd P<cr>
tnoremap <C-W>r       <cmd>wincmd r<cr>
tnoremap <C-W><C-R>   <cmd>wincmd r<cr>
tnoremap <C-W>R       <cmd>wincmd R<cr>
tnoremap <C-W>x       <cmd>wincmd x<cr>
tnoremap <C-W><C-X>   <cmd>wincmd x<cr>
tnoremap <C-W>K       <cmd>wincmd K<cr>
tnoremap <C-W>J       <cmd>wincmd J<cr>
tnoremap <C-W>H       <cmd>wincmd H<cr>
tnoremap <C-W>L       <cmd>wincmd L<cr>
tnoremap <C-W>T       <cmd>wincmd T<cr>
tnoremap <C-W>=       <cmd>wincmd =<cr>
tnoremap <C-W>-       <cmd>wincmd -<cr>
tnoremap <C-W>+       <cmd>wincmd +<cr>
tnoremap <C-W>z       <cmd>pclose<cr>
tnoremap <C-W><C-Z>   <cmd>pclose<cr>

インサートモード→ノーマルモードに戻る操作がやりにくかったので、<ESC>で抜けれるようしています。
後はで直感的に操作できるようになりました。

終わりに

これでターミナルモードの操作がだいぶ快適になりました。
僕自身neovim関する知識はまだまだなので、ご指摘やもっと良い書き方などありましたら教えていただけると助かります!

【参考文献】

とても参考にさせていただきました!ありがとうございます!
https://zenn.dev/kyoh86/articles/b81c401cecc91c
https://sy-base.com/myrobotics/vim/neovim-settings/

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?