環境
RHEL7
参考URL
Python用おすすめvim設定&プラグイン - MyEnigma
myvim/python.vim at master · AtsushiSakai/myvim · GitHub
→この環境そのもの
のびーの食っちゃね〜だらだらな日々。食っちゃ寝生活してても意外と平気だったりする。 : Vim 標準の ftplugin に独自の設定を追加するなど。
Vim のカスタマイズ 〜キー割り当て変更方法〜 - Vim のブログ
【図解Vim】mapとnoremap | ここぽんのーと
Python のソースコードを自動で PEP8 に準拠させるツール autopep8 | CUBE SUGAR STORAGE
参考URLで勉強したポイント
: set runtimepath
例) RHEL7の実行結果
runtimepath=~/.vim,/usr/share/vim/vimfiles,/usr/share/vim/vim74,/usr/share/vim/vimfiles/after,~/.vim/after
- ビルトインのftpluginは以下コマンドで確認が可能
# find /usr/share/vim/vimfiles /usr/share/vim/vim74 /usr/share/vim/vimfiles/after | egrep ftplugin
/usr/share/vim/vim74/ftplugin/python.vim
- ビルトインに機能を追加したい時は、afterディレクトリに追加機能を記述したファイルを配置する。
~/.vim/after(特定ユーザー対象)
/usr/share/vim/vimfiles/after(全ユーザー対象)
- vimのキーマップ割り当てを変更する場合は、キーマップ変更コマンドを設定ファイルに記述する。
例)今回使うキーマップ変更コマンド
nmap <F5> :!python %
→F5キーを押したらコード実行する為のコマンドが自動入力される。エンターキーを実行したら実行される。キーマップ変更コマンドに
nnoremap <S-f> :call Autopep8()<CR>
→Shift+fを押すとautopep8コマンドによりソースの自動修正がされる。
- キーマップ変更コマンドは、モード・再割当(remap)の有無により異なる。
nmapはノーマルモードで再割当有
nnoremapはノーマルモードで再割当無
vmapはビジュアルモードで再割当有
vnoremapはビジュアルモードで再割当無
※他モードのコマンドについては、参考URL参照
- 再割当(remap)の有無の違いは、キー割当設定時に独自定義のキー割当変更を利用するかどうか
例) F1キーを押すとインサートモードになる設定がある状況。(デフォルトではF1キーを押すとhelpが表示される)
※vimで以下を実行
:map <F1> i
bキーを押すとF1キーを押した処理が実行される設定を、再割当(remap)有で設定した場合
※vimで以下を実行
:map b <F1>
→bキーを押すとインサートモードになる。(再帰的に変更を有効化している)
上記設定を、再割当(remap)無で設定した場合
※vimで以下を実行
:noremap b <F1>
→bキーを押すとヘルプが表示される。
- キー割当を調べたい時は、helpコマンドを使う
例) F1キーを調べる場合
:help <F1>
環境構築手順
① 補完機能を有効化する為、以下URLからパッケージをインストール
Welcome to the RPM repository on fr2.rpmfind.net
上記を検索して新しいものを使う。
今回は、以下でインストール
# wget ftp://195.220.108.108/linux/fedora/linux/releases/24/Everything/x86_64/os/Packages/p/python-jedi-0.9.0-4.fc24.noarch.rpm # wget ftp://195.220.108.108/linux/fedora-secondary/releases/24/Everything/ppc64/os/Packages/v/vim-jedi-0.8.0-1.fc24.noarch.rpm # rpm -ivh ./vim-jedi-0.8.0-1.fc24.noarch.rpm ./python-jedi-0.9.0-4.fc24.noarch.rpm
※vimにjedi機能を追加する方法は、色々参考情報があったが手順も多く、自分には理解できないレベルでした。。。なのでrpmで逃げる。
② autopep8をインストール
# pip install autopep8
③ vimのftplugin設定
myvim/python.vim at master · AtsushiSakai/myvim · GitHub
上記サイトのファイルを丸々流用
以下コマンドを実行
# cat <<HERE > /root/.vim/after/ftplugin/python.vim " vim configuration for python " Author: Atsushi Sakai " <F5>で編集中のファイルを実行 " MATLABと同じショートカット nmap <F5> :!python % " windows" "nmap <F5> :!python %<CR> " autopep " original http://stackoverflow.com/questions/12374200/using-uncrustify-with-vim/15513829#15513829 function! Preserve(command) " Save the last search. let search = @/ " Save the current cursor position. let cursor_position = getpos('.') " Save the current window position. normal! H let window_position = getpos('.') call setpos('.', cursor_position) " Execute the command. execute a:command " Restore the last search. let @/ = search " Restore the previous window position. call setpos('.', window_position) normal! zt " Restore the previous cursor position. call setpos('.', cursor_position) endfunction function! Autopep8() "--ignote=E501: 一行の長さの補正を無視" call Preserve(':silent %!autopep8 --ignore=E501 -') endfunction " Shift + F でautopep自動修正 nnoremap <S-f> :call Autopep8()<CR> HERE