プログラマが知っておくべき100のVimコマンド

シェアする

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回勉強会あるらしいっすね。勢いで参加欄に名前載せた。あがが

Sponsored Link

シェアする

フォローする

コメント

  1. […] プログラマが知っておくべき100のVimコマンド – loumo.jp […]

  2. hoge より:

    Search
    ×/< the
    ○/\
    ○/the\>

    ×/
    ○/\

    ×/
    ○/\

    ×/
    ○/\

    ×/fred|joe
    ○/fred\|joe

    ×/
    ○/\

    ×/^n{3}
    ○/^\s\{3}

    置換
    ×:%s/r//g
    ○:%s/\n//g

    ×:%s/\r/\r/g
    ○:%s/\n/\r/g

    ×:%s/^(.*)n1$/1/
    ○:%s/^\(.*\)\n\1$/\1/

    Case
    ×:%s/<./u&/g
    ○:%s/\<./\u&/g

    ×:%s/<./l&/g
    ○:%s/\<./\l&/g

    ×:%s/.*/u&
    ○:%s/.*/\u&

    ×:%s/.*/l&
    ○:%s/.*/\l&

    Read/Write files
    ×infile の内容を23行目に挿入する。
    ○infile の内容を23行目以降に挿入する。

    Window spliting
    △10 ctrl-w+
    ctrl-w10+ こっちの方が好き
    ctrl-w10-
    ctrl-w| 現在のウィンドウを横に最大化
    ctrl-w10 現在のウィンドウを10横に大きくする。

  3. hoge より:

    すいません、間違いを指摘するつもりで投稿したら文字化けやら
    でおかしな表示になってしまいました。
    特にバックスラッシュ+山括弧以降の文字が消えてしまい、意味不明な投稿になってしまいました。すいません。

    • Ryo Matsufuji より:

      指摘ありがとうございます。何が原因かはまだわからないですが変換が勝手に入っていたようですね。。。
      ひとまず気づいたところに関しては修正を行いました。