neovim × neoterm = 最強

vimmerの皆さんこんにちは。

今回はneovimにて実装されたターミナルモードの便利な使い方を紹介していきます。
通常のvimでも、ターミナルコマンドを使うことができましたが、neovimではもうターミナルそのものを使用できるのでとても便利です。
(厳密には違う?かもしれませんが、今の所通常のターミナルとの相違点は無いように感じます)

 

 

参考:私が使用している便利なプラグイン一覧
vim とても強力なプラグインたち

 

neovim × neotermでできること   (私がやっていること…)

vimからコマンド1つで

  • Python を走らせる
  • c++ をコンパイル (cmake)
  • texをコンパイル
  • catkin_make (ROS) を実行

といった便利なことができます.みなさんもぜひneovimでターミナルモードを使いこなしましょう.

ちなみに,私はvimのnormalモード中で
<Space>p 画面を上下に分割し、下半分にターミナルを出現させ現在編集していたPythonスクリプトを実行。
<Space>c 画面を上下に分割し、下半分にターミナルを出現させROSのcatkin_makeを実行。
という風にキーマッピングをしています。

 

neotermとは

kassio氏が公開しているneovimのターミナルに関するプラグインです。

kassio/neotermのgithubページはこちら。
https://github.com/kassio/neoterm

 

ターミナルウィンドウの表示に関するマッピング

neotermを入れたら、まずはターミナルウィンドウを表示させたいですよね。
そこで以下のようにマッピングします。

割り当てるキーは皆さんのお好みのマッピングにしてもらえば良いのですが、参考までに私は Ctrl + t のダブルタップに割り当てています。

:Ttoggleはneotermのコマンド。ターミナルウィンドウのトグルです。

ターミナルモード中はコロンで始まるコマンドは入力できないので、一度 <C-\><C-n> でターミナルモードを抜けてノーマルモードに戻ってから :Ttoggle コマンドを実行します。

neotermの基本的なコマンド

:Tnew
ターミナルを開く.
初期設定では水平方向に画面が分割されるが,設定によっては垂直方向に分割したり,新しいウィンドウで開くこともできるようになる.
Ctrl + dで端末を終了させると自動的に分割されたウィンドウが閉じられる.

:T <command>
ターミナルを開き,コマンドを実行する.
例えば,:T cd ~/Documents など.

このようにマッピングすると良いと思います.
2段目は,分割した後にターミナルのウィンドウに移動するバージョンです.ターミナルを水平分割で開いた後も元のウィンドウの方にフォーカスが合っているので,<C-w>j コマンドでターミナルのウィンドウにフォーカスを移動しています.
どちらが使いやすいかはお好みで。

 

 

現在編集しているpythonプロジェクトを走らせる

画面下半分にターミナルウィンドウが出現して、現在編集しているpythonを走らせることができます。

<コマンドの説明>
:T   ターミナルを開く。
python %<CR>   pythonを走らせる。(%はカレントファイル名を表します。)
<c-w>j   水平分割で開いた後に、ターミナルにフォーカスを移動。この記述はお好みでどうぞ。

 

cmakeを走らせる

同様にcmakeを走らせる.

<コマンドの説明>
:T   ターミナルを開く。
cd %:h   今編集しているファイルがあるフォルダに移動。(%:hで現在開いているファイルのディレクトリを取得できます。)
cd ../build   今いるフォルダからbuildフォルダに移動します。
cmake .. && make  cmakeを実行。

 

お気づきかもしれませんが,これだと1つ上の階層がプロジェクトのルート(CMakeLists.txtのある場所)だと決め打ちしています.
ちゃんと使えるようにするならCMakeLists.txtのあるディレクトリに移動するシェルを書く必要があるとおもいますが…

 

catkin_makeを走らせる (ROS)

同様にcatkin_makeを走らせる.

<コマンドの説明>
:T
   ターミナルを開く。
roscd   catkin_wsに移動する。
catkin_make   catkin_makeを実行。

 

その他

最近は、コマンド1つでgitにpushする機能を割り当てたり、
コマンド1つでTexのコンパイルが実行できるようにしてみたりと、
(日本語の文書作成にvimを使うとは何事か!と突っ込まれそうですが、それでも私はvimを使います。Vim愛。)
ターミナルを用いるショートカットを色々と考えてはvimrcの行数を増やしています。

アイデア次第でNeotermを用いて様々なショートカットが考えられると思います。

 

みなさんもNeotermを用いて便利なショートカットを色々割り当ててみてはいかがでしょう。
それでは。

 

参考:私が使用している便利なプラグイン一覧
vim とても強力なプラグインたち