よく使う viコマンド 

既にviのコマンドについての解説サイトは多数あるので

良く使う viコマンド のみを不定期に纏めていきます。

viコマンドは、一通り全て覚えてしまうと作業効率が格段に早くなります。

よく使うコマンドをメモりましたので、これらは全て覚えることをオススメします。

私的な感想ですがviは大変良くできています。

マウスを使うよりもよっぽどいいですね。Visual Studio や Eclipse 両方ともvi化して

プライベート・仕事においても使用しています。

 

関連ページ

よく使う viコマンド

おすすめのGvim (vim) での gvimrc の設定例

 

編集モードとコマンドモードを切り替えるには?

Esc

行番号を表示する

:set number

 

行番号を非表示にする

:set nonumber

編集中のファイルを上書き保存する

:w


編集中のファイルを上書き保存して閉じる

:wq

 

編集中のファイルを保存せずに閉じる

:q!

 

カレント行から3行削除する

3dd

 

カレント行をコピーする。

yy

※3行コピーする場合には

3yy

(カレント)フォーカスの移動

 j → 下に移動
 k → 上に移動
 l → 右に移動
 h → 左に移動

※これらのキーを入力する時に

数字 + {キー} としてコマンド入力すると指定された行数(文字数)分まとめて

移動する事が出来ます。

たとえば、 ある行にフォーカスがある状態で

30j   と入力するとフォーカスのあたっているカレントポイントから

右方向に30文字右側にフォーカスの移動が出来ます。

 

ビジュアルモードに切り替える

Shift + v で切替わる。

文字列を選択した直後に再び v を押すとビジュアルモードが解除される。

 

選択範囲をクリップボードにコピー

事前にビジュアルモードでコピー対象を選択しておくこと。

Control + Insert

 

選択範囲をクリップボードに切り取りを行う。

ヴィジュアルモードに切り替えた後で

Control + Delete 

ビジュアルモードで切り取りを行った内容をペーストする

(コマンドモードにて)

P(Shift + p) → 現在カーソールのあるカレント行にペーストされます。大文字のP入力です。

p                    → カーソール行の下にコピー内容がペーストされます。

P と p ですがそれぞれ使い分けられる様にしておくと効率があがります。

ファイルを開く

:e ファイル名

Windowsだとセパレータが¥円マークなので使い辛いな。。。 

 

操作を一つ前に戻す

u

間違って文字を入力した場合などに利用出来ます。

 

行末にフォーカス移動する

Shift + $(ドル)

 

行頭にフォーカス移動する

0

数字のゼロ

 

指定した行番号に移動する

:行番号

コロンに続けて行番号を入力します。

 

カレント行の切り取り

dd

また、カレント行から5行した方向に行データを切り取る場合には

5dd と入力すればOKです。

 

ファイルの先頭に移動する場合

gg

ビジュアルモードでカレント行から一番上まで選択する場合には、

v + gg とすれば良い。

 

ファイルの末尾(最後)に移動する場合

G

※大文字のGと入力する。

切り取った内容を貼り付ける

Shift + p

ビジュアルモードで選択中の行を切り取ってクリップボードにコピーする

(ビジュアルモードになり切り取りたい範囲を選択する) > Control + Delete

※切り取った後に、貼り付ける(ペースト)場合には、Control + Insert

画面を上下に分割する

:sp  or :split

上画面に移動する場合 ⇒ Control + w  > k

下画面に移動する場合 ⇒ Control + w > j

画面を左右に分割する

:vs  or :vsplit

左画面に移動する場合 ⇒ Control + w > h

右画面に移動する場合 ⇒ Control + w > l

分割したウィンドウを閉じる

Control + w > q

長い行に対して折り返しをする、しないの設定

:set wrap

:set nowrap

余計なバックアップファイルを作成しない様にする

set nobackup

***.txt を編集して保存すると標準では

***.txt~ とかいう邪魔なファイルが出来てしまいます。

この設定を行い作成しない様にします。

 

ビジュアルモードにて、複数行の選択範囲に対して(標準時の)Shift + Tab を押したときと同じ挙動をさせる

Shift + <

 

ビジュアルモードにて、複数行の選択範囲に対して(標準時の)Tabを押したときと同じ挙動をさせる

Shift + >

 

フォーカスのあたっている文字列の 右側 から文字入力を開始する

a

フォーカスのあたっている文字列の 左側 から文字入力を開始する

i

カレント位置より1文字右側削除する

x

短形ビジュアルモードへの切り替え

v > Control + v

最初に、 v を押す事によりビジュアルモードになります。

ビジュアルモードの状態で Control + v を押す事により、

短形ビジュアルモードに変化します。短形ビジュアルモードに切り替える事により

正方形の形で文字列の選択をする事が可能になり便利です。

コマンドモードから現在アクティブなフォーカスの当たっている文字の右側から編集モードにする

i

※左側から編集モードにする場合には、

a

を押す。

次の単語の頭にカーソール移動する

w

前の単語の先頭にカーソール移動する

b

w と b を無意識状態で使用出来る様になると非常に生産性があがります。 

 

1行全体をビジュアルモードで選択状態にする。

Shift + v

ビジュアルモードで行の選択状態になった状態で、 j や k を押せば

行レベルの選択が簡単に出来る様になります。

直前の操作を元に戻すには?

u

※ExcelとかだとControl + z ですけどそれと同じ事をvim上でやるイメージです。

 

編集中のファイル全体に対して置換処理を行う。

:%s/あげ/さげ/g

この例では、 「あげ」という文字列をすべて「さげ」に置換します。

 

選択範囲内(ビジュアルモードで選択中の行に対する置換)に対する置換

ビジュアルモードで事前に置換対象範囲を選択した上で

:%s/timer_a/timer_b/g

とやれば、選択された範囲内にある文字列に対して

timer_a を timer_b という文字列にすべて置換する事ができます。

 

直前の操作を繰り返す

(ピリオド)一癖ありますがマスターすると便利です。

 

行内の文字列に対して素早く、単語単位でカレントフォーカスを移動させる

w

→右方向に単語単位でカレントフォーカスを移動します。

b

→左方向に単語単位でカレントフォーカスを移動します。

 

行末に一瞬で移動する

$ ( Shift + 4 )

 

行頭に一瞬で移動する

0

 

1行まるごと選択状態にする

Shist + v 

 

インデントを付ける

事前にインデントを付けたい範囲を選択しておくこと。

>

右方向にインデントが入る。

<

左方向にインデントが入る。

※ポイント※

3>

インデントを右方向に3つ入れる。

数字を指定した後にコマンド入力を入れると、指定した個数分のインデントが入る。

1文字ずつ削除する

BackSpace

→ Windowsでも同じですが、カレントの位置から左側にある文字を1文字削除します。

x

→ カレント位置から右にある1文字を削除します。

直前に行った操作を繰り返す場合

.「ドット」を入力します。

#を文字列の頭に入力した直後に . 「ドット」を入力すれば

#が自動で入力されます。

 

 

また、より高度なテクニックもご紹介しましょう。

N.

「数字」+「.」

「5.」数字プラス.(ドット)を入力すると、直前の動作を5回繰り返します。

 

 

直前に行った操作をキャンセルする場合

※undo の略っぽです。