100 Vim commands every programmer should know
上記ページを見て、vimコマンド覚えるぜ!と意気込んで訳しながら試してみた。fmt は日本人じゃあまり使わないよなー、とか read/write file と Case の欄は初めて見るコマンドばっかだなーとか。そんな感じ。
Search
/word |
上から下へ "word" を検索する。 |
?word |
下から上へ "word" を検索する。 |
/jo[ha]n |
"john" もしくは "joan" を検索する。 |
/\<the |
"the", "theatre" , "then" のいずれかを検索する。(theから始まる単語という事) |
/the\> |
"the" もしくは "breathe" を検索する。(theで終わる単語という事) |
/\<the\> |
"the" を検索する。 |
/\<....\> |
4文字の単語を検索する。 |
/\<fred\> |
"fred"を検索する。 "alfred" や "frederick" は当てはまらない。(原文のコマンドは // だったがミスかな?) |
/fred\|joe |
"fred" と "joe" を検索する。 |
/\<\d\d\d\d\> |
4 桁の数字を検索する。 |
/^n{3} |
空の3行を検索する。 |
:bufdo /searchstr/ |
全ての開いてるファイルから "searchstr" を検索する。 |
置換
:%s/old/new/g |
ファイル内の全ての "old" を "new" に置換する。 |
:%s/old/new/gc |
ファイル内の全ての "old" を "new" に置換する。置換時に確認有り(コメント欄で間違い指摘有) |
:2,35s/old/new/g |
2行目から35行目までの "old" を "new" に置換する。 |
:5,$s/old/new/g |
5行目からファイルの最後までの "old" を "new" に置換する。 |
:%s/^/hello/g |
全ての行の先頭に "hello" を追加する。 |
:%s/$/Harry/g |
全ての行の末尾に "Harry" を追加する。 |
:%s/onward/forward/gi |
ファイル内の全ての "onward" を "forward" に置換する。"onward" は大文字小文字関係ない。(case unsensitive ってなんだ?) |
:%s/ *$//g |
全ての行末にある空白を削除する。(原文は "Delete all white space" で "全ての空白を削除する。"になるのだが・・・) |
:g/string/d |
"string" を含んでる行を削除する。 |
:v/string/d |
"string" を含まない行を削除する。 |
:s/Bill/Steve/ |
現在の行で最初の "Bill" のみ "Steve" に置換する。 |
:s/Bill/Steve/g |
現在の行の "Bill" を "Steve" に置換する。 |
:%s/Bill/Steve/g |
このファイルの全ての "Bill" を "Steve" に置換する。 |
:%s/\r//g |
改行コード "CR"(^M) を削除する。 |
:%s/\r/\r/g |
Transform DOS carriage returns in returns (わかんなかった。)CRを現在vimで設定されている改行コードへ置換する。 |
:%s#<[^>]+>##g |
タグに囲まれたテキストは残しつつ、HTMLタグを全て削除する。 |
:%s/^(.*)n1$/1/ |
同じ行が2回続いたら片方削除する。 |
Ctrl+a |
カーソル下の数字をインクリメントする。 |
Ctrl+x |
カーソル下の数字をデクリメントする。 |
ggVGg? |
テキストを Rot13 にする。 |
Case
Vu |
現在の行の文字を小文字にする。 |
VU |
現在の行の文字を大文字にする。 |
g~~ |
現在の行の文字の大文字小文字を反転させる。 |
vEU |
単語単位で大文字にする。 |
vE~ |
単語単位で大文字小文字を反転させる。 |
ggguG |
全てのテキストを小文字にする。(原文では "uppercase" だがコマンド通りだと "lowercase"だろう。) |
:set ignorecase |
大文字小文字を区別しない。 |
:set smartcase |
大文字を入力しない限り、大文字小文字を区別しない。 |
:%s/\<./\u&/g |
全ての単語の先頭を大文字にする。 |
:%s/\<./\l&/g |
全ての単語の先頭を小文字にする。 |
:%s/.*/\u& |
全ての行の先頭を大文字にする。 |
:%s/.*/\l& |
全ての行の先頭を小文字にする。 |
Read/Write files
:1,10 w outfile |
1行目から10行目を outfile に保存する。 |
:1,10 w >> outfile |
1行目から10行目を outfile に追記する。 |
:r infile |
infile の内容を挿入する。 |
:23r infile |
infile の内容を23行目以降に挿入する。 |
File explorer
:e . |
ファイルエクスプローラを開く |
:Sex |
ウインドウを分割してファイルエクスプローラを開く |
:browse e |
グラフィカルなファイルエクスプローラを開く |
:ls |
バッファのリストを表示 |
:cd .. |
親ディレクトリへ移動 |
:args |
開いてるファイルのリストを表示 |
:args *.php |
対象のファイルを全て開く。 |
:grep expression *.php |
*.phpの中で expression を含むファイルのリストを返す。 |
gf |
カーソル位置にある名前のファイルを開く。 |
Interact with Unix
:!pwd |
"pwd" を実行し、Viに戻る。 |
!!pwd |
"pwd" を実行し、実行結果をファイルに挿入する。 |
:sh |
一時的にUnixへ戻る。(コメント欄でCtrl-zがいいよって) |
$ exit |
Vi に戻る。(コメント欄では fg がいいよって) |
Alignment
:%!fmt |
全ての行をフォーマットする。 |
!}fmt |
現在地にある全ての行をフォーマットする。 |
5!!fmt |
次の5行を整える。 |
Tabs
:tabnew |
新しいタブを作成する。 |
gt |
次のタブを表示する。 |
:tabfirst |
最初のタブを表示する。 |
:tablast |
最後のタブを表示する。 |
:tabm n(position) |
タブの位置を変更する。 |
:tabdo %s/foo/bar/g |
全てのタブでコマンドを実行する。 |
:tab ball |
バッファを全てタブで開く。 |
Window spliting
:e filename |
filename を現在のウインドウで開く |
:split filename |
filename を分割したウインドウで開く |
ctrl-w up arrow |
カーソルを上のウインドウへ移動する。 |
ctrl-w ctrl-w |
カーソルを次のウインドウへ移動する。 |
ctrl-w_ |
ウインドウを最大化する。 |
ctrl-w= |
分割したウインドウを全て同じ大きさにする |
10 ctrl-w+ |
現在のウインドウを10行大きくする。 |
:vsplit file |
縦に分割する。 |
:sview file |
:split と同様だが読み込み専用で開く |
:hide |
現在のウインドウを閉じる |
:only |
現在のウインドウ以外を閉じる |
:b 2 |
バッファの2番目を開く。 |
Auto-completion
Ctrl+n Ctrl+p (in insert mode) |
単語を補完する。 |
Ctrl+x Ctrl+l |
行を補完する。 |
:set dictionary=dict |
"dict" を "dictionary" に定義する。 |
Ctrl+x Ctrl+k |
"dictionnary" を補完する。 |
Marks
mk |
現在のカーソル位置を k にマークする。 |
'k |
k の位置にカーソルを移動する。 |
d'k |
現在地から k までを削除する。 |
Abbreviations
:ab mail mail@provider.org |
mail@provider.org の省略形を mailと定義する。 |
Text indent
:set autoindent |
オートインデントをONにする。 |
:set smartindent |
利口なオートインデントをONにする。 |
:set shiftwidth=4 |
インデント幅をスペース4つ分にする。 |
ctrl-t, ctrl-d |
挿入モードでインデントを追加/削除する。 |
>> |
インデント |
<< |
インデントを削除 |
Syntax highlighting
:syntax on |
色付けをする。 |
:syntax off |
色付けをしない。 |
:set syntax=perl |
perlモードで色付けをする。 |
そういやVimMなんてもので第1回勉強会あるらしいっすね。勢いで参加欄に名前載せた。あがが