ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
vi とは
vi(ヴィーアイ)は UNIX 系 OS にほぼ標準搭載されている、モード型のテキストエディタです。1976 年に Bill Joy 氏が BSD UNIX 用に開発し、現在の Linux や macOS のターミナルでも vi コマンドで起動できます。
マウスやカーソルキー(時には不要)に頼らず、キーボードの英字キーだけでファイル編集を完結させる設計になっており、SSH 越しの最低限のターミナルでも確実に動くのが最大の強みです。
起動と終了
# 新規 or 既存ファイルを開く
vi file.txt
# 終了パターン
:q # 変更なしで終了
:q! # 変更を破棄して強制終了
:w # 保存(書き込み)
:wq # 保存して終了
:x # 変更があれば保存して終了(:wq とほぼ同じ)
ZZ # ノーマルモードで :wq と同じ
ZQ # ノーマルモードで :q! と同じ
3 つのモード
| モード | 役割 | 入り方 |
|---|---|---|
| ノーマルモード | カーソル移動・コピー・削除・コマンド呼び出し(既定) | Esc を押す |
| 挿入モード | 文字を入力する | ノーマルから i / a / o 等 |
| コマンドラインモード | 保存・終了・置換・シェル実行など | ノーマルから : / / / ? |
vi 操作で初心者が迷う最大の理由が「いまどのモードか分からない」点です。迷ったら Esc を押してノーマルに戻るのが鉄則です。
挿入モードへの入り方
| キー | 動作 |
|---|---|
i | カーソル位置の手前から挿入 |
a | カーソル位置の直後から挿入 |
I | 行頭から挿入 |
A | 行末から追記 |
o | 下に新しい行を作って挿入 |
O | 上に新しい行を作って挿入 |
s | 1 文字消して挿入 |
カーソル移動
| キー | 動作 |
|---|---|
h j k l | 左 / 下 / 上 / 右 |
w / b | 次の単語の先頭 / 前の単語の先頭 |
0 / $ | 行頭 / 行末 |
gg / G | ファイル先頭 / 末尾 |
5G | 5 行目へジャンプ |
Ctrl-f / Ctrl-b | 1 画面進む / 戻る |
Ctrl-d / Ctrl-u | 半画面進む / 戻る |
削除・コピー・貼り付け
| キー | 動作 |
|---|---|
x | 1 文字削除 |
dd | 1 行削除(同時にヤンク) |
5dd | 5 行まとめて削除 |
dw | 単語を削除 |
d$ | 行末まで削除 |
yy | 1 行ヤンク(コピー) |
5yy | 5 行ヤンク |
p / P | カーソル後 / 前にペースト |
u | アンドゥ |
Ctrl-r | リドゥ |
検索と置換
/foo foo を前方検索(n で次、N で前)
?foo foo を後方検索
:%s/foo/bar/g ファイル全体で foo を bar に置換
:%s/foo/bar/gc 確認しながら置換
:1,10s/foo/bar/g 1〜10 行目だけ置換
保存と終了の使い分け
| 状況 | コマンド |
|---|---|
| 編集を反映して終了 | :wq または ZZ |
| 変更を捨てて終了 | :q! または ZQ |
| 別名で保存 | :w newfile.txt |
| 読み込み専用で開いたまま保存したい | :w !sudo tee %(権限不足時の裏ワザ) |
vi と Vim の関係
現在の多くの Linux ディストリビューションでは、vi を実行すると実体としては Vim(Vi IMproved)が起動します。Vim は vi の互換上位で、シンタックスハイライト・複数バッファ・プラグイン・分割ウィンドウなどの機能が追加されています。
| 名称 | 特徴 |
|---|---|
| vi(オリジナル) | BSD 由来のシンプル版。POSIX 互換 |
| nvi | BSD 系の vi 再実装 |
| Vim | 事実上の標準。シンタックスハイライト / プラグイン |
| Neovim | Vim をリファクタしたモダン版(Lua 拡張) |
初期設定(~/.vimrc)
vi が Vim にエイリアスされている環境なら、ホームディレクトリに .vimrc を作ると起動時に読み込まれます。
" 行番号表示
set number
" シンタックスハイライト
syntax on
" タブをスペース 4 個に
set tabstop=4
set shiftwidth=4
set expandtab
" 検索結果のハイライト
set hlsearch
" 大文字小文字を区別しない(ただし大文字を含むと区別)
set ignorecase
set smartcase
よくあるトラブル
| 症状 | 対処 |
|---|---|
| vi から抜けられない | Esc → :q!(保存しない)または :wq(保存) |
「swap file 既に存在」と言われる | 別プロセスが開いている / 前回クラッシュ。安全なら D(delete)で消す |
| 「Permission denied」で保存できない | :w !sudo tee % で sudo 権限で書き込み |
| 矢印キーで abcd が入る | 古い vi の互換モード。set nocompatible を .vimrc に入れる |
覚えておきたい便利コマンド集
| キー / コマンド | 動作 |
|---|---|
:set number | 行番号表示(解除は :set nonumber) |
:set paste | ターミナルからのペースト時にインデント崩れを防止 |
:syntax on | シンタックスハイライトを有効化 |
gg=G | ファイル全体を自動インデント |
:%!sort | 外部コマンド sort でバッファ全体をフィルタ |
:e! | 編集中のファイルを保存せずに再読み込み |
:r filename | カーソル位置に別ファイルを挿入 |
:r !date | シェルコマンドの結果を挿入 |
v / V / Ctrl-v | 文字 / 行 / 矩形のビジュアル選択 |
.(ドット) | 直前の操作を繰り返す |
マークとジャンプ
編集位置に「しおり」を付けて素早く戻れます。
ma 位置 a としてマーク
'a マーク a の行頭に移動
`a マーク a の正確な位置に移動
'' 直前のジャンプ元へ戻る
Ctrl-o ジャンプリストを戻る
Ctrl-i ジャンプリストを進む
関連
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
同階層のページ
- CKEditor
- vi
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- UE5のEvent Tickノードの使い方|毎フレーム処理とDelta Seconds 2026-06-13 13:26:37
- UE5のレベルブループリントでキャラクターをスポーンさせる方法 2026-06-13 13:26:37
- UE5でAI Move ToがBlockedで失敗する原因と対処方法|NavMesh確認 2026-06-13 13:26:36
- UE5のビューポートの使い方|視点操作・ビューモード・投影の基本 2026-06-13 13:26:36
- Reactのよくあるエラーと対処まとめ|環境構築・npm関連 2026-06-13 13:26:36
- UE5のWorld Compositionとは|サブレベルによる大規模ワールドと非推奨化 2026-06-13 13:26:35
- C++のコンパイルと実行方法|g++の使い方とオプション 2026-06-13 13:26:35
- .protoのgo_packageオプションとは|Goコード生成時のパッケージ指定 2026-06-13 13:26:34
- C++の開発環境構築|コンパイラとIDEの選び方・Hello World 2026-06-13 13:26:34
- gRPCクイックスタート|.proto定義からサーバ・クライアント実装まで 2026-06-13 13:26:33
- C++の関数まとめ|標準入出力(printf・cout・cin)と関数の基本 2026-06-13 13:26:33
- C#・Visual Studioのよくあるエラーと対処まとめ 2026-06-13 13:26:33
- UE5のアウトライナーとは|アクターの一覧・整理・親子付け 2026-06-13 13:26:32
- UE5でSet Input Mode UI Onlyを解除する方法|Game Onlyに戻す 2026-06-13 13:26:32
- UE5エディタの自動保存の頻度を変更する方法|Auto Save設定 2026-06-13 13:26:31
コメントを削除してもよろしいでしょうか?