Vim

2021-11-15 (月) 13:13:03

Vim とは

  • Vi Improved
  • Linuxで利用できるテキストエディタ
  • viエディタを機能拡張したもの
  • コマンドモードと入力モードを切り替えながら使う

viの操作

viの起動

  • vi <file-name> ※ファイル名を指定して起動
    • vi -R <file-name> ※読み取りモードで起動(編集不可)
  • vi ※空の新規ファイルを開いて起動

ファイルの操作(Exコマンド)

  • 保存
    :w
    :w <file-name>
  • 終了
    :q ※変更がある場合は保存するか確認する
  • 保存しないで終了
    :q!
  • 保存して終了
    :wq
    :x
  • ファイルを開く
    :e <file-name>
  • 最後に保存した状態に復帰する
    :e!
  • 指定したファイルの内容をカレント行の下に読み込む
    :r <file-name>
  • シェルコマンドを実行
    • viを終了しないでシェルコマンドを実行
      :!<command>
  • シェルコマンドを実行して実行結果をカレント行の下に挿入する
    :r!<command>

ファイルの操作

  • 保存して終了
    ZZ ※:wqと同じ

カーソルの操作

  • 上下左右 ※カーソルキー(↑↓←→)も同じ
    j ※上に移動
    k ※下に移動
    h ※左に移動
    l ※右に移動
    • 数字に続けて入力すると指定した回数分繰り返す
      2h ※2文字左に移動
  • 単語
    b ※前の単語の先頭
    e ※単語の末尾
    w ※次の単語の先頭
  • カーソル行
    0 ※先頭
    ^ ※先頭(先頭が空白の場合は、先頭の文字)
    $ ※末尾
  • カーソル行の前行/次行
    - ※前の行の先頭
    [Enter] ※次の行の先頭
  • 画面の最上行/下行
    H ※最上行
    M ※中央行
    L ※最下行
  • ファイルの先頭/末尾
    • 先頭
      gg
      :0
    • 末尾
      G
      :$
  • 指定した行
    数字 ※カーソル行から指定した数
    :数字 ※行番号
    数字G ※ファイルの先頭行番号
  • 括弧の開始/終了
    % ※カーソル位置の括弧に対応する括弧の開始/終了

画面の操作

  • 1画面
    Ctrl+b ※上
    Ctrl+f ※下
  • 半画面
    Ctrl+u ※上
    Ctrl+d ※下

文字の編集

編集の操作

  • 元に戻す
    u
  • やり直し
    Ctrl+r
  • 直前の操作の繰り返し
    .

文字の挿入(入力モード)

  • カーソル位置で入力モード
    i ※カーソル位置の左
    a ※カーソル位置の右
  • 行の先頭/末尾で入力モード
    I ※カーソル行の先頭
    A ※カーソル行の末尾
  • 行を追加して入力モード
    o ※カーソル行の下に行を追加
    O ※カーソル行の上に行を追加

文字の上書き

  • 1文字のみ
    r[char] ※カーソル位置の1文字を、入力した1文字に
  • 入力した文字列に ※Escで文字列の入力を終了
    R[string] ※カーソル位置の文字から右に、入力した文字列と同じ文字数を入力した文字列に
    s[string] ※カーソル位置の1文字を、入力した文字列に
    S[string] ※カーソル行全体を入力した文字列

文字の削除

  • 1文字を削除
    x ※カーソル位置の1文字
    X ※カーソル位置の左の1文字
    
    dl ※「x」と同じ
  • 数字に続けて入力すると指定した回数分繰り返す
    3x ※カーソル位置の文字を含む右の3文字
  • 単語を削除
    dw ※カーソル位置の単語を削除
  • 行を削除
    dd ※カーソル行全体を削除(改行含む)
    • 数字に続けて入力すると指定した回数分繰り返す
      3dd ※カーソル行を含む下の3行
  • カーソル位置から同じカーソル行の指定した場所までを削除
    • 行頭/行末まで
      d^ ※行頭までを削除
      d$ ※行末までを削除
      
    • 左右の最も近いキー入力した文字までを削除
      df[char] ※順方向(右)
      dF[char] ※逆方向(左)

検索

文字列

  • キー入力で指定した文字列を検索
    /[string] ※下方向
    ?[string] ※上方向
  • カーソル位置の文字列を検索
    * ※下方向
    # ※上方向
  • 次の文字列を検索する
    n ※順方向
    N ※逆方向

