vim 入門
2013-02-11

多田 篤志




要約
vim の基本から便利な機能を強引にまとめた入門です。
vim 概要 ............................................................................................................... 4
   vim を使うメリット ............................................................................................... 4
   vim の歴史........................................................................................................ 4
   似たコマンド ...................................................................................................... 5
   コマンドモードと挿入モード ................................................................................. 6
基本操作 .............................................................................................................. 7
   起動・終了・ファイル操作 ................................................................................... 7
   移動・スクロール................................................................................................ 8
   基本編集 ........................................................................................................ 10
   Undo・Redo .................................................................................................... 11
   ヤンク(コピー)・削除・変更 ............................................................................... 11
   プット(ペースト) ................................................................................................ 13
   レジスタ........................................................................................................... 13
コマンドの基本的な形式 ...................................................................................... 14
   対象に対し、コマンドを{回数}繰り返した分ヤンクする。{対象}については、「コマン
   ドの対象について」を参照。.............................................................................. 15
   コマンドの対象について ................................................................................... 15
   テキストオブジェクト ......................................................................................... 16
   検索・置換 ....................................................................................................... 16
   ex コマンド ...................................................................................................... 18
   ex コマンドの行指定 ........................................................................................ 19
   ex コマンドで使える特殊文字 ........................................................................... 19
応用操作 ............................................................................................................ 20
   マーク ............................................................................................................. 20
   ビジュアルモード ............................................................................................. 20
   マクロ.............................................................................................................. 21
   インデント ........................................................................................................ 21
   折りたたみ ...................................................................................................... 21
   単語の補完 ..................................................................................................... 22
   バッファ操作 .................................................................................................... 22
   ウインドウ操作 ................................................................................................ 22
便利な使い方 ..................................................................................................... 23
ファイル内での位置を表示 ............................................................................... 23
   行番号を表示・非表示 ..................................................................................... 23
   複数行の行頭に文字を挿入(コメント化など)、削除 ........................................... 23
   プログラムのソースコードなどに色を付ける ...................................................... 24
   オートインデントを有効にする .......................................................................... 24
   選択範囲をソート ............................................................................................. 24
   数字の増減 ..................................................................................................... 24
   空行の削除 ..................................................................................................... 24
   "Last, First" を "First Last" に変更する ......................................................... 24
   テキストを逆順に並び替える ............................................................................ 24
最後に ................................................................................................................ 24
vim 概要
vim を使うメリット
・OS を選ばない
・少ないキー操作、指の動きが少ないキーでテキスト編集が可能


 特に Web 開発者は、動作環境と開発環境がともに Linux であることが多いので、プ
ログラムを組むためにメインで使用していることも多いです。



vim の歴史

    パンチカード                    ed
  (1カード80文字)             (ワンラインエディタ)




       ex                    grep           sed
    (edを拡張)               (テキスト検索)     (ストリームエディタ)




                exコマンド
                  も搭載
       vi                                   awk
  (ビジュアルエディタ)                           (スクリプト言語)




                                           perl
        vim
                                       (様々なスクリプト言
     (viを拡張)
                                          語の原型)




 vim とは「Vi IMproved」の略で、vi というエディタを真似て高機能にしたものです。


 vi は ex というラインエディタを拡張したものです。vi の ex コマンドの多くは ed から
移植されたものです。


 ed での編集は、1 行単位でしか表示できない端末で使用することを前提に作られた
ラインエディタで、grep, sed, awk などと同じコンセプトで作られています。vi はテキス
ト全体を見ながら編集できるように拡張されています。


 vi は回線も画面の表示も遅い時代の産物ですので、なるべく(ひとつでも)少ないキ
ータッチで高速にテキストを編集できるように作られています。また、Windows, Mac,
Linux, Solaris や BSD など多くの OS で使用することが出来ます。


 vim は vi をさらに別の人が真似て拡張したもので、今の時代でも耐えられるくらいの
機能を揃えています。見た目は前時代的ですが、Windows の秀丸・さくらエディタ・
EmEditor などと比べても機能は劣りません。ウインドウを分割することも出来ますし、
複数ファイルを一括で置換したり、Python や Lua、その他言語でスクリプトを書くこと
もできます。


※ この文書で説明する機能は、OS や vim のバージョンによっては使えないこともあ
るかも知れません。
※ 紹介するコマンドは抜粋ですので、全部知りたい人はヘルプや Google を参照し
てください。また、これでも覚えられない場合は太字部分だけでも便利に使えます。




似たコマンド
vi…最近の OS(特に Linux)では、vi を起動すると vim の vi 互換モード(機能制限版)
が起動することが多いです。
ex…これも同様、vim の ex 互換モードが起動します。
view…vim が読み込み専用で起動します。
コマンドモードと挿入モード
vim にはモードという概念があり、起動時はコマンドモードになり通常のエディタのよ
うにテキスト編集はできず、コマンドを受け付けるモードになっています。以下が主な
モードです。ex モードはコマンドモードの一種で、先頭に":"を付けたコマンドは ex コマ
ンドとして解釈されます。


                            起動時

   挿入モード                 コマンドモード                ビジュアルモード


                 <ESC>                  <ESC>




                a …追加
                                       v …文字単位
                 i …挿入
                                       V …行単位

              A …行の最後に追加
                                   <CTRL>-v …矩形


              I …行の最初に挿入




その他のモード


   ヘルプモード                QuickFixモード             上書きモード

     :help                 :いろいろ                  Rなど

     exモード

     :, /など
基本操作
起動・終了・ファイル操作
 以下のように vim を起動することが出来ます。"vi"では本物の vi か vim の vi 互換モ
ードで起動してしまうので注意してください。


$ vim
$ vim ファイル名 ファイル名 ファイル名


ファイル操作コマンド
コマンド              同じコマンド     説明
:e[dit] ファイル名                現在のバッファに新しくファイルを開く。
:e[dit]! ファイル名               変更を破棄して新しくファイルを開く。
:e[dit]!                     全ての変更を破棄して保存時に戻す。
:w[rite]                     ファイルを保存する。
:w[rite]!                    (強引に)ファイルを保存する。
:w[rite] ファイル名               ファイルを違うファイル名で書き出す。
:w[rite]! ファイル名              (強引に) ファイルを違うファイル名で書き出
                             す。
:sav[eas] ファイル名   :w ファイル名   別名で保存する。:write は現在編集中のフ
                  :e #       ァイル名は変わらない。


                  :f ファイル名
                  :w
:f[ile] ファイル名                (vim 上で)ファイル名を変更する。
:q[uit]                      終了する。編集中のファイルがあると終了
                             できない。
