読者です 読者をやめる 読者になる 読者になる

Sinatraのあらかると

記録することで、環境構築で悩まない。

deinでVimのプラギン管理。

環境

Windows10

kaoriya Vim 64bit (7.4.1944)

NeoBundleからdeinに移行することを思い当たって、1からVim環境を作り治した。(もちろん、NeoBundleに戻れるようにバックアップをとって→しかしもう必要ない)

※ $はコマンドに含めない

$ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh

$ sh ./installer.sh {インストール先ディレクトリ}{}は含めない

installer.shというファイルが実行したディレクトリに追加される。さぁ、deinを始めよう。

みているとdein/bin/にinstaller.shが存在するから消してもいいと判断した。rm -rf installer.shでファイルを消した(慎重に熟考)。

.vimrcにはこうやって書いている。.cacheにまとめるのが通例らしいが私は.vimにまとめた→フォルダを乱雑にしたくないため。

.vimrcファイルには、dein.tomlとdein_lazy.tomlを読み込むようにしている。

さらに足りない部分は、.gvimrcに追加している。

※$HOME→ユーザディレクトリ(例 C:\Users\ユーザ名)

・.vimrc → $HOME/

・.gvimrc → $HOME/

・dein.toml → mkdir $HOME/.vim/rc → $HOME/.vim/rc/dein.toml(保存場所)

・dein_lazy.toml → $HOME.vim/rc/dein_lazy.toml(保存場所)

つまり、4つの設定ファイルを使ってVimを支えるよう設定。

指摘があったので、修正しました。

① .vimrc

if &compatible
  set nocompatible
endif

" reset augroup
augroup MyAutoCmd
  autocmd!
augroup END

" dein settings {{{

let s:cache_home = empty($XDG_CACHE_HOME) ? expand('~/.vim') : $XDG_CACHE_HOME
let s:dein_dir = s:cache_home . '/dein'
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'
if !isdirectory(s:dein_repo_dir)
  call system('git clone https://github.com/Shougo/dein.vim ' . shellescape(s:dein_repo_dir))
endif
let &runtimepath = s:dein_repo_dir .",". &runtimepath

if dein#load_state(s:dein_dir)

  let g:rc_dir    = expand('~/.vim/rc')
  let s:toml      = g:rc_dir . '/dein.toml'
  let s:lazy_toml = g:rc_dir . '/dein_lazy.toml'
  call dein#load_toml(s:toml,      {'lazy': 0})
  call dein#load_toml(s:lazy_toml, {'lazy': 1})
  
  call dein#begin(s:dein_dir)
  cd $HOME/Documents
  call dein#add('scrooloose/nerdtree')
  autocmd VimEnter * execute 'NERDTree'
  
  call dein#end()
  call dein#save_state()
  
if dein#check_install()
  call dein#install()
endif

endif

let g:precious_enable_switch_CursorMoved = { '*': 0, 'help': 1 }
autocmd MyAutoCmd InsertEnter * :PreciousSwitch
autocmd MyAutoCmd InsertLeave * :PreciousReset

"-------------------------------------------------------------------------------
" neocomplete
"-------------------------------------------------------------------------------
let g:acp_enableAtStartup = 0
let g:neocomplete#enable_at_startup = 1
let g:neocomplete#sources#omni#input_patterns = {
\   "ruby" : '[^. *\t]\.\w*\|\h\w*::',
\ }

let g:neocomplete#keyword_patterns = {}
let g:neocomplete#keyword_patterns['gosh-repl'] = "[[:alpha:]+*/@$_=.!?-][[:alnum:]+*/@$_:=.!?-]*"
vmap <CR> <Plug>(gosh_repl_send_block)

" Use neocomplete.vim
let g:neocomplete#sources#omni#input_patterns = {
\   "ruby" : '[^. *\t]\.\w*\|\h\w*::',
\}

" Set async completion.
let g:monster#completion#rcodetools#backend = "async_rct_complete"

" With neocomplete.vim
let g:neocomplete#sources#omni#input_patterns = {
\   "ruby" : '[^. *\t]\.\w*\|\h\w*::',
\}

" With deoplete.nvim
let g:monster#completion#rcodetools#backend = "async_rct_complete"
let g:deoplete#sources#omni#input_patterns = {
\   "ruby" : '[^. *\t]\.\w*\|\h\w*::',
\}

call dein#clear_state()

② dein.toml

[[plugins]]
repo = 'Shougo/dein.vim'

[[plugins]]
repo = 'Shougo/vimproc.vim'
hook_post_update = '''
  if dein#util#_is_windows()
    let cmd = 'tools\\update-dll-mingw'
  elseif dein#util#_is_cygwin()
    let cmd = 'make -f make_cygwin.mak'
  elseif executable('gmake')
    let cmd = 'gmake'
  else
    let cmd = 'make'
  endif
  let g:dein#plugin.build = cmd
'''

[[plugins]]
repo = 'delphinus35/typescript-vim'
rev  = 'colorize-template-strings'