文字

  • カーソル行のみ
    f[char] ※順方向(右)
    F[char] ※逆方向(左)

文字列の置換

  • 置換対象:カーソル行のみ
    :s/[検索文字]/[置換文字]/ ※最初に検出した文字列のみ
    :s/[検索文字]/[置換文字]/g ※全ての文字列
  • 置換対象:全ての行
    :%s/[検索文字]/[置換文字]/ ※最初に検出した文字列のみ
    :%s/[検索文字]/[置換文字]/g ※全ての文字列
  • 置換対象は指定した範囲の行
    :[開始行番号],[終了行番号]s/[検索文字]/[置換文字]/g
  • 検索文字列が複数あった場合
    • 末尾に"g"なしは、最初に検出した文字列のみ
    • 末尾に"g"ありは、全ての文字列

コピー、削除、ペースト

  • 編集内容を指定する1文字を入力後に、カーソル操作で対象範囲を指定する。
  • 編集内容のどれを指定しても、対象範囲で指定した対象の値はバッファに保存され、ペーストすることができる。

編集内容を指定

y ※コピー
d ※削除
c ※削除(削除後に入力モード)

対象範囲を指定(行単位の操作) ※編集内容がコピー(y)の例

  • 編集内容と同じ文字を2回入力した場合は、カーソル行全体を指定
    yy
  • カーソル操作で対象範囲を指定
    yj ※カーソル行と下の1行
    yk ※カーソル行と上の1行
    y数値j ※カーソル行と、下の指定した数分の行
    y数値k ※カーソル行と、下の指定した数分の行

対象範囲を指定(文字単位の操作) ※編集内容がコピー(y)の例

  • カーソル操作で対象範囲を指定
    yh ※カーソル位置の左1文字
    yl ※カーソル位置の右1文字
    y数値h ※カーソル位置の左、指定した数分の文字
    y数値l ※カーソル位置の右、指定した数分の文字
    y0 ※カーソル位置の左、全ての文字(「y^」と同じ)
    y$ ※カーソル位置の右、全ての文字

ペースト

  • 行単位の操作の場合
    p ※カーソル行の下にペースト
    P ※カーソル行の上にペースト
  • 文字単位の操作の場合
    p ※カーソル位置の右にペースト
    P ※カーソル位置の左にペースト
  • 複数個のペースト
    • pまたはPの前に数値を指定すると、指定した数分をペーストする。

補足

cc[string] ※カーソル行全体を削除(改行は削除せず、入力モード)
cw[string] ※
cf[char] [string] ※

D ※「d$」と同じ。カーソル位置の右、全ての文字を削除
C ※「c$」と同じ。カーソル位置の右、全ての文字を削除(削除後は入力モード)

範囲指定

範囲指定(ビジュアルモード)

  • v ※ビジュアルモードに切り替わり、カーソル操作で範囲を指定する
    • d ※指定した範囲の文字を削除

範囲指定(マーク)

  • 下記操作による範囲指定後に、各編集の操作を実施
    1. 範囲の開始行で:ms
    2. 範囲の終了行で:me
  • 複数行のコピー [#a4a4bf1b]
    1. 「:'s,'ey」と入力し、Enter押下
    2. 貼り付け先で:Shift + p
  • 複数行の削除 [#a69d6aff]
    1. 「:'s,'ed」と入力し、Enter押下
  • 範囲指定の置換 [#d307a0c6]
    1. 「:'s,'es/置換される文字列/置換する文字列/g」と入力し、Enter押下

入力補完

Ctrl+p

設定

viを起動中のみ(終了すると設定が消える)

  • 行番号
    • 表示
      :set number
      :set nu
    • 非表示
      :set nonumber
      :set nonu
  • タブ幅
    :set ts=<number>

常時の設定

  • 設定ファイル
    • /.exrc ※viエディター

    • /.vimrc ※Vim

  • 設定ファイルへの記述
    • コマンドの頭":"を除いた状態で記述する

チュートリアル

  • vimtutor
    • viエディタの操作をチュートリアルで学習できる
  • パッケージ
    • vim-enhanced パッケージ ※CentOS
    • vim パッケージ ※Ubuntu

関連用語