:[quit]!          ZQ         強引に終了する。
:wq               ZZ         保存して終了する。
:wq!                         (強引に)ファイルを保存して終了する。
<CTRL>-Z                     サスペンドする。fg で復帰。
gf                           カーソル位置にあるファイル名のファイルを
                             開く
:vimtutor                           vim 練習モード。
:h[elp] [コマンド]                      (コマンドの)ヘルプ。




移動・スクロール
    vi, vim というと、hjkl でカーソル移動という印象ですが、最近はカーソルキーも使え
るので心配いりません。ただし、hjkl を使った方が指の移動も少ないですし、コマンド
の対象を選択する際は hjkl を覚えていないと辛いです。
    移動コマンドはたくさんありますが、全部覚える必要は全然ありません。hjkl, 0,
$, %, gg, G くらいが使えれば十分です。


                                        行単位

                                   k      ↑




             0    ge   b    h                    l   w   e
    {    (                         カーソル                      $    )   }

             ^    gE   B    ←                  →     W   E

    段落   文   行頭   単語単位     文字単位               文字単位   単語単位    行末   文   段落




                                    j     ↓

                                        行単位




移動やスクロールコマンド
コマンド                   同じコマンド     説明
hjkl                   ←↓↑→       カーソルを移動する。
0                                 行頭に移動。
^                                 空白を除いた行頭に移動。
$                                 行末に移動。
%                                 カーソルを囲んでいる括弧の前の括弧に移動。
                                  括弧の上にいる時は、対応する括弧に移動。
w, b                              単語単位で進む、戻る。記号など文字種が違う
                                  ところを単語と見なす。
W, B                             空白を区切りとした単語単位で進む、戻る。
e, ge                            単語の末尾に進む、戻る。
E, GE                            空白を区切りとした単語単位で単語の末尾に進
                                 む、戻る。
