ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
vi / Vim とは
vi は 1976 年に Bill Joy が開発した Unix 標準のテキストエディタです。現在の Linux / macOS では vi コマンドは多くの場合 Vim (Vi IMproved) のシンボリックリンクとなっており、機能拡張された Vim が実体です。
Vim の特徴は モード制で、キーストロークを最小化し高速にテキストを編集できることです。CUI 環境 (SSH 接続先サーバ) でも動作するため、サーバ運用エンジニアには必須スキル。学習曲線は急ですが、習得後の編集効率は圧倒的です。
起動と終了
# ファイルを開く
vi file.txt
# 複数ファイル
vi file1.txt file2.txt
# :n で次、:N で前
# 行番号指定で開く
vi +42 file.txt # 42 行目にカーソル
vi +/search file.txt # search にマッチする行へ
# 読み取り専用
vi -R file.txt
view file.txt
4 つのモード
| モード | 用途 | 突入 | 抜ける |
|---|---|---|---|
| Normal (起動時) | 移動・コピー・削除 | Esc | 各コマンドで他モードへ |
| Insert | 文字入力 | i / a / o | Esc |
| Visual | 範囲選択 | v / V / Ctrl+v | Esc |
| Command-line | 保存・終了・置換 | : / / / ? | Enter / Esc |
「困ったら Esc 連打で Normal に戻る」を覚えておけば事故は起きません。
保存と終了
:w " 保存
:w newfile.txt " 名前を付けて保存
:q " 終了 (未保存なら拒否)
:q! " 強制終了 (変更破棄)
:wq " 保存して終了
:wq! " 強制保存して終了 (読み取り専用上書き)
ZZ " 保存して終了 (Normal モード)
ZQ " 保存せず終了
:x " 変更があれば保存して終了 (:wq とほぼ同じ)
カーソル移動
" 1 文字単位 (HJKL 配列、ホームポジション維持)
h " 左
j " 下
k " 上
l " 右
" 単語単位
w " 次の単語先頭
b " 前の単語先頭
e " 単語末尾
" 行
0 " 行頭
^ " 行頭 (空白以外の最初)
$ " 行末
" 画面
H " 画面先頭 (High)
M " 画面中央 (Middle)
L " 画面末尾 (Low)
" ファイル全体
gg " ファイル先頭
G " ファイル末尾
42G " 42 行目
:42 " 42 行目 (Command-line から)
" 検索
/word Enter " 前方検索
?word Enter " 後方検索
n " 次の一致
N " 前の一致
* " カーソル位置の単語を検索
Insert モードへの遷移パターン
| キー | 動作 |
|---|---|
i | カーソル位置の直前から入力 |
I | 行頭から入力 |
a | カーソルの直後から入力 |
A | 行末から入力 |
o | 下に空行を作って入力 |
O | 上に空行を作って入力 |
s | 1 文字削除して入力 |
S | 行全体削除して入力 |
cw | 単語を削除して入力 |
削除・コピー・ペースト
" 削除
x " 1 文字削除
dd " 1 行削除 (クリップボードに保持)
3dd " 3 行削除
dw " 単語削除
d$ " 行末まで削除 (D も同じ)
d0 " 行頭まで削除
" コピー (yank)
yy " 1 行コピー
3yy " 3 行コピー
yw " 単語コピー
" ペースト
p " カーソルの後にペースト
P " カーソルの前にペースト
" Undo / Redo
u " Undo
Ctrl+r " Redo
. " 直前の操作を繰り返し
検索と置換
" 検索
/word " 前方検索
?word " 後方検索
n / N " 次 / 前
* " カーソル単語を検索
" 置換 (Command-line)
:s/old/new/ " カーソル行の最初の old を new に
:s/old/new/g " カーソル行の全 old を new に
:%s/old/new/g " ファイル全体
:%s/old/new/gc " 全体、確認しながら
:5,20s/old/new/g " 5-20 行目のみ
" 大文字小文字無視
:%s/old/new/gi
" 正規表現
:%s/\d\+/NUM/g " 数字を NUM に置換
:%s/^/# / " 各行の先頭に # 追加 (コメントアウト)
:%s/\s\+$// " 行末の空白削除
Visual モード
v " 文字単位の選択開始
V " 行単位の選択開始
Ctrl+v " 矩形選択開始
" 選択後の操作
d " 削除
y " コピー
c " 削除して Insert モード
> " インデント右
< " インデント左
:s/old/new/g " 選択範囲のみ置換
便利な機能
" 行番号表示
:set number " 表示
:set nonumber " 非表示
" 構文ハイライト
:syntax on
" インデント
:set autoindent
:set smartindent
:set tabstop=4
:set shiftwidth=4
:set expandtab " Tab をスペースに
" 検索ハイライト
:set hlsearch
:set incsearch " 入力中も検索
" 行末の改行コード
:set fileformat=unix
" 文字コード
:set encoding=utf-8
:e ++enc=cp932 file.txt " Shift_JIS で開き直し
" ファイル間移動
:e other.txt " 別ファイルを開く
:bn " 次のバッファ
:bp " 前のバッファ
:ls " バッファ一覧
" ウィンドウ分割
:sp " 水平分割
:vsp " 垂直分割
Ctrl+w h/j/k/l " ウィンドウ間移動
" マクロ
qa " a レジスタに記録開始
[操作]
q " 記録終了
@a " 再生
10@a " 10 回再生
~/.vimrc で設定永続化
" ~/.vimrc に書くと毎回適用される
set number
set relativenumber
syntax on
set autoindent
set tabstop=4
set shiftwidth=4
set expandtab
set hlsearch
set incsearch
set ignorecase
set smartcase
set encoding=utf-8
set fileformat=unix
set clipboard=unnamed " システムクリップボードと連携 (macOS)
colorscheme desert
" キーマップ
nnoremap h
nnoremap j
nnoremap k
nnoremap l
Vim vs Neovim
| 観点 | Vim | Neovim |
|---|---|---|
| 初リリース | 1991 年 | 2015 年 (Vim fork) |
| 設定言語 | Vim script (+ Lua 9.0+) | Lua ファースト |
| LSP 統合 | vim-lsp プラグイン | 組み込み nvim-lspconfig |
| Tree-sitter | プラグイン | 組み込み |
| 非同期 API | 後発で追加 | 最初から |
| 2026 年の主流 | サーバ常駐 | 開発機の主流 |
新規に学ぶなら Neovim + LazyVim / AstroNvim / LunarVim のディストリビューションが推奨です。VS Code に近い IDE 体験を Vim キーバインドで得られます。
vi / Vim の現代的な学習方法
vimtutorコマンド: 30 分の公式チュートリアル (vim 同梱)- VS Code に Vim 拡張を入れて慣らす
- 「Vim Adventures」: ゲーム式学習
- 「Practical Vim」(Drew Neil) / 「実践 Vim」: 古典良書
- Neovim 環境構築は LazyVim ディストリ で 5 分
FAQ
Q: Esc が遠くて使いづらい
A: Ctrl+[ も Esc と同じ。または jj / jk を Esc にマッピングするのが定番:
inoremap jk
Q: 終了の仕方が分からなくて困った
A: Esc → :q! Enter。変更を捨てて強制終了。「Vim から抜け方」は世界で年間 100 万人が検索する問題です。
Q: Vim と Emacs どちらを学ぶべき?
A: SSH 先サーバでも使える Vim 優先。Emacs は独自の世界 (Org-mode 等) で深い。両刀使いも可。
Q: VS Code から Vim に乗り換えるべき?
A: 乗り換えではなく VS Code に Vim 拡張が最強。両方の良いとこ取り。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- ls ファイル/ディレクトリ一覧表示
- sudo ユーザー指定
- cron/crontab ジョブの自動実行と登録方法
- wget http通信によるファイルダウンロード
- rm ファイル/ディレクトリ削除
- pwd カレントディレクトリの表示
- cd ディレクトリの移動
- ./configure
- make
- make install
- unzip ファイルの解凍
- mv ファイル/ディレクトリの移動および名称変更
- mkdir ディレクトリの作成
- touch 空ファイルの新規作成
- vi テキストディタの使用
- find ファイル/ディレクトリ検索
- grep 文字列の検索
- tail ファイルの末尾表示
- curl HTTP通信によるリクエスト
- nslookup ドメインのIP解決
- apt update パッケージリストの情報を更新
- apt upgrade パッケージの更新
- ln リンク/ショートカットの作成と削除
- rsync ファイル/ディレクトリの同期
- ssh リモートとの暗号化通信
- scp sshを利用したファイルのコピー
- unzip zip ファイルを解凍する
- cp ファイル/ディレクトリのコピー
- diffファイルの差分抽出
- fdisk ハードディスクに対する操作
- lsblk デバイスをツリー状で表示する
- kill プロセスを終了させる
- zip ファイルやディレクトリをzip形式に圧縮する
- host ドメインからIPアドレスを確認
- chmod 権限の変更
- ip IPアドレスの確認
- chown ファイル/ディレクトリ所有者の変更
- chgrp ファイル/ディレクトリのグループ情報の変更
- nohupと'&' プログラムのバックグラウンド実行(ssh接続時)
- lsof 開いているポート番号の確認
- tar ファイルの圧縮と解凍
- file ファイルの種類を表示
- cat ファイルの中身を表示
- head ファイルの先頭部分を表示
- wc 行数/単語数/文字数を確認
- shutdown システムのシャットダウンと再起動
- ps プロセスの確認
- which コマンドの絶対パスを調べる
- yum RedHat系ディストリビューションの管理
- mount ファイルシステムのマウント
- 特定フォルダ以下の特定拡張子のファイルを再帰的に削除する方法
- 特定のフォルダとそのサブフォルダ内にある特定のファイル名のファイルを再帰的に削除
人気ページ
- 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アノテーションとは
最近更新/作成されたページ
- SEO タイトル設計とキーワード配置完全ガイド (CTR / LLMO 対応) 2026-06-10 18:13:56
- Vue.js v-bind 完全ガイド (属性 / クラス / スタイル / Composition API) 2026-06-10 18:13:56
- Twitter (X) プラットフォーム完全ガイド 2026 (API / Premium / 競合) 2026-06-10 18:13:56
- PHP 変数スコープ完全ガイド (global / static / use / Arrow Function) 2026-06-10 18:13:56
- jQuery .height() 完全ガイド (innerHeight / outerHeight / box-sizing) 2026-06-10 18:13:56
- WordPress 主要独自関数完全ガイド (Loop / Enqueue / Hook / Conditional Tag) 2026-06-10 18:13:56
- jQuery 要素・値の削除完全ガイド (remove / detach / empty / val) 2026-06-10 18:13:56
- PHP コメント完全ガイド (// / # / /* */ / PHPDoc) 2026-06-10 18:13:56
- PHP 改行出力 (\n / PHP_EOL / nl2br) 完全ガイド 2026-06-10 18:13:56
- JavaScript 確認ダイアログ完全ガイド (confirm / alert / prompt / dialog) 2026-06-10 18:13:56
- UE5 スクリーンショット保存 (Scene Capture) 完全ガイド 2026-06-10 18:12:53
- UE5 Nav Mesh Bounds Volume 完全ガイド 2026-06-10 18:12:53
- EJS テンプレートの共通化 (include) 完全ガイド 2026-06-10 18:12:53
- UE5 カメラ傾き角度制限完全ガイド (Pitch Min/Max) 2026-06-10 18:12:53
- SQLite 完全ガイド (組み込み RDBMS) 2026-06-10 18:12:53
コメントを削除してもよろしいでしょうか?