これは一番最初に覚えます
キー | 動作 |
---|---|
h | ← |
j | ↓ |
k | ↑ |
l | → |
ここら辺は初級レベルです。
キー | 動作 |
---|---|
w | 単語の先頭へ進む |
b | 単語の先頭へ戻る |
0 | 行の先頭へ |
$ | 行の末尾へ |
<CR> | 次行にある最初の非空白文字へ |
<C-f> | 次ページへ |
<C-b> | 前ページへ |
gg | 文書の先頭行へ(最初の非空白文字) |
G | 文書の最終行へ(最初の非空白文字) |
I | 行内最初の非空白文字でインサートモードとなる |
A | 行末でインサートモードとなる |
* | カーソル下の単語を後方検索 |
# | カーソル下の単語を前方検索 |
n | 検索を進める |
N | 検索を戻る |
% | 括弧間の移動 |
*
や#
は単語検索となるので部分一致で検索したい場合は/[keyword]
としよう。
Ex:ススメを
*
で検索してもヤマノススメは検索に引っかからない。
オススメの設定
" matchit {{{
source $VIMRUNTIME/macros/matchit.vim
let b:match_ignorecase = 1
" }}}
nmap <Tab> %
vmap <Tab> %
if
/end
なども%
で移動できるようになるmatchit
の読み込みです。
個人的に%
が押しづらいため<Tab>
にも割り当ています。
中級
キー | 動作 |
---|---|
<C-d> | 半ページ次へ |
<C-u> | 半ページ前へ |
'{a-zA-Z} | m{a-zA-Z}でマークしたポジションへジャンプ |
gi | 最後に編集した位置でインサートモードとなる |
ge | 単語の末尾へ |
W | 単語の先頭へ進む(_:.などで繋がっているものも単語と見なす*1) |
B | 単語の先頭に戻る(*1) |
E | 単語の末尾へ(*1) |
gE | 単語の末尾に戻る(*1) |
f{*} | 行の末尾に向かってキーを検索 |
F{*} | 行の先頭に向かってキーを検索 |
t{*} | 行の末尾に向かってキーを検索(カーソルが検索文字の手前*2) |
T{*} | 行の先頭に向かってキーを検索(*2) |
; | 先頭に向かって繰り返して検索 |
, | 末尾に向かって繰り返して検索 |
<C-o> | ジャンプした部分に戻る |
<C-i> | ジャンプした部分に戻る |
g; | 変更履歴に戻る |
g, | 変更履歴に進む |
半ページ次へとか半ページ前へはあまり使ってないけど...
g,
は私の設定上qfixhowmと競合していて使えないです。
というより変更履歴はgundoを使うので必要ないです。
f
やt
はこの後述するEasyMotion
がNOTります。
プラグインを使う
NeoBundle 'Lokaltog/vim-easymotion'
" vim-easymotion {{{
let g:EasyMotion_do_mapping = 0
nmap s <Plug>(easymotion-s2)
xmap s <Plug>(easymotion-s2)
omap z <Plug>(easymotion-s2)
nmap g/ <Plug>(easymotion-sn)
xmap g/ <Plug>(easymotion-sn)
omap g/ <Plug>(easymotion-tn)
let g:EasyMotion_smartcase = 1
map <Leader>j <Plug>(easymotion-j)
map <Leader>k <Plug>(easymotion-k)
let g:EasyMotion_startofline = 0
let g:EasyMotion_keys = 'QZASDFGHJKL;'
let g:EasyMotion_use_upper = 1
let g:EasyMotion_enter_jump_first = 1
let g:EasyMotion_space_jump_first = 1
hi EasyMotionTarget guifg=#80a0ff ctermfg=81
" }}}
例によってNeoBundle
を使います。
EasyMotion_keys
は自分の押しやすいキーを指定します。
私がホームポジションあたり(+qz)しか自信がないことが露呈しましたww
EasyMotion_keys
のキーが少ない場合、移動先の候補が多数あると2文字打たなければいけなかったりします。
個人的に打ち間違えて変なとこにジャンプしてイラッとするよりはいいかなと思います。
hi
ハイライトを変えている部分は何も設定しないと蛍光赤みたいな色だったので非常に見づらいため変えています。
なおhi
はcolorscheme
より後に書く必要があるようです。
ちなみに動作はこんな感じ
s[AnyKey][AnyKey][EasyMotion_key]([EasyMotion_key])
g/[Keyword][EasyMotion_key]([EasyMotion_key])
EasyMotion_key
は<CR>
や<Space>
を押すと最寄りの検索語にジャンプします。
画面内の移動は移動したいところの2文字を見て、s
[key][key]と打ち、表示された[EasyMotion_key]でジャンプします。
またg/
は[Keyword]を打っている間に検索で引っかかった単語の位置にジャンプするため、うろ覚えでも明確に検索できるので便利です。
まとめ
最終的にEasyMotion
が最高すぎます。
初級編を覚えておけばvimライフで困ることはあまりないと思います。
上級がないのは仕様です。
なお赤が見づらいのは私が軽く色盲だからです。麻雀の赤ドラもたまに黒く見えます。