ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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 <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>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 <Esc>
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コマンド
- chmod 権限の変更
- ip IPアドレスの確認
- chown コマンド(所有者の変更)
- chgrp ファイル/ディレクトリのグループ情報の変更
- nohupと'&' プログラムのバックグラウンド実行(ssh接続時)
- lsof 開いているポート番号の確認
- tar ファイルの圧縮と解凍
- file ファイルの種類を表示
- cat ファイルの中身を表示
- head ファイルの先頭部分を表示
- wc 行数/単語数/文字数を確認
- shutdown システムのシャットダウンと再起動
- ps プロセスの確認
- which コマンドの絶対パスを調べる
- yum RedHat系ディストリビューションの管理
- mount ファイルシステムのマウント
- 特定フォルダ以下の特定拡張子のファイルを再帰的に削除する方法
- 特定のフォルダとそのサブフォルダ内にある特定のファイル名のファイルを再帰的に削除
- sed テキスト処理用ストリームエディタ
- awk フィールド単位の柔軟なテキスト処理
- sort 行の並び替え
- uniq 重複行の除去・カウント
- cut 行から特定列を切り出し
- tr 文字の置換・削除
- less ページャでファイルを読む
- more 古典ページャ
- xargs 標準入力をコマンド引数に変換
- paste 複数ファイルを列方向に結合
- top プロセスの動的監視
- htop 強化版インタラクティブプロセス監視
- nice プロセスの優先度を指定して起動
- renice 実行中プロセスの優先度を変更
- jobs シェル管理下のジョブ一覧
- bg ジョブをバックグラウンドで実行
- fg バックグラウンドジョブをフォアグラウンドに
- killall プロセス名でまとめて終了
- pgrep プロセス名から PID を検索
- pkill プロセス名でシグナルを送信
- uname システム情報の表示
- uptime システム稼働時間とロードアベレージ
- free メモリ使用状況の表示
- df ディスク使用量 (ファイルシステム単位)
- du ディレクトリ・ファイル単位の使用量
- lscpu CPU 情報の表示
- lsmod 読み込み済みカーネルモジュール一覧
- lspci PCI デバイス一覧
- dmesg カーネルリングバッファの表示
- w ログイン中ユーザーと負荷の表示
- ping ホストへの到達性とラウンドトリップ確認
- traceroute ホストまでの経路を表示
- netstat ネットワーク接続・ルーティング表示 (旧式)
- ss netstat 後継、ソケット統計
- ifconfig ネットワークインターフェース表示・設定 (旧式)
- dig DNS リゾルバ問い合わせの定番
- route ルーティングテーブル表示 (旧式)
- iptables Linux パケットフィルタリング
- telnet TCP 接続診断・古典的リモートログイン
- arp ARP テーブルの表示・編集 (旧式)
- useradd ユーザーアカウントの作成
- usermod 既存ユーザーアカウントの変更
- userdel ユーザーアカウントの削除
- passwd パスワードの変更・管理
- groupadd グループの追加
- id ユーザーとグループの ID・所属を表示
- whoami 現在のユーザー名を表示
- su 別ユーザーに切り替え
- dnf Red Hat 系の次世代パッケージマネージャ (yum 後継)
- pacman Arch Linux のパッケージマネージャ
- echo 文字列・変数の出力
- export 環境変数の設定と継承
- alias コマンドの別名定義
- source / . スクリプトをカレントシェルで実行
- history コマンド履歴の表示・操作
- type コマンドの種別 (組み込み/関数/エイリアス/外部) を表示
- env 環境変数表示と一時設定でコマンド実行
- set シェルオプションと位置パラメータの操作
- unset 変数・関数の削除
- printf C 風書式付き出力
- systemctl systemd ユニットの管理
- service init.d 互換のサービス管理
- journalctl systemd ジャーナルログの参照
- crontab 定期実行ジョブの登録・編集
- at 指定時刻に 1 回だけコマンド実行
- umount ファイルシステムのアンマウント
- reboot システムを再起動
- halt システムを停止
- date 日付・時刻の表示と設定
- hostname ホスト名の表示・設定
- gzip ファイルを Deflate で圧縮
- gunzip gzip 圧縮ファイルの展開
- bzip2 高圧縮率の圧縮コマンド
- xz LZMA2 ベースの高圧縮コマンド
- zstd Facebook 製の高速圧縮コマンド
- dpkg Debian パッケージの低レベル操作
- rpm Red Hat パッケージの低レベル操作
- snap Canonical の sandbox パッケージマネージャ
- apt Debian/Ubuntu の高レベルパッケージマネージャ
- 7z 7-Zip コマンドラインツール
人気ページ
- 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アノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?