Vim
iTerm2
Terminal

うろ覚えvimコマンド (sublime text 卒業)

More than 3 years have passed since last update.

私、菊池は、Sublime Textを卒業し、Vimへの移行をすることを決意しました。

そこで、私的用によく使うであろうVimコマンドを書こうと思います。

これは、私の決意表明であり、決してご覧いただいた方の役に立つとは思っておりません。

何卒よろしくお願いします。

(※覚えたものを慣れるために書きます。随時更新いたします)


文字を書き込むぜい!(入力モード!!)

基本的な書き込みコマンド。

シンプルに文字を入力するだけで、あとはどこから書き始めるかが変わってくる。

コマンド
説明

i
文字入力モードにする

a
単語の末尾にカーソルを移動し、文字入力モードにする

o
カーソルの下の行を一つあけ、その行から入力モードにする

shift + o
カーソルの上の行を一つあけ、その行から入力モードにする


やばい、取り消し(キャンセル)したい!

vimでは「cmd + z」が使用できないので、多少取り乱すかもしれない。

だが、適切なキャンセルコマンドを打ち込んであげれば何一つ問題ない。

コマンド
説明

u
直前の変更を取り消す

ctrl + r
直前の変更の取り消しを取り消す


ここどこだよ(場所検索)

sublimeとかのエディタと違って、どのファイルでファイルのどこらへんにいるかがわからないことがあるが、vimはそこらへんを明示してくれたりする。

コマンド
説明

ctrl + g
現在の階層、ファイル名、行番号、全体からの行の割合を下に表示する。

:!
外部コマンドを実行する

:!ls
現在の階層のファイル一覧を表示する


削除させてくれ

文字の削除が単語単位や行単位でできるのでとても便利。

コマンド
説明

dw
カーソル位置の単語を削除する。(空白を含む)

de
カーソル位置の単語を削除する。(空白を含まない)

d$
カーソル位置から行末まで削除する。

dd
カーソル位置の行末を全て削除する。

[数値]d[モーション]
数値の回数分削除モーションを実行する。

※モーションとは、wやeのような削除実行コマンド(d)に付与するコマンド


変更するぜい

わざわざ削除してから、文字を入力!みたいなことをやらなくても、そのまま文字を変更できるので、vimさんいい。

コマンド
説明

cw
カーソル位置から単語の末尾までを削除し、入力モードにする

c$
カーソル位置から行の末尾までを削除し、入力モードにする

c[数値]w
数値の回数分の単語(空白区切り)を削除し、入力モードにする。

:s/[old]/[new] ENTER
カーソルの行で最初に見つけた[old]だけを[new]に置き換える

:s/[old]/[new]/g ENTER
カーソルの行で見つけた[old]を全て[new]に置き換える

:%s/[old]/[new]/g ENTER
ファイルの中身の[old]を全て[new]に置き換える

:%s/[old]/[new]/gc ENTER
ファイルの中身の[old]を全て[new]に、一つ一つ確認しながら置き換える

ctrl + r
カーソル位置から置換モードにする

*置換モードはカーソル位置の単語を削除しながら、文字を挿入していきます。気をつけてへぺろ。


単語どこだよ(文字を検索)

こちらは、本来文字検索をするときの「cmd + f」が通用しない。

困らず焦らず、以下のコマンドを打てば、どこに文字があるか教えてくれるよ。

コマンド
説明

/[単語]
単語をファイルの下へと検索していく。

?[単語]
単語をファイルの上へと検索していく。

shift + #
現在のカーソル上の単語を検索する。

(単語検索中):set ic
検索文字に部分マッチしている部分を表示する

(単語検索中):set hls
マッチしている部分の文字を強調表示する

(単語検索中):set noic
検索文字に部分マッチしている部分を表示しないようにする

(単語検索中):set nohls
マッチしている部分の文字を強調表示しないようにする


コピーお願いします。(選択&コピー、貼り付け)

選択とコピー、そして貼り付け。

こちらも、「cmd + 」が使えないのが要注意。

コマンド
説明

v
ビジュアルモードに突入。移動は選択しながら移動する。

y
選択範囲をコピー

yy
カーソル位置の行をコピー

p
削除したやつを貼り付ける

ggVG
ファイルの中身を全選択


おれは一番下に行きたいんだ。。(カーソルを移動させるよ)

他のエディタにはないけど、文字間や行間の移動コマンド。

また別ウィンドウの移動も出来たりして、便利。

コマンド
説明

shift + g
一番下にジャンプ

[行番号] shift + g
行番号にジャンプ

gg
一番上にジャンプ

(括弧開きもしくは括弧閉じにカーソルを合わせながら)%
開きだったら閉じ、閉じだったら開きの括弧にジャンプ

0
カーソル位置の行頭へ移動

$
カーソル位置の行末へ移動

e
単語(次の単語)の末尾に移動する

w
単語(次の単語)の先頭に移動する

ctrl + w ctrl + w
別ウィンドウへと移動する


まとめ

vimさんあざーす。