Skip to content

DNET_Vi

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

vi

概要

  • テキスト・エディタ。

  • CUI時代のエディタなので(マウス、カーソル・キー)を使用しない。

    • Windows系エディタとは操作方法が異なり、

      • 命令を覚える必要がある(画面上にメニューが無い)
      • 一通りのテキスト編集作業ができるようになるまで慣れが必要となる。
    • ターミナル側の機能で、利用できるようになるケースもある。
      (ターミナルの機能が無いと、本項を読んでも利用が難しい感じ)

  • しかし、一旦慣れてしまえばテキスト編集速度を
    得ることができるため、数多くのvi、Vim愛好家が存在する。

詳細

操作

キー

ノーマル・モードでキー入力すると挿入モードに。

  • 編集操作

    • 挿入
キー 説明 なんの?
a カーソルの右から入力開始 Append の a
A 行末から入力開始
i カーソルの左から入力開始 Insert の i
I 行頭から入力開始
o 現在の行の下に1行挿入し、その行頭から入力開始 Open blank line の o
O 現在の行の上に1行挿入し、その行頭から入力開始
  • 置換
キー 説明 なんの?
r カーソル上の1文字を他の1文字に置換 Replace の r
R カーソル上の文字からEscが押されるまでの文字列を置換
s カーソルのある1文字を他の文字列で置換 Substitute の s
S 現在の行を他の文字列で置換
cw カーソル位置からこの語の最後までを置換 Change の c
cf 字 カーソル位置から指定した字までを置換
C カーソル位置から行の最後までを置換
~(チルダ) 大文字/小文字を変更する
  • 削除
キー 説明 なんの?
x カーソル上の1文字削除
X カーソルの左の文字を1文字削除
:行1, 行2 d 行1 から行2 を削除
  • &ペースト

    • カット
キー 説明 なんの?
dd 現在の行を削除(バッファにコピーされる) Delete の d
ndd n行、削除
dw カーソル上の一語を削除
d$ カーソル位置から行の最後までを削除
- コピー
キー 説明 なんの?
yy 現在の行をバッファにコピー Yank の y
nyy n行分をバッファにコピー
yw 単語をバッファにコピー
p バッファ内のテキストをカーソルの[後]に挿入 Paste の p
P バッファ内のテキストをカーソルの[前]に挿入
  • 検索
キー 説明 なんの?
/<文字列> 文字列 を検索する
?<文字列> 文字列を検索する(逆方向)
n 上記に続けて、順方向へ検索する Next の n
N 上記に続けて、逆方向へ検索する
  • 傾向

    • 大文字・小文字で意味が逆転 or 変化する。
    • 数値+編集操作でn文字・行を対象に。
    • w+編集操作でワードを対象に。
  • 移動操作
    ノーマル・モード中の移動操作

    • h j k l
      矢印キーの代替キー

      • h: 左へ移動
      • j: 下へ移動
      • k: 上へ移動
      • l: 右へ移動
    • w b e
      単語単位の移動

      • w: 次の単語の先頭へ移動
      • b: 前の単語の先頭へ移動
      • e: 単語のお尻へ移動
    • 0 $
      行の先頭/末尾への移動

      • 0: カーソルがある行の先頭へ移動
      • $: カーソルがある行の末尾へ移動
    • Ctrl + X
      ページの上/下への移動

      • F: 1ページ下へ
      • B: 1ページ上へ
      • D: 半ページ下へ
      • U: 半ページ上へ
    • 傾向

      • 大文字・小文字で意味が逆転 or 変化する。
      • 数値+移動操作でキーをn回押下したことに。
  • 編集操作 + 移動操作
    編集操作と移動操作を組み合わせて実行できる。

