Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
実践vimを途中まで読んだメモ @OsakaVim #3
^ と $ を全然使ってない
j$. (次の行の末尾で繰り返し)
f+ (行中の + にカーソル移動)
s + <ESC> (1文字削除して、” + “ を挿入
w W 次の単語
b B 前の単語
daw 単語を削除 (delete a word)
Ctrl-a 数値を加算
Ctrl-x 数値を減算
↑ただし、 007 のような値は8進数として解釈するのがデフォルト
 10進で扱いたい場合は set nrformats= をvimrcに追加
複数単語分を書き換え
c2w
オペレータ+モーション=アクション
d{motion}
dl 単一文字
daw 単語
dap パラグラフ
オペレータ
g~ 大文字小文字の入れ替え
gu 小文字化
gU 大文字化
Ctrl-h 1文字削除
Ctrl-w 1単語削除
Ctrl-u 行頭まで削除(この3つはbashでも使える)
挿入ノーマルモード
Ctrl-o 挿入モード中にノーマルモードに切り替え(1コマンドが終わったら挿入モードに戻る)
zz 現在の行を中央にする
<Ctrl-r>0 (挿入モード中)レジスタ0の貼り付け
<Ctrl-r><Ctrl-p>0 上記よりちょっと賢い(インデントとか)
<Ctrl-r>= (挿入モード中)簡単な計算結果を挿入 Expressionレジスタ
ヴィジュアルモード
v 文字指向
V 行指向
<Ctrl-v> ブロック指向
gv 直前のビジュアルな選択範囲を再度選択する
タブとウィンドウ周り、もうちょっと便利に使えそう
:tabnew タブ作成
:tabedit {filename} タブ作成
<Ctrl-w>T 現在のウィンドウを新たなタブに移動
:clo[se] 現在のウィンドウを閉じる
:on[ly] 現在のウィンドウ以外を閉じる
:tabc[lose] 現在のタブを閉じる
:tabo[nly] 現在のタブ以外を閉じる
:lcd {path} (現在のウィンドウの作業ディレクトリを設定)
:windo lcd {path} (現在のタブ内のウィンドウ全てに大して作業ディレクトリを設定)
:tabn[ext] {N} // {N}gt タブNに移動(goto tab {N})
:tabn[ext] // gt 次のタブへ移動
:tabp[evious] // gT 前のタブへ移動
pathを設定すると
:find foo.js
のような感じでファイル名だけで開ける
複数マッチしたらタブで切り替え
ファイルエクスプローラーでは
- で親ディレクトリに移動できる
:E[xplore] アクティブなバッファのディレクトリでファイルエクスプローラをオープン
:Se[xplore] 水平分割でエクスプローラ
:Ve[xplore] 垂直分割でエクスプローラ
netrwは、ネットワーク経由でのファイルの読み書きも可能らしい
(scp, ftp, curl, wgetなど・・・)
スーパーユーザーとしてファイルを保存
:w !sudo tee % > /dev/null
← Password:
論理行と表示行
j gj 1行下
k gk 1行上
0 g0 先頭の文字
^ g^ 空白以外の先頭の文字
$ g$ 行末
単語単位の移動
w 次の単語の先頭に前進 (for-Word)
b 現在の単語もしくは前の単語の先頭に後退 (Back-word)
e 現在の単語もしくは次の単語の末尾の前進
ge 前の単語の末尾に後退
ea 現在の単語の末尾に追加(Append at the End of the current word)
gea 前の単語の末尾に追加
wordとWORDの違い
word 英数字、アンスコが連続したもの、もしくはその他の非空白文字が連続したもので、ws文字によって区切られる
WORD 非空白文字が連続したもので、wsで区切られる
W B E gE 等
cW とかよく使いそう
f{char} 次の{char}に移動
F{char} 前の{char}に移動
t{char} 次の{char}の直前に移動
T{char} 前の{char}の直後に移動
; 直前の文字検索コマンドを繰り返す
, 直前の文字検索コマンドを逆方向に繰り返す
テキストオブジェクト
{}で囲まれた中にカーソルがある状態で
vi} をすると {の次から}までを選択できる
↓モーションとして使える!
a{delimiter} delimiterを含めて範囲を広げる (around/all)
i{delimiter} delimiterの内側に範囲を広げる (inside)
delimiter : (){}[]<>’”` t(タグ)
iw 現在のword
aw 現在のword +前後どちらかの空白
iW 現在のWORD
aW 現在のWORD +前後どちらかの空白
is 現在の文
as 現在の文 +前後どちらかの空白
ip 現在の段落
ap 現在の段落 +前後どちらかの改行
場所をマーク
m{a-zA-Z} 現在のカーソル位置に、指定された文字でマークをする
'{mark} マークが設定された行に移動して、最初の非空白文字にカーソルを置く
`{mark} マークが設定されたまさにその場所に移動する
自動マーク
'' 現在のファイルで直前に行われたジャンプ以前にいた場所
'. 直前に変更された場所
'^ 直前に挿入があった場所
'[ 直前に変更もしくはヤンクが行われた先頭
'] 直前に変更もしくはヤンクが行われた末尾
'< 直前のビジュアル選択範囲の先頭
'> 直前のビジュアル選択範囲の末尾
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment