About-vim-settings

9. vim各種プラグイン

  • vim各種プラグイン

    x vundle : プラグイン管理
    x neocomplcache : 単語補完機能
    x vim-ref : マニュアル参照機能
    n quickrun : vimからソースコード実行、これは不要か
    n rails.vim : vimからrails用コマンド実行、これも不要か

まずはvundle導入

1
$ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

.vimrc を編集

1
$ vim ~/.vimrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
"viとの互換性OFF
set nocompatible
"ファイル形式の検出を無効にする
filetype off

"Vundleを初期化して
"Vundle自身もVundleで管理
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Bundle 'gmarik/vundle'

"プラグイン各種
Bundle 'Shougo/neocomplcache'
Bundle 'thinca/vim-ref'
"Bundle 'thinca/vim-quickrun'
"Bundle 'tpope/vim-rails' "rails.vim

"ファイル形式検出、プラグイン、インデントをON
filetype plugin indent on

プラグイン各種のインストールを行う

:BundleInstall

インストールは以上で終了、引き続き設定を行う


9-1. neocomplcache設定

設定ファイル(~/.vim/bundle/neocomplcache/doc/neocomplcache.txt)よりコピペ 以下の記述を.vimrcへ追加する

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
----------------------------------------
"*** for neocomplcache ***
" Disable AutoComplPop.
let g:acp_enableAtStartup = 0
" Use neocomplcache.
let g:neocomplcache_enable_at_startup = 1
" Use smartcase.
let g:neocomplcache_enable_smart_case = 1
" Use camel case completion.
let g:neocomplcache_enable_camel_case_completion = 1
" Use underbar completion.
let g:neocomplcache_enable_underbar_completion = 1
" Set minimum syntax keyword length.
let g:neocomplcache_min_syntax_length = 3
let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*'

" Define dictionary.
let g:neocomplcache_dictionary_filetype_lists = {
    \ 'default' : '',
    \ 'vimshell' : $HOME.'/.vimshell_hist',
    \ 'scheme' : $HOME.'/.gosh_completions'
        \ }

" Define keyword.
if !exists('g:neocomplcache_keyword_patterns')
    let g:neocomplcache_keyword_patterns = {}
endif
let g:neocomplcache_keyword_patterns['default'] = '\h\w*'

" Plugin key-mappings.
inoremap <expr><C-g>     neocomplcache#undo_completion()
inoremap <expr><C-l>     neocomplcache#complete_common_string()

" Recommended key-mappings.
" <CR>: close popup and save indent.
inoremap <expr><CR>  neocomplcache#close_popup() . "\<CR>"
" <TAB>: completion.
inoremap <expr><TAB>  pumvisible() ? "\<C-n>" : "\<TAB>"
" <C-h>, <BS>: close popup and delete backword char.
inoremap <expr><C-h> neocomplcache#smart_close_popup()."\<C-h>"
inoremap <expr><BS> neocomplcache#smart_close_popup()."\<C-h>"
inoremap <expr><C-y>  neocomplcache#close_popup()
inoremap <expr><C-e>  neocomplcache#cancel_popup()

" For cursor moving in insert mode(Not recommended)
"inoremap <expr><Left>  neocomplcache#close_popup() . "\<Left>"
"inoremap <expr><Right> neocomplcache#close_popup() . "\<Right>"
"inoremap <expr><Up>    neocomplcache#close_popup() . "\<Up>"
"inoremap <expr><Down>  neocomplcache#close_popup() . "\<Down>"
" Or set this.
"let g:neocomplcache_enable_cursor_hold_i = 1

"*** for neocomplcache ***
function InsertTabWrapper()
  if pumvisible()
    return "\<c-n>"
  endif
  let col = col('.') - 1
  if !col || getline('.')[col - 1] !~ '\k\|<\|/'
    return "\<tab>"
  elseif exists('&omnifunc') && &omnifunc == ''
    return "\<c-n>"
  else
    return "\<c-x>\<c-o>"
  endif
endfunction
inoremap <tab> <c-r>=InsertTabWrapper()<cr>

9-2. vim-ref設定

vimでw3mのPATHを通すため、以下の記述を.vimrcへ追加する

1
let $PATH = $PATH . ':/usr/bin/w3m'

vim上で「:echo $PATH」として、vimでw3mのPATHが通っているか確認する 次にrubyリファレンスの取得と展開を行う

1
2
3
4
$ cd ~/Documents/Reference
$ wget http://doc.okkez.net/archives/201106/ruby-refm-1.9.2-dynamic-20110629.tar.gz
$ tar zxvf ruby-refm-1.9.2-dynamic-20110629.tar.gz
$ mv ruby-refm-1.9.2-dynamic-20110629 rubyrefm

refeファイル(コマンド)を作成する

1
$ vim /usr/local/bin/refe
1
2
3
#!/bin/sh

exec ruby -Ke -I ~/Documents/Reference/rubyrefm/bitclust/lib ~/Documents/Reference/rubyrefm/bitclust/bin/refe.rb -d ~/Documents/Reference/rubyrefm/db-1_9_2 "$@"

refeファイル(コマンド)のパーミッションを変更する

1
$ sudo chmod 755 /usr/local/bin/refe

以上でrubyのマニュアルを引きことが可能となる

参考:
http://d.hatena.ne.jp/holypp/20110703/1309711799 http://d.hatena.ne.jp/holypp/20110515/1305443997 http://d.hatena.ne.jp/diffshare/20111118/1321606902 http://iiidevelop.blogspot.jp/2011/07/vimvundle.html http://slumbers99.blogspot.jp/2012/02/vim-vundle.html http://blog.blueblack.net/item_133
http://masterka.seesaa.net/article/161781923.html


vim設定補追(2013/08/02)

上記プラグイン関連の設定以外の設定を以下に記す。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
"行番号設定
set number

"タブ文字、行末など不可視文字を表示する
set list

"インクリメンタルサーチON
set incsearch

"閉じ括弧が入力されたとき、対応する括弧を表示する
set showmatch

"検索時に大文字を含んでいたら大/小を区別
set smartcase

"シフト移動幅
set shiftwidth=2

"Insertモードで: <Tab> を挿入するのに、適切な数の空白を使う
set expandtab

"新しい行を作ったときに高度な自動インデントを行う
set smartindent

"行頭の余白内で Tab を打ち込むと、'shiftwidth' の数だけインデントする
set smarttab

"ファイル内の <Tab> が対応する空白の数
"set tabstop=4

"カーソルを行頭、行末で止まらないようにする
"set whichwrap=b,s,h,l,<,>,[,]

"検索をファイルの先頭へループしない
set nowrapscan

"色設定ON
syntax on
set background=dark

"日本語全角記号を全角として扱うよう設定
set ambiwidth=double