開発ではvimを使っています。
vimにハイライト機能や補完機能といった諸々の機能をつけてIDEに近い形にしていきます。
なおvimの基本的な使い方(移動やビジュアルモードなど)は今回は対象外にしてます。
今回はあくまでvimの設定について述べます。
以下の順に沿って記していきます。
- なぜvimを使うか
- vimのREインストール
- 基本的なvimrcの設定
- vimプラグインの導入
- 最終的なvimrcの設定
なぜvimを使うか
言語によってツールを使い分けるのが面倒だった
専門は分析基盤ですが、pythonとシェルスクリプトを半々ずつ用いて開発しています。また、前職ではPHPがメインだったので、PyCharmとPHPStormを入れて開発してた時があります。言語によってツールを使い分けるのが面倒だったので、「自分でvimをカスタマイズして多言語に対応できるようにした方が楽」と思うようになりました。
開発環境のLinuxで直接編集がしたかった
サーバと同じ動きを再現するために、Vagrantを使ってローカルPC(Windows)上にVM(Linux)を立ち上げて開発環境としてました。一時期Windows上でAtomなどを使いスクリプトを編集してから、それをvagrant rsync-auto
でWindowsとLinuxを同期することもしていたのですが、同期のスピードが遅くてやめました。「直接サーバ上で編集できるようなエディタが欲しい」と思うようになりました。
vimに慣れてしまうと抜け出せなくった
0
や$
を使って行頭、行末にすぐに移動できたり、ciw
を使ってすぐに単語を修正できたり、そういったvimの便利なコマンドを覚えてしまうと、「vim以外のエディタは不便」と感じるようになりました。
VimのREインストール
標準のvimでは足りない機能があるので、改めてvimを入れ直します。
前提となる環境
自宅で使っているMacBooK Airを用います。
2011 MacBook Air 3,1
1.4 GHz Intel Core 2 Duo
2 GB 1067 MHz DDR3
128 GB SSD
High Sierra 10.13.2
pyenv 1.1.5 + anaconda3-4.0.0
でpython3を入れています。
標準のvimの設定を確認します。
~$ vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Jul 26201719:10:24)
Included patches: 1-503, 505-642
Compiled by root@apple.com
Normal version without GUI. Features included (+) or not (-):
+acl +file_in_path -mouse_sgr +tag_old_static
-arabic +find_in_path -mouse_sysmouse -tag_any_white
+autocmd +float -mouse_urxvt -tcl
-balloon_eval +folding +mouse_xterm -termguicolors
-browse -footer +multi_byte +terminfo
+builtin_terms +fork() +multi_lang +termresponse
+byte_offset -gettext -mzscheme +textobjects
+channel -hangul_input +netbeans_intg +timers
+cindent +iconv +num64 +title
-clientserver +insert_expand +packages -toolbar
-clipboard +job +path_extra +user_commands
+cmdline_compl +jumplist -perl +vertsplit
+cmdline_hist -keymap +persistent_undo +virtualedit
+cmdline_info +lambda +postscript +visual
+comments -langmap +printer +visualextra
-conceal +libcall -profile +viminfo
+cryptv +linebreak +python/dyn +vreplace
+cscope +lispindent -python3 +wildignore
+cursorbind +listcmds +quickfix +wildmenu
+cursorshape +localmap +reltime +windows
+dialog_con -lua -rightleft +writebackup
+diff +menu +ruby/dyn -X11
+digraphs +mksession +scrollbind -xfontset
-dnd +modify_fname +signs -xim
-ebcdic +mouse +smartindent -xpm
-emacs_tags -mouseshape +startuptime -xsmp
+eval -mouse_dec +statusline -xterm_clipboard
+ex_extra -mouse_gpm -sun_workshop -xterm_save
+extra_search -mouse_jsbterm +syntax
-farsi -mouse_netterm +tag_binary
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
2nd user vimrc file: "~/.vim/vimrc"
user exrc file: "$HOME/.exrc"
defaults file: "$VIMRUNTIME/defaults.vim"
fall-back for$VIM: "/usr/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DMACOS_X_UNIX -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Linking: gcc -L/usr/local/lib -o vim -lm -lncurses -liconv -framework Cocoa
ここから
- クリップボード経由でコピペをしたいのでclipboardを有効に
- 補完プラグインneocompleteを用いたいのでluaを有効に
- pythonの補完プラグインjedi-vimでpython3を使いたいのでpython3を有効に
の3点に気をつけてREインストールします。
~$ brew install lua
~$ brew install vim --with-lua --with-python3
すると、/usr/local/bin/vim
として新しいvimが入ります。しかし
~$ which vim
/usr/bin/vim
のようにまだ標準のvimを指していますので、export PATH=/usr/local/bin:$PATH
を.bash_profile
に書き込み、/usr/local/bin
が優先的に読み込まれるようにします。
~$ source .bash_profile
~$ which vim
/usr/local/bin/vim
これでREインストール完了です。上記3つの機能がつけられていることを見ましょう。
~$ vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Dec 28201720:00:41)
macOS version
Included patches: 1-1400
Compiled by Homebrew
Huge version without GUI. Features included (+) or not (-):
+acl +farsi +mouse_sgr -tag_any_white
+arabic +file_in_path -mouse_sysmouse -tcl
+autocmd +find_in_path +mouse_urxvt +termguicolors
-autoservername +float +mouse_xterm +terminal
-balloon_eval +folding +multi_byte +terminfo
+balloon_eval_term -footer +multi_lang +termresponse
-browse +fork() -mzscheme +textobjects
++builtin_terms -gettext +netbeans_intg +timers
+byte_offset -hangul_input +num64 +title
+channel +iconv +packages -toolbar
+cindent +insert_expand +path_extra +user_commands
-clientserver +job +perl +vertsplit
+clipboard +jumplist +persistent_undo +virtualedit
+cmdline_compl +keymap +postscript +visual
+cmdline_hist +lambda +printer +visualextra
+cmdline_info +langmap +profile +viminfo
+comments +libcall -python +vreplace
+conceal +linebreak +python3 +wildignore
+cryptv +lispindent +quickfix +wildmenu
+cscope +listcmds +reltime +windows
+cursorbind +localmap +rightleft +writebackup
+cursorshape +lua +ruby -X11
+dialog_con +menu +scrollbind -xfontset
+diff +mksession +signs -xim
+digraphs +modify_fname +smartindent -xpm
-dnd +mouse +startuptime -xsmp
-ebcdic -mouseshape +statusline -xterm_clipboard
+emacs_tags +mouse_dec -sun_workshop -xterm_save
+eval -mouse_gpm +syntax
+ex_extra -mouse_jsbterm +tag_binary
+extra_search +mouse_netterm +tag_old_static
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
2nd user vimrc file: "~/.vim/vimrc"
user exrc file: "$HOME/.exrc"
defaults file: "$VIMRUNTIME/defaults.vim"
fall-back for$VIM: "/usr/local/share/vim"
Compilation: clang -c -I. -Iproto -DHAVE_CONFIG_H -DMACOS_X -DMACOS_X_DARWIN -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Linking: clang -L. -L /BuildRoot/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.Internal.sdk/usr/local/libressl/lib -L/BuildRoot/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.Internal.sdk/usr/local/lib -L/usr/local/lib -o vim -lm -lncurses -liconv -framework AppKit -L/usr/local/lib -llua -fstack-protector -L/System/Library/Perl/5.18/darwin-thread-multi-2level/CORE -lperl -L/Users/daiki_akimoto/.pyenv/versions/anaconda3-4.0.0/lib/python3.5/config-3.5m -lpython3.5m -framework CoreFoundation -lruby.2.3.0 -lobjc
さらにvim内のpython3のpathがpyenvでインストールされたものになっているかも確認します。
$ vim
:python3 import sys; print(sys.version)3.5.4 | packaged by conda-forge |(default, Dec 92017, 16:23:28)[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)]
基本的なvimrcの設定
お気に入りの配色の配置
vimの配色はvim-hybridがお気に入りなので、予めこれを色の選択肢の中に入れておきます。
~$ mkdir -p git/github.com/w0ng/
~$ cd git/github.com/w0ng/
~/git/github.com/w0ng$ git clone https://github.com/w0ng/vim-hybrid.git
~/git/github.com/w0ng$ cp vim-hybrid/colors/hybrid.vim /usr/local/share/vim/vim80/colors/
vimrcの中身
プラグインを入れる前の基本的なvimの設定は下記になります。
""" release autogroup in MyAutoCmd
augroup MyAutoCmd
autocmd!
augroup END""" 表示関係sett_Co=256setbackground=darkcolorscheme hybridsyntaxonsetlist" 不可視文字の可視化setnumber" 行番号の表示setruler" カーソル位置が右下に表示されるsetwildmenu" コマンドライン補完が強力になるsetshowcmd" コマンドを画面の最下部に表示するsetwrap" 長いテキストの折り返しsettextwidth=0" 自動的に改行が入るのを無効化setcolorcolumn=80" その代わり80文字目にラインを入れるsetcursorline" その代わり80文字目にラインを入れる" 前時代的スクリーンベルを無効化sett_vb=setnovisualbellsetfoldmethod=indent " 折り畳みsetfoldlevel=100" ファイルを開くときに折り畳みをしない""" 編集関係setinfercase" 補完時に大文字小文字を区別しないsetvirtualedit=all" カーソルを文字が存在しない部分でも動けるようにするsethidden" バッファを閉じる代わりに隠す(Undo履歴を残すため)setswitchbuf=useopen " 新しく開く代わりにすでに開いてあるバッファを開くsetshowmatch" 対応する括弧などをハイライト表示するsetmatchtime=3" 対応括弧のハイライト表示を3秒にするsetautoindent" 改行時にインデントを引き継いで改行するsetshiftwidth=4" インデントにつかわれる空白の数auBufNewFile,BufRead *.yml setshiftwidth=2setsofttabstop=4" <Tab>押下時の空白数setexpandtab" <Tab>押下時に<Tab>ではなく、ホワイトスペースを挿入するsettabstop=4" <Tab>が対応する空白の数auBufNewFile,BufRead *.yml settabstop=2setshiftround" '<'や'>'でインデントする際に'shiftwidth'の倍数に丸めるsetnf=" インクリメント、デクリメントを10進数にする" 対応括弧に'<'と'>'のペアを追加setmatchpairs& matchpairs+=<:>" バックスペースでなんでも消せるようにするsetbackspace=indent,eol,start" クリップボードをデフォルトのレジスタとして指定。後にYankRingを使うので" 'unnamedplus'が存在しているかどうかで設定を分ける必要があるif has('unnamedplus')setclipboard& clipboard+=unnamedplus,unnamedelsesetclipboard& clipboard+=unnamedendif" Swapファイル, Backupファイルを全て無効化するsetnowritebackupsetnobackupsetnoswapfile""" 検索関係setignorecase" 大文字小文字を区別しないsetsmartcase" 検索文字に大文字がある場合は大文字小文字を区別setincsearch" インクリメンタルサーチsethlsearch" 検索マッチテキストをハイライト" バックスラッシュやクエスチョンを状況に合わせ自動的にエスケープ
cnoremap <expr>/ getcmdtype() == '/' ? '\/' : '/'
cnoremap <expr> ? getcmdtype()=='?' ? '\?' : '?'""" マクロおよびキー設定" ESCを二回押すことでハイライトを消す
nmap <silent><Esc><Esc> :nohlsearch<CR>" カーソル下の単語を * で検索vnoremap<silent> * "vy/\V<C-r>=substitute(escape(@v, '\/'), "\n",'\\n','g')<CR><CR>" 検索後にジャンプした際に検索単語を画面中央に持ってくるnnoremapn nzznnoremap N Nzznnoremap * *zznnoremap # #zznnoremapg* g*zznnoremapg# g#zz" j, k による移動を折り返されたテキストでも自然に振る舞うように変更nnoremapj gjnnoremapk gk" TABにて対応ペアにジャンプnnoremap<Tab> %vnoremap<Tab> %" [ と打ったら [] って入力されてしかも括弧の中にいる(以下同様)inoremap [ []<left>inoremap(()<left>inoremap { {}<left>inoremap" ""<left>inoremap' ''<left>" Ctrl + hjkl でウィンドウ間を移動nnoremap<C-h><C-w>hnnoremap<C-j><C-w>jnnoremap<C-k><C-w>knnoremap<C-l><C-w>l" Shift + 矢印でウィンドウサイズを変更nnoremap<S-Left><C-w><<CR>nnoremap<S-Right><C-w>><CR>nnoremap<S-Up><C-w>-<CR>nnoremap<S-Down><C-w>+<CR>" タブ間の移動nnoremap<C-n> gtnnoremap<C-p> gT" :e などでファイルを開く際にフォルダが存在しない場合は自動作成function! s:mkdir(dir, force)if!isdirectory(a:dir)&& (a:force ||
\ input(printf('"%s" does not exist. Create? [y/N]',a:dir))=~? '^y\%[es]$')call mkdir(iconv(a:dir,&encoding,&termencoding),'p')endifendfunction
autocmd MyAutoCmd BufWritePre * call s:mkdir(expand('<afile>:p:h'),v:cmdbang)" vim 起動時のみカレントディレクトリを開いたファイルの親ディレクトリに指定function! s:ChangeCurrentDir(directory, bang)ifa:directory==''lcd %:p:helse
execute 'lcd' . a:directoryendififa:bang ==''pwdendifendfunction
autocmd MyAutoCmd VimEnter * call s:ChangeCurrentDir('','')
vimプラグインの導入
vimプラグインの管理にはdein.vimを用います。
~$ mkdir -p ~/.vim/dein/repos/github.com/Shougo/
~$ git clone https://github.com/Shougo/dein.vim.git ~/.vim/dein/repos/github.com/Shougo/dein.vim
上記でgitから持ってきて
~$ vim
:call dein#install()
でインストールします。これによって下記のようにプラグインを簡単に入れることができます。
" *******************************************************" dein" *******************************************************if&compatiblesetnocompatibleendifsetruntimepath+=~/.vim/dein/repos/github.com/Shougo/dein.vimif dein#load_state(expand('~/.vim/dein'))call dein#begin(expand('~/.vim/dein'))call dein#add('Shougo/dein.vim')call dein#add('Shougo/neocomplete.vim')" vimの補完機能call dein#add('Shougo/neosnippet.vim')" vimのsnippet機能。:NeoSnippetEditで編集可能。call dein#add('Shougo/neosnippet-snippets')" 基本的なsnippetのセットcall dein#add('scrooloose/nerdtree')" ディレクトリをツリー表示できるcall dein#add('vim-syntastic/syntastic')" 構文チェック。linterは適宜追加。call dein#add('tpope/vim-fugitive.git')" vim内でgitを扱えるようにするcall dein#add('tpope/vim-surround')" 「テキストを囲うもの」の編集を行うcall dein#add('vim-scripts/YankRing.vim')" テキストコピーの履歴を順々に参照できる。<C-p>, <C-n>で循環。call dein#add('davidhalter/jedi-vim', {'on_ft': 'python'})" pythonの高機能な補完機能。call dein#end()call dein#save_state()endiffiletype plugin indent onsyntax enable" If you want to install not installed plugins on startup.if dein#check_install()call dein#install()endif
最終的なvimrcの設定
pythonの構文チェックではflake8
を用いるので、予めインストールしておきます。
conda install flake8
プラグインの設定等も合わせた最終的なvimrcの設定は以下の通りとなります。
""" release autogroup in MyAutoCmd
augroup MyAutoCmd
autocmd!
augroup END""" 表示関係sett_Co=256setbackground=darkcolorscheme hybridsyntaxonsetlist" 不可視文字の可視化setnumber" 行番号の表示setruler" カーソル位置が右下に表示されるsetwildmenu" コマンドライン補完が強力になるsetshowcmd" コマンドを画面の最下部に表示するsetwrap" 長いテキストの折り返しsettextwidth=0" 自動的に改行が入るのを無効化setcolorcolumn=80" その代わり80文字目にラインを入れるsetcursorline" その代わり80文字目にラインを入れる" 前時代的スクリーンベルを無効化sett_vb=setnovisualbellsetfoldmethod=indent " 折り畳みsetfoldlevel=100" ファイルを開くときに折り畳みをしない""" 編集関係setinfercase" 補完時に大文字小文字を区別しないsetvirtualedit=all" カーソルを文字が存在しない部分でも動けるようにするsethidden" バッファを閉じる代わりに隠す(Undo履歴を残すため)setswitchbuf=useopen " 新しく開く代わりにすでに開いてあるバッファを開くsetshowmatch" 対応する括弧などをハイライト表示するsetmatchtime=3" 対応括弧のハイライト表示を3秒にするsetautoindent" 改行時にインデントを引き継いで改行するsetshiftwidth=4" インデントにつかわれる空白の数auBufNewFile,BufRead *.yml setshiftwidth=2setsofttabstop=4" <Tab>押下時の空白数setexpandtab" <Tab>押下時に<Tab>ではなく、ホワイトスペースを挿入するsettabstop=4" <Tab>が対応する空白の数auBufNewFile,BufRead *.yml settabstop=2setshiftround" '<'や'>'でインデントする際に'shiftwidth'の倍数に丸めるsetnf=" インクリメント、デクリメントを10進数にする" 対応括弧に'<'と'>'のペアを追加setmatchpairs& matchpairs+=<:>" バックスペースでなんでも消せるようにするsetbackspace=indent,eol,start" クリップボードをデフォルトのレジスタとして指定。後にYankRingを使うので" 'unnamedplus'が存在しているかどうかで設定を分ける必要があるif has('unnamedplus')setclipboard& clipboard+=unnamedplus,unnamedelsesetclipboard& clipboard+=unnamedendif" Swapファイル, Backupファイルを全て無効化するsetnowritebackupsetnobackupsetnoswapfile""" 検索関係setignorecase" 大文字小文字を区別しないsetsmartcase" 検索文字に大文字がある場合は大文字小文字を区別setincsearch" インクリメンタルサーチsethlsearch" 検索マッチテキストをハイライト" バックスラッシュやクエスチョンを状況に合わせ自動的にエスケープ
cnoremap <expr>/ getcmdtype() == '/' ? '\/' : '/'
cnoremap <expr> ? getcmdtype()=='?' ? '\?' : '?'""" マクロおよびキー設定" ESCを二回押すことでハイライトを消す
nmap <silent><Esc><Esc> :nohlsearch<CR>" カーソル下の単語を * で検索vnoremap<silent> * "vy/\V<C-r>=substitute(escape(@v, '\/'), "\n",'\\n','g')<CR><CR>" 検索後にジャンプした際に検索単語を画面中央に持ってくるnnoremapn nzznnoremap N Nzznnoremap * *zznnoremap # #zznnoremapg* g*zznnoremapg# g#zz" j, k による移動を折り返されたテキストでも自然に振る舞うように変更nnoremapj gjnnoremapk gk" TABにて対応ペアにジャンプnnoremap<Tab> %vnoremap<Tab> %" [ と打ったら [] って入力されてしかも括弧の中にいる(以下同様)inoremap [ []<left>inoremap(()<left>inoremap { {}<left>" inoremap " ""<left>" inoremap ' ''<left>" Ctrl + hjkl でウィンドウ間を移動nnoremap<C-h><C-w>hnnoremap<C-j><C-w>jnnoremap<C-k><C-w>knnoremap<C-l><C-w>l" Shift + 矢印でウィンドウサイズを変更nnoremap<S-Left><C-w><<CR>nnoremap<S-Right><C-w>><CR>nnoremap<S-Up><C-w>-<CR>nnoremap<S-Down><C-w>+<CR>" タブ間の移動nnoremap<C-n> gtnnoremap<C-p> gT" :e などでファイルを開く際にフォルダが存在しない場合は自動作成function! s:mkdir(dir, force)if!isdirectory(a:dir)&& (a:force ||
\ input(printf('"%s" does not exist. Create? [y/N]',a:dir))=~? '^y\%[es]$')call mkdir(iconv(a:dir,&encoding,&termencoding),'p')endifendfunction
autocmd MyAutoCmd BufWritePre * call s:mkdir(expand('<afile>:p:h'),v:cmdbang)" vim 起動時のみカレントディレクトリを開いたファイルの親ディレクトリに指定function! s:ChangeCurrentDir(directory, bang)ifa:directory==''lcd %:p:helse
execute 'lcd' . a:directoryendififa:bang ==''pwdendifendfunction
autocmd MyAutoCmd VimEnter * call s:ChangeCurrentDir('','')" *******************************************************" dein" *******************************************************if&compatiblesetnocompatibleendifsetruntimepath+=~/.vim/dein/repos/github.com/Shougo/dein.vimif dein#load_state(expand('~/.vim/dein'))call dein#begin(expand('~/.vim/dein'))call dein#add('Shougo/dein.vim')call dein#add('Shougo/neocomplete.vim')" vimの補完機能call dein#add('Shougo/neosnippet.vim')" vimのsnippet機能。:NeoSnippetEditで編集可能。call dein#add('Shougo/neosnippet-snippets')" 基本的なsnippetのセットcall dein#add('scrooloose/nerdtree')" ディレクトリをツリー表示できるcall dein#add('vim-syntastic/syntastic')" 構文チェック。linterは適宜追加。call dein#add('tpope/vim-fugitive.git')" vim内でgitを扱えるようにするcall dein#add('tpope/vim-surround')" 「テキストを囲うもの」の編集を行うcall dein#add('vim-scripts/YankRing.vim')" テキストコピーの履歴を順々に参照できる。<C-p>, <C-n>で循環。call dein#add('davidhalter/jedi-vim', {'on_ft': 'python'})" pythonの高機能な補完機能。call dein#end()call dein#save_state()endiffiletype plugin indent onsyntax enable" If you want to install not installed plugins on startup.if dein#check_install()call dein#install()endif" *******************************************************" neocomplete" *******************************************************" Disable AutoComplPop.letg:acp_enableAtStartup =0" Use neocomplete.letg:neocomplete#enable_at_startup =1" Use smartcase.letg:neocomplete#enable_smart_case =1" Set minimum syntax keyword length.letg:neocomplete#sources#syntax#min_keyword_length =3" Plugin key-mappings.inoremap<expr><C-g> neocomplete#undo_completion()inoremap<expr><C-l> neocomplete#complete_common_string()" Recommended key-mappings." <CR>: close popup and save indent.inoremap<silent><CR><C-r>=<SID>my_cr_function()<CR>function! s:my_cr_function()return(pumvisible() ? "\<C-y>" : "") . "\<CR>"endfunction" <TAB>: completion.inoremap<expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"" <C-h>, <BS>: close popup and delete backword char.inoremap<expr><C-h> neocomplete#smart_close_popup()."\<C-h>"inoremap<expr><BS> neocomplete#smart_close_popup()."\<C-h>"" Enable omni completion.
autocmd FileType css setlocalomnifunc=csscomplete#CompleteCSS
autocmd FileType html,markdown setlocalomnifunc=htmlcomplete#CompleteTags
autocmd FileType javascript setlocalomnifunc=javascriptcomplete#CompleteJS
autocmd FileType xml setlocalomnifunc=xmlcomplete#CompleteTags" *******************************************************" neosnippet" *******************************************************" Plugin key-mappings.
imap <C-k><Plug>(neosnippet_expand_or_jump)smap<C-k><Plug>(neosnippet_expand_or_jump)
xmap <C-k><Plug>(neosnippet_expand_target)" SuperTab like snippets behavior."imap <expr><TAB>" \ pumvisible() ? "\<C-n>" :" \ neosnippet#expandable_or_jumpable() ?" \ "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"smap<expr><TAB> neosnippet#expandable_or_jumpable() ?
\ "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"" For conceal markers.if has('conceal')setconceallevel=2concealcursor=nivendif"set snippet file dirletg:neosnippet#snippets_directory='~/.vim/snippets'" *******************************************************" NERDTree" *******************************************************" ブックマーク初期表示letg:NERDTreeShowBookmarks=1"letg:NERDTreeChDirMode=2" windowサイズ設定letg:NERDTreeWinSize=20" 表示したくないファイル、ディレクトリletg:NERDTreeIgnore=['\.DS_Store$','\.swp$','\~$','\.so']nnoremap<silent><C-e> :NERDTreeToggle<CR>" vim起動時に常に表示" autocmd vimenter * NERDTree" NERDTreeだけが残る場合はvim終了
autocmd bufenter * if(winnr("$")==1&& exists("b:NERDTree")&& b:NERDTree.isTabTree())|q|endif" *******************************************************" syntastic" *******************************************************setstatusline+=%#warningmsg#setstatusline+=%{SyntasticStatuslineFlag()}setstatusline+=%*letg:syntastic_always_populate_loc_list =1letg:syntastic_auto_loc_list =1letg:syntastic_check_on_open =1letg:syntastic_check_on_wq =0letg:syntastic_python_checkers = ['flake8']letg:syntastic_python_flake8_args="--max-line-length=80"" *******************************************************" jedi" *******************************************************letg:jedi#popup_on_dot =0letg:jedi#popup_select_first =0letg:jedi#completions_command ="<S-Tab>"
autocmd FileType python setlocalcompleteopt-=preview