前提条件
- MacOS ElCapitan 10.11.6
- vim8.0
- homebrew
- ctags
- iTerm2
今回の作業
ここまでで入れたプラグインの設定
手順
ctagsを設定
deinじゃないけどw
設定しておかないと、vimrcに設定したものが正しいか判断できないので
ctagsはhomebrewでいれておく
設定ファイルを作成
$ vi .ctags
--append=yes
--recurse=yes
--html-kinds=af
--php-kinds=cfd
--sh-kinds=f
appendsはファイルが存在するとき追加するか?recurseはctags -Rと同じ効果。
設定できる言語はctagsのマニュアルに書いてある
tag作成
タグファイルのディレクトリをまとめたいので、ディレクトリを作っておく
今回はPHPファイルが入ってるディレクトリを対象に作ります
$ mkdir .tags
$ cd (タグを作りたいプロジェクトのディレクトリ。)
$ ctags -f ~/.tags/php.tags `pwd`
またはファイルをvimで開いたままでtagを追加(vim-tagsがここで役に立つ)
:TagsGenerate
したら、.tags/php.tagsに書き出される。
いたってシンプル。
vimrcの設定
インストール済みのプラグイン関連の設定 + プラグイン関係なく必要な設定を。
- neosnippet
- neocomplete
- NERDTree
- syntastic
- tagbar
- vim-tags
" *******************************************************
" 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')
set conceallevel=2 concealcursor=niv
endif
" *******************************************************
" neocomplete
" *******************************************************
" Disable AutoComplPop.
let g:acp_enableAtStartup = 0
" Use neocomplete.
let g:neocomplete#enable_at_startup = 1
" Use smartcase.
let g:neocomplete#enable_smart_case = 1
" Set minimum syntax keyword length.
let g:neocomplete#sources#syntax#min_keyword_length = 3
" Define dictionary.
let g:neocomplete#sources#dictionary#dictionaries = {
\ 'default' : '',
\ 'vimshell' : $HOME.'/.vimshell_hist',
\ 'scheme' : $HOME.'/.gosh_completions'
\ }
" Define keyword.
if !exists('g:neocomplete#keyword_patterns')
let g:neocomplete#keyword_patterns = {}
endif
let g:neocomplete#keyword_patterns['default'] = '\h\w*'
" 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 setlocal omnifunc=csscomplete#CompleteCSS
autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags
" *******************************************************
" NERDTree
" *******************************************************
" ブックマーク初期表示
let g:NERDTreeShowBookmarks=1
"
let g:NERDTreeChDirMode=2
" windowサイズ設定
let g:NERDTreeWinSize=20
" 表示したくないファイル、ディレクトリ
let g:NERDTreeIgnore=['\.DS_Store$', '\.swp$', '\~$', '\.so']
" vim起動時に常に表示
autocmd vimenter * NERDTree
" NERDTreeだけが残る場合はvim終了
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
" *******************************************************
" syntastic
" *******************************************************
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
let g:syntastic_javascript_checkers=['eslint']
let g:syntastic_scss_checkers = ['scss_lint']
let g:syntastic_php_checkers = ['php', 'phpcs', 'phpmd']
" *******************************************************
" tagbar
" *******************************************************
" windowサイズ
let g:tagbar_width=20
" 起動時に常に表示
autocmd vimenter *.php TagbarOpen
" *******************************************************
" vim-tags
" *******************************************************
let g:vim_tags_project_tags_command = "/usr/local/Cellar/ctags/5.8_1/bin/ctags -f .tags -R . 2>/dev/null"
let g:vim_tags_auto_generate = 1
" *******************************************************
" ctags
" *******************************************************
" phpファイル用tags
au BufNewFile,BufRead *.php set tags+=$HOME/.tags/php.tag
コメント入れてないところは、ほぼ本家のコピペ
NERDTreeを入れて
set mouse=a
の設定をしていると、iTerm2でこれまでcommand+Cでコピーできていたはずができない・・・
iTermの「Applications in terminal may access clipboard」をオフにするとNERDTreeのウィンドウまでコピーするw
set clipboard=unnamed,autoselect
の設定でvimmerお馴染みのヤンクしたテキストがクリップボードにコピー
autoselectがビジュアルモードで選択したテキストがクリップボードにコピーされる
ちょっと長くなってきたので、次へ続く