LoginSignup
12
5

More than 5 years have passed since last update.

[neovimプラグイン] ipython実行環境を作った

Last updated at Posted at 2018-11-23

neovimでpythonコードを書いている時に、エディタから抜けずにそのまま実行したくなります。
quickrunasyncrunだと実行した後に対話的な変数の操作やデータの分析ができません。
Vimの学習も兼ねて、neovimの標準機能であるターミナルモード(Vim8にもありますが)を利用して編集中のPythonスクリプトをIpythonに渡して実行するプラグインを作ることにしました。

GitHubリポジトリ(szkny/Ipython)
 

概要

ターミナルモードを利用してipythonコンソールを呼び出します。
:Ipythonコマンドで編集中のスクリプトを実行後、<C-w>wで操作ウィンドウを切り替えれば対話環境に移れます
内部ではneovim標準のjobsend関数で%run filename.pyをipythonに送ります。

  • このプラグインでできること
    • Ipythonコンソールでスクリプトを実行 (実行後も変数、メソッドを保持)
    • 編集中スクリプトの部分実行 (ヴィジュアルモードで選択した領域の実行)
    • Ipythonの機能をおおよそ実行可能

デモ画面

インストール

vim-plugの場合、init.vimに以下を追記

Plug 'szkny/SplitTerm'
Plug 'szkny/Ipython'

neovimを開いて下記コマンドを実行

:PlugInstall

コマンド

使い方 説明
:Ipython 現在編集中のPythonスクリプトを実行する (ipythonウィンドウが無ければ開く )
:VIpython Visual modeで選択している行を実行する (ipythonウィンドウが無ければ開く )

キーマッピング

init.vimに以下を追加。
(デフォルトではキーマップは設定されていません)

nmap  <leader>ip  :Ipython<CR>
vmap  <leader>ip  :VIpython<CR>

オプション

Ipythonの起動オプションやインポートパッケージをinit.vimに記述できます。
以下をinit.vimにリストで定義。

" ipythonコマンドのコマンドライン引数
let g:ipython_startup_options = ['--no-confirm-exit']

" ipython起動時実行するコマンドリスト
let g:ipython_startup_command = [
            \'from pylab import *',
            \'import pandas as pd',
            \'pd.options.display.max_rows = 10',
            \'pd.options.display.max_columns = 10',
            \'pd.options.display.precision = 3']

" ウィンドウ幅 ( 0 にすると自動で設定)
let g:ipython_window_width = 0

以下はデフォルト設定

let g:ipython_startup_options = [
            \'--no-confirm-exit',
            \'--colors=Linux',
            \'--no-banner']

let g:ipython_startup_command = []

let g:ipython_window_width = 10

関数

名前 説明
ipython#open() ipythonウィンドウを開く
ipython#close() ipythonウィンドウを閉じる
ipython#exist() ipythonウィンドウの存在確認
ipython#run() 現在編集中のPythonスクリプトを実行する
ipython#run_visual() Visual modeで選択している行を実行する
12
5
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
12
5