Vim2 Advent Calendar 2017 15日目の記事です.
TL;DR
- Vimをはじめたいと相談された時,挫折させてしまうことが多い
- 一体何がいけないのか()*1
- いきなり色々説明するからや!段階的に情報が集まったポインタが欲しい!
- ということで,Vimの設定について聞かれたときに紹介しているものをまとめてみました.
基本的な使い方(1) | vimtutor, vimdoc |
基本的な使い方(2) | Vim Mnemonic | Vim のコマンドの覚え方大全 - haya14busa |
基本的な使い方(3) | 『実践Vim』を読んで学んだ、おすすめVimデフォルト機能35個 - MyEnigma |
vimrcの書き方 | vimrc基礎文法最速マスター - 永遠に未完成 |
vimscriptの書き方 | Vimスクリプト基礎文法最速マスター - 永遠に未完成 |
キーマップについて | vimでキーマッピングする際に考えたほうがいいこと - derisの日記 |
正規表現 | Vimでパターン検索するなら知っておいたほうがいいこと - derisの日記 |
プラグインマネージャ | dein.vim |
プラグイン(検索) | Vim Awesome |
プラグイン(例) | Vim After 15 Years | Ian Langworth’s Things of Variable Interest |
プラグイン(文法) | Vimスクリプト基礎文法最速マスター - 永遠に未完成 |
vimrc分割 | vimrc分割した - 藻ログ |
設定がしんどい人 | spacevim,他のエディタ,IDE |
寄付 | Vim起動時に出てくるウガンダへの寄付を行う手順 - 今日学んだこと |
Vim以外を勧める
それでもVimがいい
わかる
Vimの基本的な使い方
コマンドの覚え方
Vimはコマンドが直感的にも覚えやすいと感じています.
haya14busa.com
お本
実践Vimはプラグインでなく,Vimデフォルト機能の解説が中心なのでこれから始める人には良いと思います.
- 作者: DrewNeil,新丈径
- 出版社/メーカー: KADOKAWA / アスキー・メディアワークス
- 発売日: 2014/01/28
- メディア: Kindle版
- この商品を含むブログ (4件) を見る
Vimいいですね!
その調子だ
タブ開いたりウィンドウ分割したりしたい
:tabe(dit) ${file} | 新しいタブで開く |
:vs(plit) ${file} | 縦分割で開く |
:sp(lit) ${file} | 横分割で開く |
プラグインなしの最小vimrcが欲しい
最低限ですが,こういうのはどうでしょうか.
" :h ${option} to read the vimdoc. " syntax syntax on " line number set number set cursorline " backup set nobackup set noswapfile " buffer set hidden set confirm " tab complete set wildmenu " search set hlsearch set ignorecase set smartcase set wrapscan set incsearch " {} set showmatch inoremap { {}<left> inoremap ( ()<left> inoremap [ []<left> inoremap " ""<left> inoremap ' ''<left>
mapping 等も含めて,公開してくださっているものもあります ↓
deris.hatenablog.jp
↑ vimrc の読み方がわからん
:h wildmenu
などとすると,vimdoc でヘルプが閲覧できます.
vimrc 基本文法を最速でマスターできる記事があるので,まずこちらに一通り目を通すのがいいかもしれないです.
thinca.hatenablog.com
Escとかデフォルトのキーマップがつらい
Esc キーの割り当てやtab, 分割ウィンドウの操作あたりからmapするのはどうでしょう.
:map
すると今当たってるマッピングが確認できます.
"<esc> -> jj inoremap jj <esc> " tab nnoremap <Tab><right> gt nnoremap <Tab><left> gT " window-tab-mappings nnoremap ss <C-w>w nnoremap sj <C-w>j nnoremap sk <C-w>k nnoremap sl <C-w>l nnoremap sh <C-w>h " move Ctrl-h,j,k,l, in insert mode inoremap <C-h> <Left> inoremap <C-j> <Down> inoremap <C-k> <Up> inoremap <C-l> <Right>
特定のファイルを開いた時の挙動を設定したい
au(tocmd)
を使うと良い.ファイルだけでなく,バッファなどに対しても設定できるのでとても便利です.
詳しい使い方は :h au
すると大体わかります.
vimrc基礎文法最速マスター - 永遠に未完成
でも解説されています.
augroup MyAugroup au! au FileType vim setlocal keywordprg=:help au FileType help,quickfix,quickrun,gf nnoremap <buffer> q <C-w>c au BufRead,BufNewFile *.cu,*.cuh setlocal filetype=cpp au BufRead,BufNewFile *.log filetype=messages au FileType tex setlocal spelllang+=cjk au FileType tex setlocal spell augroup END
Kコマンド
vimからヘルプドキュメントを呼び出すにはKコマンドが便利です.
例えば
aug MyAugroup au! au FileType vim setlocal keywordprg=:help au FileType sh setlocal keywordprg=:Man aug END
とすれば,
- vimrc, vimscriptで
K
をタイプするとカーソル以下の単語に対して:help ${word}
する - shell script で
K
をタイプするとカーソル以下の単語に対してman
を呼び出す
ようにできます.他の言語でも同様に,Kを押したときにinvokeするコマンドを設定することができます.詳しくは:h K
を見て下さい
*K* [count]K Run a program to lookup the keyword under the cursor. The name of the program is given with the 'keywordprg' (kp) option (default is "man"). 'keywordprg' 'kp' string (default ":Man", Windows: ":help") global or local to buffer |global-local| Program to use for the |K| command. Environment variables are expanded |:set_env|. ":help" may be used to access the Vim internal help. (Note that previously setting the global option to the empty value did this, which is now deprecated.) When the first character is ":", the command is invoked as a Vim command prefixed with [count]. {Nvim} When "man" or "man -s" is used, Vim will automatically translate a [count] for the "K" command to a section number. See |option-backslash| about including spaces and backslashes. Example: > :set keywordprg=man\ -s :set keywordprg=:Man
正規表現
最初うまくエスケープできなくて難しいので,以下を参考にすると良いです
deris.hatenablog.jp
プラグインを使いたい
Vimには 沢山のプラグインマネージャ があります.
プラグインを探したい
vim公式もいいのですが,VimAwesome の方が数が多い(GitHubにあがっている分が網羅されている)です.
vimawesome.com
また,以下サイトでは最近のおすすめプラグインがまとめられています*7
statico.github.io
プラグイン,最初の一個
... には何を勧めるべきなのだろうか..
自分は powerline を勧められて,おおっインサートモードが青く光ってかっこいい... となった記憶がある()
今は lightline を使っています.
github.com
Git連携
fugitive.vim
を使っています.
wakame.hatenablog.jp
vim-gitgutter も便利そう
github.com
コードリーディング
incsearch, gtags(or ctags), grep 系を設定すると良いと思います.
wakame.hatenablog.jp
wakame.hatenablog.jp
unite/denite を使わないパターンとして,Vim After 15 Years | Ian Langworth’s Things of Variable Interest も参考になると思います.
Lint
同期式だとコード書いてる途中にブロックしてしまいますが,今は非同期で動作する ale.vim があります.
wonderwall.hatenablog.com
コード中を高速に移動したい
easymotion を使っている人をよく見かけます.
haya14busa.com
vimrcが肥大化してきた
その調子だ
vimrc分割したい
デフォルトの機能を使って簡単に分割できます.
wakame.hatenablog.jp
neovim ってどうなのか
github.com
neovim 良いです.自分はnvim をメインに使っています.ただサーバーで作業するときに入ってないのでそこは... *8
vimとの設定ファイルは has('nvim')
フラグを用いてVimと共通化できますが,自分は完全に分離してしまっています.
wakame.hatenablog.jp
そして...
今回紹介しきれなかった,たくさんの基本機能,tips,プラグインがあります.
Vim Advent Calendar
色んな方がtipsを書かれていてとても参考になります.特に2012年は365日やっているのでとても読み応えがあります.
d.hatena.ne.jp
vimrc読書会
vimrcは読み物だった(!)
vim-jp.org
アンチパターンが以下にまとめられていて,とても参考になります
rbtnn.hateblo.jp
Vimがとても好きになった
寄付をすると良いと聞きました.
nakazye.hatenablog.com