コマンド

  • コマンドライン・モードでコマンドを実行する。

  • コマンドは、「:」を押した後にコマンドを入力

  • 開始・終了

    • help
      ヘルプを表示する。

    • q[!]
      viの終了(ファイルを保存して終了)。
      「!」を付けると、ファイルを保存せずに終了する。

    • qa[!]
      viの終了(編集中ファイルを保存して終了)。
      「!」を付けると、編集中ファイルを保存せずに終了する。

    • x
      ファイルを保存してviを終了する。
      (変更が無い場合は保存しない)

    • wq[!]
      ファイルを保存してviを終了する。
      (変更されていなくても必ず保存)
      「!」を付けると、読取モードでも強制書込して終了。

    • w ファイル名[!]
      ファイル書込。
      「!」を付けると、読取モードでも強制書込して終了。

    • r ファイル名
      ファイル読取。
      カーソルのある行の下へ追加。

  • 編集操作
    幾つかある。

    • :行1, 行2 d
      行1 から行2 を削除

    • &
      直前のsコマンドの繰り返し

    • :%s/置換え前/置換え後
      置換え前の文字列を、置換え後の文字列で置換
      もっとも近くにある文字列一つに対してのみ実行

    • :%s/置換え前/置換え後/g
      ファイルの中すべての文字列に対して、置換えを行う

モード

ノーマル・モード

初期状態

  • 操作

  • モード

    • 演算子未解決モード
      実行範囲の指示が必要なコマンドを実行した場合にVimが指示を待っている状態。

ビジュアル・モード

テキストを選択するだけのモード。

  • セレクトモード
    印字可能文字が入力されると選択範囲を削除して挿入モードに入る。

  • 挿入ビジュアルモード
    挿入モードでビジュアル選択を開始したときのモード。

  • 挿入セレクトモード
    挿入モードでセレクトモードを開始したときのモード。

挿入モード

  • メモ帳ライクな操作性で、編集操作を行うモード。

    • 「i」で挿入を開始
    • 「esc」で挿入モードを終了
    • ...環境によって、カーソルキーが使えない気が。
  • 他のアプリからのコピペを行う場合、

    • ターミナル内ではクリップボードが無いので、
    • ターミナル経由の場合、ターミナルの機能で行う。
  • 挿入モードのモード

    • 挿入ノーマルモード
      挿入モード時に一度だけノーマルモードのコマンドを実行できる。

    • 置換モード
      ノーマルモードからRでこのモードに移行する。
      文字をタイプするとその分文字が置換されていく。

コマンドライン・モード

  • コマンドは、「:」を押した後にコマンドを入力

  • 最後にEnterキーを押下することでコマンドを実行。

  • Exモード
    コマンドライン・モードの変種。

トラブル

完全に忘れた

ファイルを開く。

VM起動後の開発環境のセットアップ(Linux)の「RDS」の該当節のような感じで開く。

終了する。

:q

編集する。

書き込んで終了する。

:wq

エラー

E325:ATTENTIONエラー

参考

Wikipedia

Qiita

eng-entrance.com

移行メモ

  • 置換の表の「なんの?」列で、s / S に「Replace の r」、 cw / cf / C にも「Replace の r」が入っていたが、 これらはそれぞれ Substitute の s、Change の c に由来するコマンドであるため修正した。 また ~(チルダ)は特定の英単語に由来しないため「-」とした。
  • 「編集操作」のコマンドの「行1, 行2」は、削除コマンドの記述であるため 「:行1, 行2 d」に、「&,」は「&」に整えた(削除の表の「:行1, 行2」も同様)。
  • 「ノーマル・モード」の説明にある「編集モード>#y49ed629」は、 リンク先が「挿入モード」であるため「挿入モード」に統一した。
  • 元 Wiki の縦方向セル結合(|~|)は GitHub の表では表現できないため 「〃」に置き換えた。
  • PukiWiki のページ内アンカ(#xxxxxxxx)は GitHub Wiki では再現できないため、 同一ページ内のアンカは見出しから生成されるアンカに張り替え、 他ページのアンカを指すリンクは「〜(ページ名 の該当節を参照)」の形に置き換えた。

Tags: 移行, vi, Vim, テキストエディタ, Linux, ノーマルモード, 挿入モード, コマンドラインモード

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally