Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Vimでterminal-modeでrepl使う

$
0
0

VIMでREPL使いたいよね?

僕は使いたいです。それも非同期処理で。
今回はほぼ標準機能だけでターミナルモードを使う方法でやりましょう。
詳しくは公式をみて下さい。
http://vim-jp.org/vimdoc-ja/terminal.html#Terminal-mode

TL;DR

bashrcで任意のキー(ここでは下矢印)に下記のようにマッピングして

nnoremap <Down><C-w><C-w><C-w>"0p<C-w><C-w>

任意のreplをターミナルモードから呼び出し(ここではipython)

:term ipython

あとは元の分割画面に戻って操作。
文字列をヤンクして上記のキー押したらreplに放り込まれる。

前提

新しいバージョンのvimでターミナルモードが有効の設定で
コンパイルされていること。

ターミナルモード

もし上記が有効ならば、下記でターミナルモード起動できます。

:term

こいつでvim内でターミナルモード起動できますが、
ipythonとか、Rとか直接起動したいならこんな感じで起動できます。

:term ipython

ターミナルモードに関しては公式が詳しいですが、簡単に使い方を言うと…

キー挙動
Ctr-whjklで分割画面移動
Ctr-w Ctr-w連打で分割画面移動
Ctr-w w同上
Ctr-w Nターミナルノーマルモード。コマンド入力不可。終了時とかヤンクに使う。
CTRL-W " {reg}レジスタからペースト

ターミナルモードへの貼付け

ターミナルモードへ手軽に貼り付けられなかったら意味ないですね?
キーマッピングを設定しましょう。例えばこうします。

tnoremap <C-x><C-w>"0p

これでターミナルモードでCtr-xを押すことで
直前にヤンクした内容を貼り付けて実行できます。
…この程度じゃあまりIDEより手軽じゃない気がしますね?一々移動しないといけないし。

そこで、エディタでヤンクしたものをreplに投げ込み、
即座にエディタに戻ってくる設定をします。

作ったマッピング

過激派vimmerは矢印キーが不要ですので、下記のように下矢印キーに
マッピングしちゃうことも出来ますね。

nnoremap <Down><C-w><C-w><C-w>"0p<C-w><C-w>

このマッピングであれば、下矢印でヤンクした物を貼り付けます。
もちろん、自分の使ってないマッピングならなんでも良いと思います。

このマッピングの弱点と克服

Ctr-w Ctr-wはvimでは分割した画面の中の、別の場所に移動するというやつです。
なので、既に画面を分割している場合は苦しいですね。
そんな時はtabが便利になります。

「tabじゃなくて左右にsplitした状態でやりたいんだよ👹」という方は、

nnoremap <Right><C-w>l<C-w>"0p<C-w>h

とかすれば良いと思います。人の数だけvimrcがあるのですからね。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>