[[plugins]]
repo = 'elzr/vim-json'
if   = '''! has('kaoriya')'''

[[plugins]]
repo    = 'vim-airline/vim-airline'
depends = ['vim-airline-themes']

[[plugins]]
repo = 'vim-airline/vim-airline-themes'

[[plugins]]
repo = 'osyo-manga/vim-precious'
depends = ['context_filetype.vim']

[[plugins]]
repo = 'Shougo/context_filetype.vim'

[[plugins]] # toml syntax
repo = 'cespare/vim-toml'
on_ft = 'toml'

[[plugins]] # カラースキーマ
repo = 'w0ng/vim-hybrid'
hook_add = '''
  set background=dark
  au MyAutoCmd VimEnter * nested colorscheme hybrid
'''

[[plugins]]
repo = 'scrooloose/syntastic.git'

[[plugins]]
repo = 'astashov/vim-ruby-debugger'

[[plugins]]
repo = 'thinca/vim-ref'

③ dein_lazy.toml

[[plugins]]
repo  = 'Quramy/tsuquyomi'
on_ft = ['typescript']

[[plugins]]
repo = 'Shougo/neocomplete.vim'
on_i = 1

[[plugins]]
repo = 'Shougo/deoplete.nvim'
if = 'has("nvim")'
on_i = 1

[[plugins]]
repo = 'davidhalter/jedi-vim'
on_ft = 'python'

[[plugins]]
repo   = 'Shougo/unite.vim'
depends = 'neomru.vim'

[[plugins]]
repo      = 'Shougo/neomru.vim'
on_source = ['unite.vim']
on_path = '.*'

[[plugins]]
repo = 'jiangmiao/auto-pairs'
on_i = 1

[[plugins]]
repo = 'Shougo/neoyank.vim'
on_path = '.*'
on_i = 1

[[plugins]]
repo      = 'thinca/vim-prettyprint'
on_cmd    = ['PP', 'PrettyPrint']

[[plugins]]
repo   = 'thinca/vim-fontzoom'
on_cmd = ['Fontzoom']
on_map = ['<Plug>(fontzoom-']
gui    = 1

[[plugins]]
repo = 'Shougo/neosnippet.vim'
depends = ['neosnippet-snippets']
on_i = 1
on_ft = ['snippet']

[[plugins]]
repo = 'Shougo/neosnippet-snippets'

[[plugins]]
repo = 'osyo-manga/vim-monster'

[[plugins]]
repo = 'Shougo/vimshell'
rev = '3787e5'

[[plugins]]
repo = 'croaker/mustang-vim'

[[plugins]]
repo = 'thinca/vim-quickrun'

[[plugins]]
repo = 'ervandew/supertab'

[[plugins]]
description = 'F# support for Vim'
repo = 'fsharp/vim-fsharp'
lazy = 1
on_ft = 'fsharp'
build = 'make fsautocomplete'

[[plugins]]
repo = 'tyru/open-browser.vim'
on_map = ['<Plug>(openbrowser-smart-search)']

④ .gvimrc

set guioptions-=T

set lines=90

set columns=150

set splitbelow

set nobackup

set noundofile

set noswapfile

syntax enable
set number

set background=dark

set splitbelow

set wildmenu

set wildmode=list:full 

autocmd GUIEnter * set transparency=210

vimproc.vimについて

vimproc_win64.dll not found.

もし、こんなVimで入力補完時に流れるエラーメッセージがあったら、

コマンドプロンプトを起動しvimproc.vim/に移動、

make -f make_mingw64.mak

を実行すると、/libにvimproc_win64.dllができているはずでこれを、.vim/dein/.dein/libにコピーするとエラーは言わなくなる。.vimのところは人によっては.cacheかもしれない。

ざっくばらんに書いていったが、deinに変更はできている。NeoVimではなくVimのdeinプラグイン管理記事。

参考になれば、私の時間も無駄にならない。

追記 : たまには、コーヒーブレイクでもしませんか。

ダウンロード先

github.com

追記 : この場で例にしているソースは、ユーザ定義補完がうまく動作していません。どうやらスニペットが強く動いているようです。ダウンロード先のファイルで、RSenseとvim-monsterに対応しているソースを公開しています。どちらを利用しているかによりますが、環境にあった例をみて、設定ファイルを作成していくのがよろしいかと更新しました。どうぞ、ご覧くださいませ。※美夢王さんが、Twitterでよく話に付き合ってくれたので、記事として公開しようと試みた行動結果です。人の思いを無駄にせず、いいとこ取りをしていけば、すばらしいVimまたはNeoVimに会えるのではないかと期待してます。ぼくがつくりあげた最強のVim、ほんとうにできるかもしれませんね...それだけのプラギンがVimには開発者がいてそろっているのが素晴らしいところ。

プラギンを更新するには

:call dein#update()

です、よしなに。

Copyright © 2007-2017 Takayuki Kamiyama. All Rights Reserved.