Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

社内で喋ったVim勉強会(知らなそうなコマンドとかpluginについて)

$
0
0

社内でVimの勉強会を実施したのでQiitaTeamには投稿していましたが、別にPrivateな内容でもないのでこっちにも投稿しておきます。

尚、plugin周りは大幅に追記しています。(社内の人すまんね)

別に特殊なことはやってないけど、オレのvimrc晒しておきます。

基礎編

最初に

$ vimtutor
  • vimの基本的な操作はこれで多分事足りる

基本編

移動系とか

パッと思いついたやつ書いておきます

コマンドなに?
ctrl + fページ送り
ctrl + d半ページ送り
ctrl + bページ戻り
ctrl + uページ半戻り
w単語分進む
b単語分戻る
ggファイルの一番上へ
Gファイルの一番下へ
g:前に変更した場所に飛ぶ
diwカーソル上の単語消す
ditカーソル上のタグの中を消す
di""で囲まれた中を消す
ciwカーソル上の単語消して、insertモードになる
:set pasteいい感じにコピペできる
vで範囲選択 -> =ガタガタの見た目がいい感じになる
ctrl + v で範囲選択 -> shift + iの後に#指定された場所に#が入る(先頭にコメントいれる)

vimrcに書いたらいい感じになりそうなもの

.vimrcなに?
set incsearchインクリメンタルサーチを有効に
nmap :nohlsearchEscの2回押しでハイライト消去
set pastetoggle=ctrl + eでset pasteを有効/無効にする
set scrolloff=nスクロールするときに上下に余白を入れる
inoremap jj jjって押すとESC押したことにする
nnoremap 0 :call append(expand('.'), '')j0を入れると改行する(ノーマルモード時)
set laststatus=2
hi StatusLine ctermfg=White ctermbg=Blue cterm=none
au InsertEnter * hi StatusLine ctermfg=Black ctermbg=yellow cterm=none
au InsertLeave * hi StatusLine ctermfg=White ctermbg=Blue cterm=none
ステータスラインの色をinsertモードとかで変える

プラグイン

プラグインなに?
Shougo/neobundleプラグインを管理するプラグイン
Shougo/neocomplcache.vim入力補完機能
unite.vimファイル操作がお手軽に
NERDTreeIDEみたいなファイラー(Shougo/Vimfilerも同じ感じ?)
vim-powerline見た目がカッコよくなる
rking/ag.vimvim上からagコマンドを使って高速検索
kien/ctrlp.vim開きたいファイルの絞込に使う
thinca/vim-quickrunvim上からスクリプトを実行できる
vim-railsVim On Rails · Pablo Acuña
szw/vim-tagsctag

unite.vimについて補足

" バッファ一覧
nnoremap <silent> ub :<C-u>Unite buffer<CR>
" 今開いてるフォルダの一覧ファイルを表示
nnoremap <silent> uf :<C-u>UniteWithBufferDir -buffer-name=files file<CR>
" 最近使用したファイル一覧
nnoremap <silent> um :<C-u>Unite file_mru<CR>

"バッファ操作
nnoremap <C-m><C-n> :bn<CR>
nnoremap <C-m><C-p> :bp<CR>
nnoremap <C-m><C-b> <C-^>

開きたいファイルを探すときにめちゃくちゃ便利。

バッファ操作で1個前に開いてたファイルに戻りたいとかめちゃくちゃあるので…

rking/ag.vim

" ag
nmap <Space><Space> :Ag <c-r>=expand("<cword>")<cr><cr>
nnoremap <space>/ :Ag 

" quickrun
let g:quickrun_config = {
    \   "_" : {
    \       "outputter/buffer/split" : ":botright 8sp",
    \       "outputter/buffer/close_on_empty" : 1
    \   },
    \}

au FileType qf nnoremap <silent><buffer>q :quit<CR>

space + / でagコマンドがvim上で叩ける。grepよりもめちゃくちゃ速い

quickrunと組み合わせるといい感じに表示される

ctrlp.vim

"let g:ctrlp_clear_cache_on_exit = 0
let g:ctrlp_max_height          = 20
let g:ctrlp_user_command = 'ag %s -l'

let g:ctrlp_use_caching = 0
if executable('ag')
    set grepprg=ag\ --nogroup\ --nocolor

    let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""'
else
  let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files . -co --exclude-standard', 'find %s -type f']
  let g:ctrlp_prompt_mappings = {
    \ 'AcceptSelection("e")': ['<space>', '<cr>', '<2-LeftMouse>'],
    \ }
endif

ctrl + pでファイルの絞込検索ができるが、毎回キャッシュが消えるので起動の度に時間かかるのが難点だった。

ctrlp_clear_cache_on_exit = 0を設定すると早くなるがキャッシュを再生成しないとダメで、F5で再生成すると何故かオレの環境でバグるという悲しみ…

調べたらAgコマンドで高速にできた!プロジェクトの規模によるだろうが、体感1秒もかからない。

szw/vim-tags

ctagをいい感じにしてくれる。

:TagsGenerateで自動生成してくれる。ctrl + ] で飛べる

brew install ctags

# .gitignoreに入ってないので追加する or 自分の環境だけであればexcludeに入れる
cat >> .git/info/exclude << "EOF"
Gemfile.lock.tags
tags
EOF
" ctag
let g:vim_tags_project_tags_command = "ctags -f tags -R . 2>/dev/null"
let g:vim_tags_gems_tags_command = "ctags -R -f Gemfile.lock.tags `bundle show --paths` 2>/dev/null"
set tags+=tags,Gemfile.lock.tags
nnoremap <C-]> g<C-]>

リンク


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>