f{文字}, F{文字}                     {文字}が見つかるまで進む、戻る。同一行でし
                                 か動きません。
), (, }, {                       文、段落単位で進む、戻る。
                                 日本語だと文単位が上手く動作しない。
{行数}G              :{行数}         {行数}行目に移動する。
                   :{行数}p
                   :{行数}l
{数字}%                            ファイルの{数字}%の位置に移動する。
gg                               バッファの 1 行目に移動。
G                                バッファの最後の行に移動。
<CTRL>-o                         前回ジャンプ位置に戻る、進む.
<CTRL>-i
<CTRL>-f                         1 画面ずつ前、後ろへスクロール。
<CTRL>-b


  上記コマンドのほとんどには、コマンドの先頭に数字を付けることで繰り返すことが
できます。



        $.fn.highlightRegex = function( regex, options ) {

0       ^                   5h   l                       $


例)
10k…10 行上に移動。
20fx…20 回'x'が見つかるまで進む。
基本編集
コマンド                      同 じ コ マ ン 説明
                          ド
i                                   カーソルの前から挿入モード。
I                                   行頭から挿入モード。
a                                   カーソルの後ろから挿入モード。
A                                   行末から挿入モード。
o                                   カーソルの下に新規行を追加し挿入モ
                                    ード。
O                                   カーソルの上に新規行を追加し挿入モ
                                    ード。
J                                   後ろの行を連結する。


追加(a)

        $.fn.highlightRegex = function( regex, options ) {


    キー入力       aTEST



        $.fn.highlightRegex = fTESTunction( regex, options )
    {
挿入(i)

        $.fn.highlightRegex = function( regex, options ) {


    キー入力       iTEST



        $.fn.highlightRegex = TESTfunction( regex, options )
    {
Undo・Redo
コマンド         同じコマンド    説明
u            :u[ndo]   Undo。
<CTRL>-r     :r[edo]   Redo。
U                      現在の行の変更を全て Undo。
.                      最後のコマンドを再実行。
e[dit]!                全ての変更を破棄して保存時に戻す。




ヤンク(コピー)・削除・変更
    ヤンクとはレジスタにテキストを入れ(コピー)、後でプット(ペースト)することが出来ま
す。削除や変更のコマンドの多くはヤンク(カット)を伴います。


コマンド         同じコマンド    説明
y{対象}                  {対象}の範囲をヤンクする。{対象}については、
                       「コマンドの対象について」を参照。
yy           Y         1 行ヤンクする。
d{対象}                  {対象}の範囲を削除し、ヤンクする。
                       d0…現在のカーソル位置から行頭まで削除し、
                       ヤンクする。
                       dw…カーソル位置の単語を削除し、ヤンクす
                       る。
D            d$        カーソルから行末まで削除し、ヤンクする。
dd                     1 行削除し、ヤンクする。
x            dl        カーソルから後ろへ 1 文字削除し、ヤンクする。
X            dh        カーソルから前へ 1 文字削除し、ヤンクする。
c{対象}                  {対象}の範囲を削除し、ヤンクし、挿入モード。
cc                     1 行削除し、ヤンクし、挿入モード。
C            c$        カーソル位置から行末まで削除し、ヤンクし、挿
                       入モード。
s            cl        カーソル位置の 1 文字をヤンクし、挿入モード。
S                     cc    1 行削除し、ヤンクし、挿入モード。
R                           置換モード。カーソル位置の文字が次々置き換
                            わる。通常のエディタの上書きモード。
yi", di", ci"               "で囲まれた中を y, d, c する。
                            その他クォートや括弧なども使用可能。詳しくは
                            「テキストオブジェクト」を参照。


ヤンク(y)

      $.fn.highlightRegex = function( regex, options ) {


    キー入力        y$



      $.fn.highlightRegex = function( regex, options ) {


                                           ヤンク



削除(d)

      $.fn.highlightRegex = function( regex, options ) {


    キー入力        di(



      $.fn.highlightRegex = function() {


                                 削除&ヤンク
上記コマンドのほとんどには、コマンドの先頭に数字を付けることで繰り返すことが
できます。また、ヤンクを伴うコマンドは先頭にどのレジスタにヤンクするか指定する
ことが出来ます。


例)
3yy…現在の行を含め下 3 行をヤンクします。
"b2dw…カーソル位置から 2 単語削除し、レジスタ b にヤンクします。("bd2w も同じ)



プット(ペースト)
コマンド               同じコマンド       説明
p, P                            カーソル位置の後、前にレジスタの内容をペー
                                ストします。
gp, gP                          p, P と同じですが、カーソル位置を移動しませ
                                ん。
:reg[sters]        :di[splay]   レジスタの内容を一覧表示。


 プットにもレジスタを指定することが出来ます。


例)
"xp…レジスタ x の内容を、カーソルの後にプットします。



レジスタ
レジスタ          説明
""            最後に使われたレジスタ。
"0            ヤンクで使われるデフォルトのレジスタ。
"1            削除、変更で使われるデフォルトのレジスタ。
"2            "1 のひとつ前に使われたレジスタ。"3〜"9 も同様。
"a〜"z         自由に使用できるレジスタ。
"A〜"Z         指定するとレジスタ a〜z の内容にヤンクした内容が追加される。
"*            OS のクリップボード。
コマンドの基本的な形式
コマンドは基本的には以下のような形式になっています。
複雑に見えるコマンドも、以下のように分解して考えると簡単に覚えられます。


コマンドの形式

  "レジスタ     回数     コマンド                対象

                            回数         移動コマンド
 [オプション] [オプション]

                            ビジュアルモード

                            i
                                   括弧やタグ
                            a

                                'マーク




具体例

    "x2yl    =     レジスタx    に     2回          y = ヤンク


                                            l = 右に移動




    "xy2l    =     レジスタx    に          y = ヤンク


 上のコマンドと動きは同じ!!                   2回        l = 右に移動




   "n3dfo    =      レジスタn   に     3回        d = 削除 & ヤンク


                                            fo = 'o'が見つかるまで移動



   "nd3fo    = 同上
コマンドの種類    コマンド             説明
通常のコマンド    {回数}コマンド         コマンドを{回数}繰り返す
                            3fC…3 回'C'が見つかるまでカーソ
                            ルを移動。
ヤンク系コマンド   " レジ ス タ{ 回 数 } コマ ンド 対象に対し、コマンドを{回数}繰り返
           {対象}             した分ヤンクする。{対象}について
                            は、「コマンドの対象について」を参
                            照。
                            "X3dw…3 単語削除し、レジスタ X に
                            追加ヤンクする。"Xd3w も同じ。
ex コマンド    :{行範囲}コマンド{行数}   {行範囲}に{行数}分コマンドを実行す
                            る。
                            :%d…全行削除する。
                            :2,4s/test/production/g…2 行目から
                            4 行目の'test'を'production'に置換
                            する。
                            :23d4…23 行目から 4 行削除する。




コマンドの対象について
 上記の{対象}については、大きく分けて以下の種類があります。


対象           説明
移動系          現在のカーソル位置と移動後の位置の間を対象とします。
             c3l…右に 3 文字削除し、ヤンクし、挿入モード。
             d2w…右に 2 単語削除し、ヤンクします。
             yG…ファイルの最後までヤンクします。
ビジュアルモード     ビジュアルモードで選択した範囲が対象となります。詳しくは
             「ビジュアルモード」を参照。
テキストオブジェクト   現在のカーソル位置の周りを、文脈を理解し賢く対象としま
す。詳しくは「テキストオブジェクト」を参照。
                         di{…'{'と'}'で囲まれた内側を削除し、ヤンクする。
マーク                      現在のカーソル位置とマークの位置の間を対象とします。詳し
                         くは「マーク」を参照。
                         d'b…現在のカーソル位置とマーク b の間のテキストを削除し、
                         ヤンクする。




テキストオブジェクト
 テキストオブジェクトは比較的新しい機能のようですが、カーソル位置の周りの文脈
に応じて賢くコマンドの対象を指定できる機能です。'i'は内側(inner)を表し、'a'は外側
を含めた範囲(all)を表します。


テキストオブジェクト               説明
iw, aw, iW, aW           単語(word)(WORD)
is, as                   文(sentence)
ip, ap                   段落(paragraph)
ib, ab, i(, i), a(, a)   '('と')'の間(block)
iB, aB, i{, i}, a{, a}   '{'と'}'の間(Block)
i<, i>, a<, a>           '<'と'>'の間。他にも'(', ')', '[', ']'が使用できます。
i, a, i", a", i', a', i`, クォートで囲まれた範囲。クォートを省略すると、カーソル位置
a`                       にあるクォートの範囲を使用します。
it, at                   XML や HTML のタグで囲まれた範囲。


例)
di{…'{'と'}'に囲まれた間のテキストを削除し、ヤンクする。
dat…XML タグに囲まれた間のテキストを(タグを含めて)削除し、ヤンクする。



検索・置換
コマンド                              同じコマン 説明
                                  ド
/{文字列}                            前方検索。
?{文字列}                            後方検索。
#                                 カーソル位置の単語を前方検索。
*                                 カーソル位置の単語を後方検索。
n                                 次を検索。
N                                 前を検索。
:s[ubstitute]/from/to/g           現在の行の'from'を'to'に置換。
                                  最後の'g'は行の中の全部を置換する
                                  オプションです。'c'オプションを付ける
                                  と、確認しながら置換します。
:/search/s[ubstitute]/from/to/g   'search'が見つかった行の'from'を'to'
                                  に置換。
:cd {ディレクトリ}                      現在のディレクトリを変更します。
:vimgrep /search/ge **/*.txt |    現在のディレクトリ以下の拡張子が'txt'
cwin                              の フ ァ イ ル か ら 'search' を 検 索 し 、
                                  Quickfix ウインドウに一覧表示します。
                                  ディレクトリで'**'はサブディレクトリまで
                                  検索する指定です。
                                  'g'オプションは行の中の全てを検索、
                                  'e'オプションは検索できなくてもエラー
                                  を出なくします。
:args *.java                      現在のディレクトリ以下の拡張子が
                                  'java'のファイルを':argdo'を実行する
                                  対象に含めます。
:args                             ':argdo'の対象のファイルを確認しま
                                  す。
:argdo %s/from/to/g | update      ':args'で指定したファイル全ての from
                                  を to に置換します。':argdo'は':args'で
                                  指定したファイル全てにコマンドを実行
                                  します。
ex コマンド
コマンド                                   説明
:{行範囲}j[oin}[!]{行数}{フラグ}               {行範囲}の{行数}行を連結する。
:{行範囲}d[elete]{行数}                     {行範囲}の{行数}削除し、ヤンクする。
:{行範囲}c[hange}[!]                      {行範囲}のテキストを行単位で別のテキストと
                                       置き換える。"." のみを含む行を打ち込むこと
                                       で置換を終了する。
:{行範囲}![!]{外部プログラム} [!][引 {行範囲}を{外部プログラム}でフィルタ処理す
数]                                     る。
:{              行                範 {行範囲}を pattern から string に置換する。
囲}s[ubstitute]/{pattern}/{string}/{フ
ラグ}
:{行範囲}co[py]{コピー先}                     {行範囲}を{コピー先}にコピー。
                                       'co'の代わりに't'も使用可能。
:{行範囲}m[ove]{移動先}                      {行範囲}を{移動先}に移動。
:{ 行 範 囲 }sor[t][!] [i][u][r][n][x][o] オプションありすぎで説明できないけど、":sort"
[/{pattern}/]                          でとりあえずソート。
:{              行                範 {行範囲}の中で pattern にマッチする行に対し
囲}g[lobal]/{pattern}/[cmd]             て、cmd を実行する。
:{行範囲}g[lobal]!/{pattern}/[cmd]        {行範囲}の中で pattern にマッチしない行に対
                                       して、cmd を実行する。


':'で始まる ex コマンドには行範囲を指定できます。'%'は全行を表し、'.'は現在の行を
表します。


例)
:%s/from/to/gc…バッファ全体の'from'を'to'に確認しながら置換。
:25,40s/from/to/g…25 行目から 40 行目の'from'を'to'に置換。
:.,.+5s/from/to/g…現在の行から下 5 行の'from'を'to'に置換。
ex コマンドの行指定
行指定         説明
{数字}        {数字}行
$           最終行
.           現在の行
/pattern/   パターンにマッチする行。?pattern?なら上向きに検索。
?pattern?
¥/,¥?       直前のパターンにマッチする行。
%           全ての行。'1,$'と同じ。
.-n,.+n     現在の行の n 行前、n 行後。'.'以外にも+, -を使用可能。
'{マーク}      マークされた行。


例)
:20,$d…20 行目からファイルの最後まで削除。
:.,/search/+20m.-2…現在行から search が見つかった 20 行後までを現在行の 2 行
前に移動。
:%d…バッファ全体を削除。
:.,+5s/from/to/g…現在の行から下 5 行の'from'を'to'に置換。
:/from/,/to/co1…from を含む最初の行から to を含む最初の行までを 1 行目にコピー。
'co[py]'は't'と同じ。


ex コマンドで使える特殊文字
文字          説明
"           最後の削除やヤンクされたテキスト。
%           カレントファイル名。
#           代替ファイル名。
* or +      クリップボードの内容。(OS によって異なる)


例)
:e #…代替ファイル(通常、直前に使用していたファイル)を開く。
応用操作
マーク
     現在のカーソル位置をマークに保存し、後で移動したりコマンドの対象として利用す
ることが出来ます。


コマンド         同じコマンド   説明
m{a-zA-Z}             現在のカーソル位置を{a-zA-Z}に保存。
                      mb…マーク b に現在のカーソル位置を保存。
`{a-zA-Z}             {a-zA-Z}に保存されたカーソル位置に移動。
                      `e…マーク e に移動。
:marks                マークの内容を一覧表示。
d'{a-zA-Z}            {a-zA-Z}からカーソル位置までを削除しヤンクす
                      る。
                      y, c も利用可能。
`"                    以前にファイルを開いていた位置
`.                    最後に変更を加えた場所




ビジュアルモード
     ビジュアルモードに入ると、視覚的に選択範囲を指定でき、その範囲をコマンドの対
象とすることが出来ます。ビジュアルモードを開始し、通常通りカーソルを動かすとそ
の間が選択範囲となります。その範囲について、d, y コマンドなどが実行できます。


コマンド         同じコマンド   説明
v                     選択開始。この後通常のカーソル移動コマンド
                      で選択の終了位置を指定します。
V                     行選択。
<CTRL>-v              矩形選択。
gv                    直前の選択範囲を再選択します。
マクロ
 マクロにキー操作を記録し、後で実行することが出来ます。


コマンド      同じコマンド   説明
q{a-z}             {a-z}にマクロ記録開始。q で記録終了。
q{A-Z}             マクロ追加記録。
@{a-z}             マクロを再生。
@@                 直前に実行したマクロを再実行。




インデント
コマンド      同じコマンド   説明
==                 カレント行をインデント。
={対象}              カーソル位置から{対象}の範囲をインデントす
                   る。
>>,<<              インデントを増やす、減らす。


例)
gg でファイルの先頭に移動し、
=G
でファイル全体をインデント



折りたたみ
 ソースコードの関数やツリー型メモなどで、テキストの一部を折りたたんだり開いた
りすることが出来ます。


コマンド      同じコマンド   説明
zf{対象}             対象を折りたたみとして定義します。
zo        <SPC>    一段落折りたたみを開きます。
zO                 全て折りたたみを開きます。
zc                 一段落折りたたみます。
zC                                全て折りたたみます。


例)
関数の中にカーソルを置き
zfi{
で、'{'と'}'に囲まれた部分を折りたたむことが出来ます。



単語の補完
  単語の一部を入力し、補完コマンドを入力することで、開いているバッファの中から
単語を補完することが出来ます。以下のコマンドは「挿入モード」で入力します。


コマンド                 同じコマンド       説明
<CTRL>-n                          単語を補完。前方検索。
<CTRL>-p                          単語を補完。後方検索。




バッファ操作
 バッファを利用することで、複数のファイルを一度に読み込むことが出来ます。


コマンド                     同じコマンド    説明
:hide edit ファイル名                   現在のファイルを隠し、ファイルを開きます。
:buffers                 :ls       バッファの一覧を表示します。
:buffer {番号}                       バッファ{番号}を表示します。
:bn[ext], :bp[revious]             次のバッファ、前のバッファを表示します。
:bd[elete]                         バッファをバッファリストから削除します。



ウインドウ操作
 ウインドウを分割し、複数のファイルを一度に編集することが出来ます。


コマンド                     同じコマンド    説明
:sp[lit], :vs[plit]              横、縦にウインドウを分割する。
:clo[se]                         ウインドウを閉じる。
<CTRL>-w o            :only      他のウインドウを全て閉じる。
<CTRL>-w hjkl         <CTRL>-w   左下上右のウインドウに移動する。
                      ←↓↑→
:qall                            全てのウインドウを閉じ、vim を終了する。
:qall!                           全てのウインドウの変更を破棄し、vim を終了
                                 する。
:wall                            全てのファイルを保存する。
:wqall                           全てのファイルを保存し、vim を終了する。



便利な使い方
ファイル内での位置を表示
<CTRL>-g


行番号を表示・非表示
:set nu[mber]
:set nonu[mber]


※ 設定ファイルに書くことでデフォルトで行番号を表示することもできます。


複数行の行頭に文字を挿入(コメント化など)、削除
<CTRL>-v で矩形選択モード。
jk で挿入したい行を選択。
I で行頭に挿入モード。
'//'や'#'を入力。
<ESC>


<CTRL>-v で矩形選択モード。
hjkl で消したい範囲を選択。
d で削除。
プログラムのソースコードなどに色を付ける
:syntax on


オートインデントを有効にする
:set autoindent


選択範囲をソート
V で行選択モード。
jk でソートする範囲を選択
:sort でソート実行。
※ OS のソートコマンドを使用して':!sort'でも可能。


数字の増減
テキストの数字の上にカーソルを移動。
<CTRL>-a でインクリメント。
<CTRL>-x でデクリメント。


空行の削除
:g/^$/d


"Last, First" を "First Last" に変更する
:%s/¥([^,]*¥), ¥(.*¥)/¥2 ¥1/


テキストを逆順に並び替える
:g[lobal]/^/m0




最後に
 他にも、スクリプトを書いたり、タブブラウザのようなタブや OS のコマンドの実行など
高度な機能があります。
 Eclipse をバックグラウンドで実行し、連携してメソッドを補完するようなプラグインも
あります。興味のある人は調べてみてください。

Vim入門 20130210

  • 1.
    vim 入門 2013-02-11 多田 篤志 要約 vimの基本から便利な機能を強引にまとめた入門です。
  • 2.
    vim 概要 ...............................................................................................................4 vim を使うメリット ............................................................................................... 4 vim の歴史........................................................................................................ 4 似たコマンド ...................................................................................................... 5 コマンドモードと挿入モード ................................................................................. 6 基本操作 .............................................................................................................. 7 起動・終了・ファイル操作 ................................................................................... 7 移動・スクロール................................................................................................ 8 基本編集 ........................................................................................................ 10 Undo・Redo .................................................................................................... 11 ヤンク(コピー)・削除・変更 ............................................................................... 11 プット(ペースト) ................................................................................................ 13 レジスタ........................................................................................................... 13 コマンドの基本的な形式 ...................................................................................... 14 対象に対し、コマンドを{回数}繰り返した分ヤンクする。{対象}については、「コマン ドの対象について」を参照。.............................................................................. 15 コマンドの対象について ................................................................................... 15 テキストオブジェクト ......................................................................................... 16 検索・置換 ....................................................................................................... 16 ex コマンド ...................................................................................................... 18 ex コマンドの行指定 ........................................................................................ 19 ex コマンドで使える特殊文字 ........................................................................... 19 応用操作 ............................................................................................................ 20 マーク ............................................................................................................. 20 ビジュアルモード ............................................................................................. 20 マクロ.............................................................................................................. 21 インデント ........................................................................................................ 21 折りたたみ ...................................................................................................... 21 単語の補完 ..................................................................................................... 22 バッファ操作 .................................................................................................... 22 ウインドウ操作 ................................................................................................ 22 便利な使い方 ..................................................................................................... 23
  • 3.
    ファイル内での位置を表示 ............................................................................... 23 行番号を表示・非表示 ..................................................................................... 23 複数行の行頭に文字を挿入(コメント化など)、削除 ........................................... 23 プログラムのソースコードなどに色を付ける ...................................................... 24 オートインデントを有効にする .......................................................................... 24 選択範囲をソート ............................................................................................. 24 数字の増減 ..................................................................................................... 24 空行の削除 ..................................................................................................... 24 "Last, First" を "First Last" に変更する ......................................................... 24 テキストを逆順に並び替える ............................................................................ 24 最後に ................................................................................................................ 24
  • 4.
    vim 概要 vim を使うメリット ・OSを選ばない ・少ないキー操作、指の動きが少ないキーでテキスト編集が可能 特に Web 開発者は、動作環境と開発環境がともに Linux であることが多いので、プ ログラムを組むためにメインで使用していることも多いです。 vim の歴史 パンチカード ed (1カード80文字) (ワンラインエディタ) ex grep sed (edを拡張) (テキスト検索) (ストリームエディタ) exコマンド も搭載 vi awk (ビジュアルエディタ) (スクリプト言語) perl vim (様々なスクリプト言 (viを拡張) 語の原型) vim とは「Vi IMproved」の略で、vi というエディタを真似て高機能にしたものです。 vi は ex というラインエディタを拡張したものです。vi の ex コマンドの多くは ed から
  • 5.
    移植されたものです。 ed での編集は、1行単位でしか表示できない端末で使用することを前提に作られた ラインエディタで、grep, sed, awk などと同じコンセプトで作られています。vi はテキス ト全体を見ながら編集できるように拡張されています。 vi は回線も画面の表示も遅い時代の産物ですので、なるべく(ひとつでも)少ないキ ータッチで高速にテキストを編集できるように作られています。また、Windows, Mac, Linux, Solaris や BSD など多くの OS で使用することが出来ます。 vim は vi をさらに別の人が真似て拡張したもので、今の時代でも耐えられるくらいの 機能を揃えています。見た目は前時代的ですが、Windows の秀丸・さくらエディタ・ EmEditor などと比べても機能は劣りません。ウインドウを分割することも出来ますし、 複数ファイルを一括で置換したり、Python や Lua、その他言語でスクリプトを書くこと もできます。 ※ この文書で説明する機能は、OS や vim のバージョンによっては使えないこともあ るかも知れません。 ※ 紹介するコマンドは抜粋ですので、全部知りたい人はヘルプや Google を参照し てください。また、これでも覚えられない場合は太字部分だけでも便利に使えます。 似たコマンド vi…最近の OS(特に Linux)では、vi を起動すると vim の vi 互換モード(機能制限版) が起動することが多いです。 ex…これも同様、vim の ex 互換モードが起動します。 view…vim が読み込み専用で起動します。
  • 6.
    コマンドモードと挿入モード vim にはモードという概念があり、起動時はコマンドモードになり通常のエディタのよ うにテキスト編集はできず、コマンドを受け付けるモードになっています。以下が主な モードです。ex モードはコマンドモードの一種で、先頭に":"を付けたコマンドはex コマ ンドとして解釈されます。 起動時 挿入モード コマンドモード ビジュアルモード <ESC> <ESC> a …追加 v …文字単位 i …挿入 V …行単位 A …行の最後に追加 <CTRL>-v …矩形 I …行の最初に挿入 その他のモード ヘルプモード QuickFixモード 上書きモード :help :いろいろ Rなど exモード :, /など
  • 7.
    基本操作 起動・終了・ファイル操作 以下のように vimを起動することが出来ます。"vi"では本物の vi か vim の vi 互換モ ードで起動してしまうので注意してください。 $ vim $ vim ファイル名 ファイル名 ファイル名 ファイル操作コマンド コマンド 同じコマンド 説明 :e[dit] ファイル名 現在のバッファに新しくファイルを開く。 :e[dit]! ファイル名 変更を破棄して新しくファイルを開く。 :e[dit]! 全ての変更を破棄して保存時に戻す。 :w[rite] ファイルを保存する。 :w[rite]! (強引に)ファイルを保存する。 :w[rite] ファイル名 ファイルを違うファイル名で書き出す。 :w[rite]! ファイル名 (強引に) ファイルを違うファイル名で書き出 す。 :sav[eas] ファイル名 :w ファイル名 別名で保存する。:write は現在編集中のフ :e # ァイル名は変わらない。 :f ファイル名 :w :f[ile] ファイル名 (vim 上で)ファイル名を変更する。 :q[uit] 終了する。編集中のファイルがあると終了 できない。 :[quit]! ZQ 強引に終了する。 :wq ZZ 保存して終了する。 :wq! (強引に)ファイルを保存して終了する。 <CTRL>-Z サスペンドする。fg で復帰。 gf カーソル位置にあるファイル名のファイルを 開く
  • 8.
    :vimtutor vim 練習モード。 :h[elp] [コマンド] (コマンドの)ヘルプ。 移動・スクロール vi, vim というと、hjkl でカーソル移動という印象ですが、最近はカーソルキーも使え るので心配いりません。ただし、hjkl を使った方が指の移動も少ないですし、コマンド の対象を選択する際は hjkl を覚えていないと辛いです。 移動コマンドはたくさんありますが、全部覚える必要は全然ありません。hjkl, 0, $, %, gg, G くらいが使えれば十分です。 行単位 k ↑ 0 ge b h l w e { ( カーソル $ ) } ^ gE B ← → W E 段落 文 行頭 単語単位 文字単位 文字単位 単語単位 行末 文 段落 j ↓ 行単位 移動やスクロールコマンド コマンド 同じコマンド 説明 hjkl ←↓↑→ カーソルを移動する。 0 行頭に移動。 ^ 空白を除いた行頭に移動。 $ 行末に移動。 % カーソルを囲んでいる括弧の前の括弧に移動。 括弧の上にいる時は、対応する括弧に移動。 w, b 単語単位で進む、戻る。記号など文字種が違う ところを単語と見なす。
  • 9.
    W, B 空白を区切りとした単語単位で進む、戻る。 e, ge 単語の末尾に進む、戻る。 E, GE 空白を区切りとした単語単位で単語の末尾に進 む、戻る。 f{文字}, F{文字} {文字}が見つかるまで進む、戻る。同一行でし か動きません。 ), (, }, { 文、段落単位で進む、戻る。 日本語だと文単位が上手く動作しない。 {行数}G :{行数} {行数}行目に移動する。 :{行数}p :{行数}l {数字}% ファイルの{数字}%の位置に移動する。 gg バッファの 1 行目に移動。 G バッファの最後の行に移動。 <CTRL>-o 前回ジャンプ位置に戻る、進む. <CTRL>-i <CTRL>-f 1 画面ずつ前、後ろへスクロール。 <CTRL>-b 上記コマンドのほとんどには、コマンドの先頭に数字を付けることで繰り返すことが できます。 $.fn.highlightRegex = function( regex, options ) { 0 ^ 5h l $ 例) 10k…10 行上に移動。 20fx…20 回'x'が見つかるまで進む。
  • 10.
    基本編集 コマンド 同 じ コ マ ン 説明 ド i カーソルの前から挿入モード。 I 行頭から挿入モード。 a カーソルの後ろから挿入モード。 A 行末から挿入モード。 o カーソルの下に新規行を追加し挿入モ ード。 O カーソルの上に新規行を追加し挿入モ ード。 J 後ろの行を連結する。 追加(a) $.fn.highlightRegex = function( regex, options ) { キー入力 aTEST $.fn.highlightRegex = fTESTunction( regex, options ) { 挿入(i) $.fn.highlightRegex = function( regex, options ) { キー入力 iTEST $.fn.highlightRegex = TESTfunction( regex, options ) {
  • 11.
    Undo・Redo コマンド 同じコマンド 説明 u :u[ndo] Undo。 <CTRL>-r :r[edo] Redo。 U 現在の行の変更を全て Undo。 . 最後のコマンドを再実行。 e[dit]! 全ての変更を破棄して保存時に戻す。 ヤンク(コピー)・削除・変更 ヤンクとはレジスタにテキストを入れ(コピー)、後でプット(ペースト)することが出来ま す。削除や変更のコマンドの多くはヤンク(カット)を伴います。 コマンド 同じコマンド 説明 y{対象} {対象}の範囲をヤンクする。{対象}については、 「コマンドの対象について」を参照。 yy Y 1 行ヤンクする。 d{対象} {対象}の範囲を削除し、ヤンクする。 d0…現在のカーソル位置から行頭まで削除し、 ヤンクする。 dw…カーソル位置の単語を削除し、ヤンクす る。 D d$ カーソルから行末まで削除し、ヤンクする。 dd 1 行削除し、ヤンクする。 x dl カーソルから後ろへ 1 文字削除し、ヤンクする。 X dh カーソルから前へ 1 文字削除し、ヤンクする。 c{対象} {対象}の範囲を削除し、ヤンクし、挿入モード。 cc 1 行削除し、ヤンクし、挿入モード。 C c$ カーソル位置から行末まで削除し、ヤンクし、挿 入モード。 s cl カーソル位置の 1 文字をヤンクし、挿入モード。
  • 12.
    S cc 1 行削除し、ヤンクし、挿入モード。 R 置換モード。カーソル位置の文字が次々置き換 わる。通常のエディタの上書きモード。 yi", di", ci" "で囲まれた中を y, d, c する。 その他クォートや括弧なども使用可能。詳しくは 「テキストオブジェクト」を参照。 ヤンク(y) $.fn.highlightRegex = function( regex, options ) { キー入力 y$ $.fn.highlightRegex = function( regex, options ) { ヤンク 削除(d) $.fn.highlightRegex = function( regex, options ) { キー入力 di( $.fn.highlightRegex = function() { 削除&ヤンク
  • 13.
    上記コマンドのほとんどには、コマンドの先頭に数字を付けることで繰り返すことが できます。また、ヤンクを伴うコマンドは先頭にどのレジスタにヤンクするか指定する ことが出来ます。 例) 3yy…現在の行を含め下 3 行をヤンクします。 "b2dw…カーソル位置から2 単語削除し、レジスタ b にヤンクします。("bd2w も同じ) プット(ペースト) コマンド 同じコマンド 説明 p, P カーソル位置の後、前にレジスタの内容をペー ストします。 gp, gP p, P と同じですが、カーソル位置を移動しませ ん。 :reg[sters] :di[splay] レジスタの内容を一覧表示。 プットにもレジスタを指定することが出来ます。 例) "xp…レジスタ x の内容を、カーソルの後にプットします。 レジスタ レジスタ 説明 "" 最後に使われたレジスタ。 "0 ヤンクで使われるデフォルトのレジスタ。 "1 削除、変更で使われるデフォルトのレジスタ。 "2 "1 のひとつ前に使われたレジスタ。"3〜"9 も同様。 "a〜"z 自由に使用できるレジスタ。 "A〜"Z 指定するとレジスタ a〜z の内容にヤンクした内容が追加される。 "* OS のクリップボード。
  • 14.
    コマンドの基本的な形式 コマンドは基本的には以下のような形式になっています。 複雑に見えるコマンドも、以下のように分解して考えると簡単に覚えられます。 コマンドの形式 "レジスタ 回数 コマンド 対象 回数 移動コマンド [オプション] [オプション] ビジュアルモード i 括弧やタグ a 'マーク 具体例 "x2yl = レジスタx に 2回 y = ヤンク l = 右に移動 "xy2l = レジスタx に y = ヤンク 上のコマンドと動きは同じ!! 2回 l = 右に移動 "n3dfo = レジスタn に 3回 d = 削除 & ヤンク fo = 'o'が見つかるまで移動 "nd3fo = 同上
  • 15.
    コマンドの種類 コマンド 説明 通常のコマンド {回数}コマンド コマンドを{回数}繰り返す 3fC…3 回'C'が見つかるまでカーソ ルを移動。 ヤンク系コマンド " レジ ス タ{ 回 数 } コマ ンド 対象に対し、コマンドを{回数}繰り返 {対象} した分ヤンクする。{対象}について は、「コマンドの対象について」を参 照。 "X3dw…3 単語削除し、レジスタ X に 追加ヤンクする。"Xd3w も同じ。 ex コマンド :{行範囲}コマンド{行数} {行範囲}に{行数}分コマンドを実行す る。 :%d…全行削除する。 :2,4s/test/production/g…2 行目から 4 行目の'test'を'production'に置換 する。 :23d4…23 行目から 4 行削除する。 コマンドの対象について 上記の{対象}については、大きく分けて以下の種類があります。 対象 説明 移動系 現在のカーソル位置と移動後の位置の間を対象とします。 c3l…右に 3 文字削除し、ヤンクし、挿入モード。 d2w…右に 2 単語削除し、ヤンクします。 yG…ファイルの最後までヤンクします。 ビジュアルモード ビジュアルモードで選択した範囲が対象となります。詳しくは 「ビジュアルモード」を参照。 テキストオブジェクト 現在のカーソル位置の周りを、文脈を理解し賢く対象としま
  • 16.
    す。詳しくは「テキストオブジェクト」を参照。 di{…'{'と'}'で囲まれた内側を削除し、ヤンクする。 マーク 現在のカーソル位置とマークの位置の間を対象とします。詳し くは「マーク」を参照。 d'b…現在のカーソル位置とマーク b の間のテキストを削除し、 ヤンクする。 テキストオブジェクト テキストオブジェクトは比較的新しい機能のようですが、カーソル位置の周りの文脈 に応じて賢くコマンドの対象を指定できる機能です。'i'は内側(inner)を表し、'a'は外側 を含めた範囲(all)を表します。 テキストオブジェクト 説明 iw, aw, iW, aW 単語(word)(WORD) is, as 文(sentence) ip, ap 段落(paragraph) ib, ab, i(, i), a(, a) '('と')'の間(block) iB, aB, i{, i}, a{, a} '{'と'}'の間(Block) i<, i>, a<, a> '<'と'>'の間。他にも'(', ')', '[', ']'が使用できます。 i, a, i", a", i', a', i`, クォートで囲まれた範囲。クォートを省略すると、カーソル位置 a` にあるクォートの範囲を使用します。 it, at XML や HTML のタグで囲まれた範囲。 例) di{…'{'と'}'に囲まれた間のテキストを削除し、ヤンクする。 dat…XML タグに囲まれた間のテキストを(タグを含めて)削除し、ヤンクする。 検索・置換 コマンド 同じコマン 説明 ド
  • 17.
    /{文字列} 前方検索。 ?{文字列} 後方検索。 # カーソル位置の単語を前方検索。 * カーソル位置の単語を後方検索。 n 次を検索。 N 前を検索。 :s[ubstitute]/from/to/g 現在の行の'from'を'to'に置換。 最後の'g'は行の中の全部を置換する オプションです。'c'オプションを付ける と、確認しながら置換します。 :/search/s[ubstitute]/from/to/g 'search'が見つかった行の'from'を'to' に置換。 :cd {ディレクトリ} 現在のディレクトリを変更します。 :vimgrep /search/ge **/*.txt | 現在のディレクトリ以下の拡張子が'txt' cwin の フ ァ イ ル か ら 'search' を 検 索 し 、 Quickfix ウインドウに一覧表示します。 ディレクトリで'**'はサブディレクトリまで 検索する指定です。 'g'オプションは行の中の全てを検索、 'e'オプションは検索できなくてもエラー を出なくします。 :args *.java 現在のディレクトリ以下の拡張子が 'java'のファイルを':argdo'を実行する 対象に含めます。 :args ':argdo'の対象のファイルを確認しま す。 :argdo %s/from/to/g | update ':args'で指定したファイル全ての from を to に置換します。':argdo'は':args'で 指定したファイル全てにコマンドを実行 します。
  • 18.
    ex コマンド コマンド 説明 :{行範囲}j[oin}[!]{行数}{フラグ} {行範囲}の{行数}行を連結する。 :{行範囲}d[elete]{行数} {行範囲}の{行数}削除し、ヤンクする。 :{行範囲}c[hange}[!] {行範囲}のテキストを行単位で別のテキストと 置き換える。"." のみを含む行を打ち込むこと で置換を終了する。 :{行範囲}![!]{外部プログラム} [!][引 {行範囲}を{外部プログラム}でフィルタ処理す 数] る。 :{ 行 範 {行範囲}を pattern から string に置換する。 囲}s[ubstitute]/{pattern}/{string}/{フ ラグ} :{行範囲}co[py]{コピー先} {行範囲}を{コピー先}にコピー。 'co'の代わりに't'も使用可能。 :{行範囲}m[ove]{移動先} {行範囲}を{移動先}に移動。 :{ 行 範 囲 }sor[t][!] [i][u][r][n][x][o] オプションありすぎで説明できないけど、":sort" [/{pattern}/] でとりあえずソート。 :{ 行 範 {行範囲}の中で pattern にマッチする行に対し 囲}g[lobal]/{pattern}/[cmd] て、cmd を実行する。 :{行範囲}g[lobal]!/{pattern}/[cmd] {行範囲}の中で pattern にマッチしない行に対 して、cmd を実行する。 ':'で始まる ex コマンドには行範囲を指定できます。'%'は全行を表し、'.'は現在の行を 表します。 例) :%s/from/to/gc…バッファ全体の'from'を'to'に確認しながら置換。 :25,40s/from/to/g…25 行目から 40 行目の'from'を'to'に置換。 :.,.+5s/from/to/g…現在の行から下 5 行の'from'を'to'に置換。
  • 19.
    ex コマンドの行指定 行指定 説明 {数字} {数字}行 $ 最終行 . 現在の行 /pattern/ パターンにマッチする行。?pattern?なら上向きに検索。 ?pattern? ¥/,¥? 直前のパターンにマッチする行。 % 全ての行。'1,$'と同じ。 .-n,.+n 現在の行の n 行前、n 行後。'.'以外にも+, -を使用可能。 '{マーク} マークされた行。 例) :20,$d…20 行目からファイルの最後まで削除。 :.,/search/+20m.-2…現在行から search が見つかった 20 行後までを現在行の 2 行 前に移動。 :%d…バッファ全体を削除。 :.,+5s/from/to/g…現在の行から下 5 行の'from'を'to'に置換。 :/from/,/to/co1…from を含む最初の行から to を含む最初の行までを 1 行目にコピー。 'co[py]'は't'と同じ。 ex コマンドで使える特殊文字 文字 説明 " 最後の削除やヤンクされたテキスト。 % カレントファイル名。 # 代替ファイル名。 * or + クリップボードの内容。(OS によって異なる) 例) :e #…代替ファイル(通常、直前に使用していたファイル)を開く。
  • 20.
    応用操作 マーク 現在のカーソル位置をマークに保存し、後で移動したりコマンドの対象として利用す ることが出来ます。 コマンド 同じコマンド 説明 m{a-zA-Z} 現在のカーソル位置を{a-zA-Z}に保存。 mb…マーク b に現在のカーソル位置を保存。 `{a-zA-Z} {a-zA-Z}に保存されたカーソル位置に移動。 `e…マーク e に移動。 :marks マークの内容を一覧表示。 d'{a-zA-Z} {a-zA-Z}からカーソル位置までを削除しヤンクす る。 y, c も利用可能。 `" 以前にファイルを開いていた位置 `. 最後に変更を加えた場所 ビジュアルモード ビジュアルモードに入ると、視覚的に選択範囲を指定でき、その範囲をコマンドの対 象とすることが出来ます。ビジュアルモードを開始し、通常通りカーソルを動かすとそ の間が選択範囲となります。その範囲について、d, y コマンドなどが実行できます。 コマンド 同じコマンド 説明 v 選択開始。この後通常のカーソル移動コマンド で選択の終了位置を指定します。 V 行選択。 <CTRL>-v 矩形選択。 gv 直前の選択範囲を再選択します。
  • 21.
    マクロ マクロにキー操作を記録し、後で実行することが出来ます。 コマンド 同じコマンド 説明 q{a-z} {a-z}にマクロ記録開始。q で記録終了。 q{A-Z} マクロ追加記録。 @{a-z} マクロを再生。 @@ 直前に実行したマクロを再実行。 インデント コマンド 同じコマンド 説明 == カレント行をインデント。 ={対象} カーソル位置から{対象}の範囲をインデントす る。 >>,<< インデントを増やす、減らす。 例) gg でファイルの先頭に移動し、 =G でファイル全体をインデント 折りたたみ ソースコードの関数やツリー型メモなどで、テキストの一部を折りたたんだり開いた りすることが出来ます。 コマンド 同じコマンド 説明 zf{対象} 対象を折りたたみとして定義します。 zo <SPC> 一段落折りたたみを開きます。 zO 全て折りたたみを開きます。 zc 一段落折りたたみます。
  • 22.
    zC 全て折りたたみます。 例) 関数の中にカーソルを置き zfi{ で、'{'と'}'に囲まれた部分を折りたたむことが出来ます。 単語の補完 単語の一部を入力し、補完コマンドを入力することで、開いているバッファの中から 単語を補完することが出来ます。以下のコマンドは「挿入モード」で入力します。 コマンド 同じコマンド 説明 <CTRL>-n 単語を補完。前方検索。 <CTRL>-p 単語を補完。後方検索。 バッファ操作 バッファを利用することで、複数のファイルを一度に読み込むことが出来ます。 コマンド 同じコマンド 説明 :hide edit ファイル名 現在のファイルを隠し、ファイルを開きます。 :buffers :ls バッファの一覧を表示します。 :buffer {番号} バッファ{番号}を表示します。 :bn[ext], :bp[revious] 次のバッファ、前のバッファを表示します。 :bd[elete] バッファをバッファリストから削除します。 ウインドウ操作 ウインドウを分割し、複数のファイルを一度に編集することが出来ます。 コマンド 同じコマンド 説明
  • 23.
    :sp[lit], :vs[plit] 横、縦にウインドウを分割する。 :clo[se] ウインドウを閉じる。 <CTRL>-w o :only 他のウインドウを全て閉じる。 <CTRL>-w hjkl <CTRL>-w 左下上右のウインドウに移動する。 ←↓↑→ :qall 全てのウインドウを閉じ、vim を終了する。 :qall! 全てのウインドウの変更を破棄し、vim を終了 する。 :wall 全てのファイルを保存する。 :wqall 全てのファイルを保存し、vim を終了する。 便利な使い方 ファイル内での位置を表示 <CTRL>-g 行番号を表示・非表示 :set nu[mber] :set nonu[mber] ※ 設定ファイルに書くことでデフォルトで行番号を表示することもできます。 複数行の行頭に文字を挿入(コメント化など)、削除 <CTRL>-v で矩形選択モード。 jk で挿入したい行を選択。 I で行頭に挿入モード。 '//'や'#'を入力。 <ESC> <CTRL>-v で矩形選択モード。 hjkl で消したい範囲を選択。 d で削除。
  • 24.
    プログラムのソースコードなどに色を付ける :syntax on オートインデントを有効にする :set autoindent 選択範囲をソート Vで行選択モード。 jk でソートする範囲を選択 :sort でソート実行。 ※ OS のソートコマンドを使用して':!sort'でも可能。 数字の増減 テキストの数字の上にカーソルを移動。 <CTRL>-a でインクリメント。 <CTRL>-x でデクリメント。 空行の削除 :g/^$/d "Last, First" を "First Last" に変更する :%s/¥([^,]*¥), ¥(.*¥)/¥2 ¥1/ テキストを逆順に並び替える :g[lobal]/^/m0 最後に 他にも、スクリプトを書いたり、タブブラウザのようなタブや OS のコマンドの実行など 高度な機能があります。 Eclipse をバックグラウンドで実行し、連携してメソッドを補完するようなプラグインも
  • 25.