GUIをぐいぐい使ってた人間がVimmerになるためのショートカット&操作メモ
Windows の WezTerm からクラウド開発サーバー(Azure devbox)の tmux + Zsh に接続する構成で使っている、自分がよく忘れるショートカット・コマンド・操作手順をまとめたメモです。
このショートカット集やプラグイン構成は、以下の方々の記事・動画を大変参考にさせていただいております。
多大なる影響を受けました。ありがとうございます。
環境
-
ターミナル: WezTerm(Windows。表示器 + SSH クライアント)
-
開発サーバー: Azure VM (devbox, Ubuntu 24.04)。セッション層は tmux(
ssh devbox → tm でどの端末からも同じセッションに入れる)
-
シェル: Zsh on devbox
-
プラグイン: zoxide, fzf, ghq
各ツールの設定ファイルは https://github.com/AutoFor/dotfiles を参照してください。
(旧構成の WSL2 は #212 で引退。WSL 前提の記述は削除済み)
WezTerm + tmux
Leader キーは Ctrl+q(2秒タイムアウト)。tmux の prefix は Ctrl+b。
#214 以降、Window / Tab / Pane の管理は devbox 上の tmux に一本化した。
WezTerm はただの表示器 + SSH クライアントで、以下のタブ/ペイン系キーはすべて tmux の
prefix シーケンスに自動変換される(ローカルの PowerShell ペインでは何もしない)。
階層の対応: WezTerm の Window/Tab/Pane ≒ tmux の Session / Window / Pane。
Session(旧 Workspace 相当)
セッション = タブ構成ごと切り替えられる作業文脈の単位。リモート側に永続し、切断・再起動・別端末からの接続でもそのまま復帰する。
| ショートカット / コマンド |
動作 |
由来 |
tm |
main セッションに attach(無ければ作成)。シェルで実行 |
tmux main |
tm <名前> |
別セッションに attach(無ければ作成) |
同上 |
<leader> →s |
セッション/ウィンドウ一覧から選択して切り替え |
session |
Ctrl+b → d |
セッションから detach(セッションは生存継続) |
detach |
Tab(実体は tmux ウィンドウ)
タブ一覧は WezTerm のタブバー(ヘッダー)に従来どおりの見た目(矢羽根 + 小さめ UI フォント)で表示される。仕組みは tmux がウィンドウ構成の変化を wezterm-tabs-sync で WezTerm に通知し、WezTerm がタブ風に描画する表示専用の連携。クリックでは切り替えられないので Ctrl+Tab / Ctrl+数字 を使う。tmux 自身のステータスラインは非表示。
| ショートカット |
動作 |
由来 |
Ctrl+t |
新規タブ |
ブラウザ由来(tab) |
Ctrl+w |
現在のタブを閉じる(確認なしで即クローズ) |
ブラウザ由来(window close) |
Ctrl+Tab |
次のタブへ移動 |
ブラウザ由来 |
Ctrl+Shift+Tab |
前のタブへ移動 |
上記の逆 |
Ctrl+1〜Ctrl+9
|
タブ番号で切り替え |
番号=タブ位置 |
Alt+1〜Alt+9
|
タブ番号で切り替え(プレフィックス不要。Termius 等 WezTerm 以外の端末でも効く) |
番号=タブ位置 |
Shift+← / Shift+→
|
前/次のタブへ移動(プレフィックス不要。どの端末でも効く。代償としてペイン内アプリに Shift+矢印は届かない) |
矢印=方向 |
Alt+, |
タブを左に移動 |
, = <(左向き)と同キー |
Alt+. |
タブを右に移動 |
. = >(右向き)と同キー |
<leader> →t |
現在のタブ名を変更 |
tab の名前 |
<leader> →w |
タブ一覧から選択 |
window |
Pane(tmux ペイン)
複数ペインのウィンドウでは、各ペインの上辺ボーダーに 番号: 名前 の名前バーが常時表示される
(アクティブペインは青太字)。名前を付けていないペインは実行中のコマンド名(claude / nvim / zsh 等)が
自動で出るので、1 画面のどのペインで何が動いているか一望できる。1 ペインだけのウィンドウでは非表示。
| ショートカット |
動作 |
由来 |
<leader> →r |
ペインを左右に分割 |
right(左右に分かれる) |
<leader> →d |
ペインを上下に分割 |
down(上下に分かれる) |
<leader> →x |
現在のペインを閉じる(確認なしで即クローズ) |
× 印(消す) |
Alt+h/l/k/j |
左/右/上/下のペインへ移動(端まで来たら nvim 等のアプリへ透過) |
vim の hjkl |
Alt+p |
現在のペインに名前を付ける(空 Enter で解除して自動表示に戻る。<leader> →p / Ctrl+b → Shift+T でも可。名前は 15 分ごとに保存され、VM 再起動後も tmux-resurrect の復元と一緒に戻る) |
pane name |
Alt+r / Alt+Shift+r
|
ペインを次/前に回転して入れ替え |
rotate |
<leader> →z |
現在のペインをズーム(トグル) |
zoom |
<leader> →q |
ペイン番号をオーバーレイ表示して選択 |
tmux の prefix+q と同じ |
Ctrl+b → H/J/K/L |
ペインサイズを調整(連打可。マウスの境界ドラッグでも可) |
vim hjkl の大文字 |
Ctrl+b → Shift+E |
ペインサイズを均等に整える(分割構成はそのまま、幅/高さだけ揃える。3分割の幅を揃えたいときはこれ) |
Even(均等) |
Ctrl+b → Alt+1〜Alt+5
|
プリセットレイアウトに一発切替(1=左右に均等 / 2=上下に均等 / 3=メイン上+残り横並び / 4=メイン左+残り縦並び / 5=タイル状) |
tmux 標準レイアウト |
<leader> →j |
最後に通知が来た Claude Code のペインへジャンプ |
jump |
<leader> →f |
ファイラー(yazi)をどのペインにも属さない浮遊ポップアップで開く(アクティブペインの cwd 起点。Enter でファイルをポップアップ内 nvim で開き、q で閉じる) |
filer |
接続・起動
| ショートカット |
動作 |
由来 |
<leader> →a |
devbox の tmux main セッションを新規タブで開く(VM 停止中でも自動起動してから attach。休止/切断後の復帰はこれ) |
azure |
<leader> →l |
ランチャーメニューを表示(tmux main / mux フォールバック / PowerShell) |
launch |
<leader> →Shift+P |
ローカル PowerShell タブを開く(切り分け用) |
PowerShell |
<leader> →Shift+A |
旧 wezterm mux ドメインに attach(切り分け用フォールバック。通常は使わない) |
Attach |
<leader> →Shift+D |
旧 wezterm mux ドメインから detach(切り分け用フォールバック) |
Detach |
iPad / iPhone からの接続(Tailscale + Termius)
前提: Tailscale アプリ(VPN トグル ON、devbox と同じアカウント)と Termius(無料版で十分)。
SSH 鍵は端末ごとに Termius の Keychain で生成(ED25519)し、公開鍵を devbox の ~/.ssh/authorized_keys に登録する(端末ごとに別鍵にすると紛失時にその端末だけ無効化できる)。
| 項目 |
値 |
| Address |
100.126.96.27(devbox の Tailscale IP。不変) |
| Username |
azureuser(タイプミス注意) |
| Key |
その端末で生成した鍵 |
接続したら tm で main セッションに入る。tm はグループセッション(ウィンドウ共有・ビュー独立)で attach するため:
- 画面下部に tmux のステータスライン(タブ一覧)が表示される(PC は WezTerm タブバーがあるので非表示のまま)
- PC と別のタブを独立して表示できる(タブの中身・増減は全端末で共有)
- 切断するとビュー用セッションは自動削除される(タブは devbox に残る)
モバイルでの操作は「プレフィックスなしキー」「タッチ」「prefix 直打ち」の3通り。
プレフィックスなしキー(ハードウェアキーボード向け)
PC の Ctrl+Tab / Ctrl+数字 は WezTerm がキーを prefix シーケンスに変換して送る仕組みのため、
Termius からはそもそも送信できない。代わりに標準シーケンスで届くキーを tmux 側に用意している:
| 操作 |
キー |
備考 |
| 前/次のタブ |
Shift+← / Shift+→
|
どのアプリでも届く。代償としてペイン内アプリに Shift+矢印は届かない |
| ペイン間移動 |
Ctrl+矢印 |
どのアプリでも届く。代償としてペイン内アプリの Ctrl+矢印(単語ジャンプ等)は使えない |
| タブ番号で移動 |
Alt+1〜Alt+9
|
Termius は設定で Option を Esc(Meta)扱いにすると使える |
| ペイン間移動(vim 風) |
Alt+h/l/k/j(Alt+矢印 でも可) |
同上 |
タッチ操作(mouse on で tmux が反応する)
| 操作 |
動作 |
| ペインをタップ |
そのペインへフォーカス移動 |
| ステータスラインのタブ名をタップ |
そのタブへ切り替え |
| ペイン境界をドラッグ |
ペインサイズ調整 |
| 2本指スクロール |
copy-mode に入って履歴をさかのぼる |
prefix 直打ち(Ctrl+b のあとに。Termius のキーボードバーの ctrl を使う)
ソフトウェアキーボードだけの iPhone でも打てる、どの端末でも確実に効く経路:
| 操作 |
キー(Ctrl+b のあとに) |
| 新しいタブ |
c |
| 次/前のタブ |
n / p
|
| タブ番号で移動 |
1〜9
|
| タブ名変更 |
, |
| タブを閉じる |
&(確認なしで即クローズ) |
| ペイン分割(左右 / 上下) |
| / -
|
| ペイン間移動 |
矢印キー |
| ペイン番号を表示して選択 |
q → 番号 |
| ペインサイズ調整 |
H/J/K/L(連打可) |
| ペインサイズを均等に整える |
E(Shift+e) |
| ズーム(1ペイン全画面をトグル) |
z |
| ペインに名前を付ける |
T(Shift+t。空 Enter で解除) |
| ペインを閉じる |
x(確認なし) |
| セッション/ウィンドウ一覧から選択 |
s |
| コピーモード |
[ |
| 切断(セッションは残る) |
d |
注意: devbox は毎日 22:00 に自動停止する。モバイルから VM を起こす手段は未整備なので、
停止中は PC 側で WezTerm を開くか devbox.ps1 up で起動する(issue #214 Phase 4 の残タスク)。
コピーモード(tmux copy-mode / vi ライク)
<leader> →[ は tmux の copy-mode にブリッジされる(ローカルペインでは WezTerm copy mode)。
マウスホイールでのスクロールでも自動で copy-mode に入る。キーは vi 準拠:
| ショートカット |
動作 |
由来 |
<leader> →[ |
コピーモードを起動 |
vim の [ ブラケット慣習 |
h/j/k/l w/b/e 0/^/$ gg/G
|
vi と同じカーソル移動 |
vim 由来 |
Ctrl+f / Ctrl+b、Ctrl+d / Ctrl+u
|
1ページ/半ページ スクロール |
forward / back / down / up |
/キーワード ?キーワード → n/N
|
前方/後方検索 → 次/前のマッチ |
vim 由来 |
v |
文字単位の選択開始 |
visual |
V |
行単位の選択開始 |
Visual line |
y |
選択範囲をコピーして終了(OSC 52 で Windows のクリップボードに載る) |
yank |
q / Escape |
コピーモードを終了 |
quit / 脱出 |
マウスでのコピー(tmux 構成での正解)
| 操作 |
動作 |
| ドラッグして離す |
離した瞬間に Windows クリップボードへ入る(OSC 52)。その後の Ctrl+Shift+C は不要 — 押すと WezTerm 側の空選択で上書きされるので押さないこと |
| ダブルクリック |
カーソル下のスペース区切りトークンを即コピー。URL やパスは - @ ? を含んでも、複数行に折り返していても一発で全体が取れる |
| トリプルクリック |
その行を即コピー(折り返し行は繋いで 1 行になる) |
<leader> →u |
QuickSelect: 画面上の URL / パス / ハッシュ等にラベルが振られ、ラベルを打つとそれをコピー。行の途中にある URL をマウス無しで拾える(url) |
<leader> →y |
画面に見えているペイン全体をまるごとコピー(選択操作なし。表示中のコード/ログを全部持っていく最終手段。yank) |
Shift+ドラッグ |
tmux を素通りして WezTerm ネイティブ選択(ペイン border やステータスをまたいで選びたいとき用。こちらは Ctrl+Shift+C でコピー) |
Ctrl+クリック |
カーソル下の URL を Windows 側の既定ブラウザで開く(tmux がマウスを掴んでいても WezTerm が横取りする。.wezterm.lua の mouse_bindings で mouse_reporting = true を指定)。折り返した URL は先頭行しか検出できないので、その場合は <leader> →o を使う |
<leader> →o |
画面上の URL を fzf ポップアップで選んでブラウザで開く(open)。行末で切れた URL は次行を推測で継ぎ足すので、tmux の折り返しも Claude Code 等の TUI がハード改行した URL も完全な形で開ける(断片と結合後の両方が候補に出るので、誤結合していたら選び分ける)。表示テキストと URL が別になっている埋め込みリンク(OSC 8。Claude Code の青いリンク等)も候補に出る。1 件だけなら選択なしで即開く(tmux-open-url → SetUserVar open_url → WezTerm が既定ブラウザ起動) |
nvim などマウスを自前で使うアプリのペインでは、クリック/ドラッグはアプリ側に渡る(nvim 内のコピーは nvim の y)。
その他(WezTerm 本体に残る機能)
| ショートカット |
動作 |
由来 |
Ctrl+Shift+c |
クリップボードにコピー |
OS 標準の copy |
Ctrl+Shift+v |
クリップボードから貼り付け |
OS 標準の v = paste |
Ctrl+; / Ctrl+- / Ctrl+0
|
フォントサイズを拡大 / 縮小 / リセット(拡大は Ctrl++ でも可。JIS では + に Shift が要るので Shift 不要の Ctrl+; を主とする)。変更したサイズは ~/.wezterm-font-size に保存され、WezTerm を閉じても次回起動に引き継がれる |
; は + と同じキー |
Ctrl+p / Ctrl+Shift+p
|
コマンドパレットを開く |
palette(VS Code 由来) |
Ctrl+Shift+r |
設定を再読み込み |
reload |
Ctrl+Shift+l |
デバッグオーバーレイ(問題調査用) |
log |
Alt+Enter |
通常 ⇔ 最大化(タスクバーを残す)を切り替え |
Enter = 確定・最大化 |
Claude Code 通知連携
Claude Code の Stop / Notification hook は ~/.claude/notify.sh を呼び、OSC 1337 SetUserVar(claude_notify)を発行して手元の WezTerm に届ける。タイトルに [ホスト名:ディレクトリ名] が付くので、複数タブで Claude Code を並行実行していてもどのセッションの通知か区別できる。
WezTerm 側では以下が動く:
- 通知元ペインのタブタイトルに
🔔 ディレクトリ名 のマークが付く(そのペインにフォーカスすると元のタイトルに復元)
-
クリック可能な Windows トーストが出る。クリックすると WezTerm がフォーカスされ、通知元の tmux ウィンドウ/ペインまで自動で切り替わる(BurntToast +
wezterm-jump: カスタム URI。初回のみ windows/bin/register-wezterm-jump.ps1 で URI スキームを HKCU に登録する。管理者権限不要)
-
<leader> →j でも「最後に通知が来たペイン」へジャンプできる(トーストを消してしまった後の代替。tmux 側の切り替えまで行う)
- 見ているペインからの通知はマークもトーストも出さない
ジャンプの tmux 側切り替えは devbox の ~/.local/bin/tmux-jump-pane が行う。tm のグループセッションで
複数クライアントが繋がっている場合は「同一セッション > 同一グループ > その他」の優先順で、最後に
アクティブだったクライアントの表示を切り替える。
iPhone / Apple Watch へのプッシュ通知(ntfy)
devbox の ~/.config/ntfy-topic(git 管理外)にトピック名を置くと、notify.sh は
tmux にクライアントが 1 つも attach していない(= 誰も画面を見ていない)ときだけ
ntfy.sh にプッシュを送る。席にいるときは WezTerm トーストだけになり、二重通知しない。
- 本文に
(セッション名:ウィンドウ番号 ウィンドウ名 %ペインID) が入るので、どのセッションが
返事待ちかが外出先でも分かる(iPad の Termius で入って該当ウィンドウへ移動する)
- iPhone に ntfy アプリを入れて同じトピックを購読すれば、Apple Watch にも自動でミラーされる
- トピック名は実質パスワードなので推測されにくいランダム文字列にする(例:
claude-devbox-<乱数>)
- ファイルが無ければ何もしない。セルフホストは環境変数
NTFY_SERVER で切り替え
なお tmux を挟む場合(#214 以降の標準構成)は、.tmux.conf の set -g allow-passthrough on に加えて、
送信側が OSC を ESC Ptmux; ... ESC \ の passthrough 形式でラップする必要がある(notify.sh / zshrc の
__term_emit / nvim の agent_terminal.lua が対応済み)。素の OSC 7 や OSC 1337 は tmux に飲まれて届かない。
右上ステータスに接続状態を表示
タブバー右端のステータスに 接続状態・アクティブなキーテーブル・日時 を常時表示している。
接続状態はラベルと色で見分けられる(#214 で tmux 移行後):
| 表示 |
色 |
意味 |
devbox |
緑 |
ssh + tmux の通常運用(セッションはリモート tmux が保持。切断しても生き残る) |
MUX:devbox |
オレンジ |
旧 wezterm mux ドメイン(切り分け用フォールバック) |
SSH:ホスト名 |
赤 |
devbox からさらに別ホストへ素の ssh をした状態(切断するとセッションも消える) |
local |
緑 |
ローカル(Windows) |
仕組み: 通常運用は SSH ドメイン名(devbox-tmux)で判定。加えてシェルが OSC 7 で報告するホスト名(pane:get_current_working_dir().host)を併用し、devbox から先へのネスト SSH を検出している(リモート側のシェルが OSC 7 を発行していることが前提。dotfiles の zsh 設定なら tmux 越しでも発行される)。
SSH(Tailscale 経由)
外出先から Tailscale 経由でリモートマシンに接続するとき、通常の ssh コマンドの代わりに wezterm ssh を使うと、WezTerm のペイン分割などのローカル機能がそのまま使える。
# 通常の SSH(WezTerm の機能は使えない)
ssh user@tailscale-hostname
# WezTerm SSH(リモート側に WEZTERM_PANE が自動でセットされる)
wezterm ssh user@tailscale-hostname
Tailscale の IP(100.x.x.x)や MagicDNS 名がそのまま使える。
なぜ動くか: wezterm ssh は SSH 接続時に WezTerm のマルチプレクサをセットアップし、リモート側に WEZTERM_PANE と WEZTERM_UNIX_SOCKET を自動でセットする。これにより wezterm cli split-pane などのコマンドがリモートからでも動作する。
trzsz(SSH 経由のファイル転送)
ターミナルの中だけでローカル ⇔ リモートのファイル転送ができるツール。scp のようにローカル側で別コマンドを打つ必要がなく、リモート側で trz と打つとローカルにファイル選択ダイアログが開く。
| コマンド |
実行する場所 |
動作 |
由来 |
tssh user@host |
接続元 |
trzsz でラップした SSH 接続(trzsz -d ssh のエイリアス) |
trzsz + ssh
|
trz |
リモート |
接続元にファイル選択ダイアログが開き、選んだファイルをアップロード |
trzsz receive → z(rz 互換) |
trz -d |
リモート |
ディレクトリごとアップロード |
directory |
tsz <file> |
リモート |
ファイルを接続元にダウンロード |
trzsz send → z(sz 互換) |
注意: trzsz は「ssh コマンドを打つ側」にインストールする(GUI ダイアログには zenity 等が必要)。
現構成(Windows → devbox)では、Windows ⇔ devbox のファイル転送は scp devbox:... で行うのが簡単
(ssh devbox エイリアスが scp にも効く)。trzsz は devbox からさらに先のホストに入るときの選択肢。
Zsh
ghq
| ショートカット / コマンド |
動作 |
由来 |
Ctrl+G |
管理リポジトリを fzf で絞り込んで即 cd
|
Git repo |
ghq create <name> |
新規リポジトリを作成(~/ghq/ 以下に配置) |
create |
ghq get <URL> |
リポジトリをクローン(~/ghq/ 以下に配置) |
get = 取得 |
ghq list |
管理リポジトリを一覧表示 |
list |
ghq list -p |
フルパスで一覧表示 |
path |
ghq root |
ghq のルートディレクトリを表示 |
root directory |
ghq create <name> の既定 owner は ai-foo。
別の組織に作るときは owner/repo-name で指定する。
| コマンド |
動作 |
ghq create repo-name |
ai-foo/repo-name に作成 |
ghq create owner/repo-name |
指定した owner に作成 |
zoxide(スマートな cd)
| コマンド |
動作 |
由来 |
z <キーワード> |
履歴から部分一致して cd
|
zoxide の頭文字 |
zi |
fzf で履歴からディレクトリをインタラクティブ選択 |
z + interactive |
zoxide query <キーワード> |
ジャンプせずに候補リストだけ確認 |
query = 照会 |
よく行くディレクトリは z に任せると cd を打つより圧倒的に速い。
| コマンド |
動作 |
由来 |
cfd |
カレントディレクトリ直下のフォルダを fzf で選んで cd
|
cd + fzf + directory |
lrm |
1 つ上に移動してから、元いたディレクトリを確認付きで削除 |
local remove |
注意: lrm は現在のディレクトリ自体を消す。内部で 1 つ上に移動してから確認プロンプトを出すため、rm -rf . を直接打つより安全寄り。
Git Worktree
| コマンド |
動作 |
由来 |
Alt+W |
~/.git-worktrees/ 以下のイシューベース worktree(issue-* パターン)を fzf で選択して cd(プレビュー表示付き) |
Worktree |
gwb |
GitHub Issue 作成 + worktree 作成 + WezTerm 下分割で Claude 起動 |
git worktree branch |
gwb r |
同上・右分割 |
right |
gwb d |
同上・下分割(gwb と同じ) |
down |
gwb t |
同上・新規タブで worktree ディレクトリに cd |
tab |
pplx(Perplexity API 連携)
| コマンド |
動作 |
pplx |
対話モード(pplx> プロンプトで複数ターンの会話、exit/quit/Ctrl+D で終了、/reset で履歴クリア) |
pplx "質問文" |
単発モード。1回answerして終了 |
pplx -m sonar-pro "質問文" |
モデルを指定(既定は sonar、PPLX_MODEL 環境変数でも上書き可) |
Web 検索で根拠付けされた回答を返す Perplexity Sonar API(/v1/sonar)を呼び出す。
APIキーはローカルに保存せず、起動のたびに Azure Key Vault(既定: autofor-kv / シークレット名: perplexity-api-key)から取得する。これにより毎回の起動時に Azure へのログイン状態・Key Vault への権限が正しいかを確認できる(az login が必要な場合はエラーで案内される)。テスト用に PERPLEXITY_API_KEY 環境変数を設定すると、その値が優先され Key Vault 取得はスキップされる。
実体は linux/.local/bin/pplx(devbox 上で実行)。
Git
初期化
| コマンド |
動作 |
由来 |
mkdir <repo-name> && cd <repo-name> |
作業用ディレクトリを作って入る |
新規作成の定番 |
git init |
その場を Git リポジトリとして初期化 |
init = 初期化 |
git branch -M main |
最初のブランチ名を main にそろえる |
Move / rename |
git status |
Git 管理状態を確認 |
status = 状態確認 |
git add . |
現在のファイルをまとめてステージング |
add = 追加 |
git commit -m \"first commit\" |
最初のコミットを作る |
commit = 記録 |
git remote add origin <URL> |
GitHub などのリモートを登録 |
origin = 既定リモート名 |
git push -u origin main |
初回 push と upstream 設定をまとめて実行 |
-u = 追跡設定 |
ブランチ操作
branch / checkout / switch は役割が似て見えるが、担当が違う。
今は「作る・一覧を見る」は branch、「切り替える」は switch を基本にすると整理しやすい。
checkout は昔の万能コマンドで、ブランチ切替とファイル復元の両方を担っていたため混乱しやすい。
| コマンド |
動作 |
ひとことでいうと |
git branch |
ブランチを一覧・作成・削除する |
ブランチ管理 |
git checkout |
ブランチ移動 / 作成 / ファイル復元までできる |
昔の万能コマンド |
git switch |
ブランチ切替専用 |
切替担当 |
一覧・作成・削除 - branch
| コマンド |
動作 |
由来 |
git branch |
ブランチ一覧を表示 |
branch = 枝 |
git branch feature/test |
新しいブランチを作成する。今いるブランチはそのまま |
作るだけで移動しない |
git branch -d feature/test |
ブランチを削除する |
-d = delete |
旧コマンド - checkout
| コマンド |
動作 |
由来 |
git checkout -b feature/test |
ブランチを作ってそのまま切り替える |
-b = branch |
切替 - switch
| コマンド |
動作 |
由来 |
git switch main |
ブランチを切り替える |
switch = 切り替え |
git switch -c feature/test |
ブランチを作って切り替える |
-c = create |
今のおすすめは、作成・一覧は git branch、移動は git switch。
git checkout は古い記事や README にまだよく出るので、「読むための知識」として押さえておくと混乱しにくい。
リモート
origin = リモートリポジトリ(GitHub 等)につけた短い別名。git remote -v で確認できる。
初回接続
| コマンド |
動作 |
ひとことでいうと |
gh repo create AutoFor/TicketRadar --private --source=. --remote=origin |
GitHub の repo を作って、ローカルの origin も設定する |
GitHub につなげる初回コマンド |
gh repo create ... --source=. --remote=origin で GitHub 側の repo 作成とローカルの接続をまとめて行う。
接続確認
| コマンド |
動作 |
ひとことでいうと |
git remote -v |
origin などのリモート URL を表示する |
-v = verbose(詳しく表示) |
git fetch origin |
GitHub のリモートへ実際にアクセスできるか確認する |
通信確認 |
git remote -v で GitHub の URL が出ていれば、リモート設定はできている。git fetch origin が通れば、実際に GitHub と接続できていると見てよい。
毎回の push
| コマンド |
動作 |
ひとことでいうと |
git push |
ローカルの変更をリモートへ送る |
普段の送信 |
git push -u origin main |
初回 push と upstream 設定をまとめて実行する |
最初の送信と追跡設定 |
git push は毎回の送信に使う。初回だけ git push -u origin main にすると、upstream も同時に設定できる。
同期 / 強制上書き
pull = 足す(ローカルを残しながら統合)、reset --hard = 捨てて合わせる(ローカル作業が消える)。
| コマンド |
動作 |
ローカル変更 |
git pull |
fetch + merge(または rebase)でリモートを統合 |
残る(コンフリクトあり得る) |
git reset --hard origin/main |
現在ブランチを origin/main と同じ状態に強制上書き |
消える(未コミット・add 済み・ローカルコミットすべて) |
よくある使い分け:
| 状況 |
コマンド |
| 普段の更新 |
git pull --rebase |
| ローカルがぐちゃぐちゃで GitHub 状態に戻したい |
git fetch origin && git reset --hard origin/main |
Linux コマンド集
パス記号
| 記号 |
意味 |
例 |
. |
カレントディレクトリ(自分がいる場所) |
./script.sh |
.. |
1つ上の階層 |
cd .. |
../.. |
2つ上の階層 |
cd ../.. |
~ |
ホームディレクトリ(/home/ユーザー名) |
cd ~ |
/ |
ルートディレクトリ(最上位) |
cd / |
- |
直前にいたディレクトリ |
cd - |
ホームディレクトリ vs ルートディレクトリ
|
ルート /
|
ホーム ~
|
| 場所 |
ファイルシステムの最上位 |
/home/ユーザー名/ の中 |
| 誰のもの |
システム全体 |
自分専用 |
| Windows で言うと |
C:\ |
C:\Users\ユーザー名\ |
| 普段使う? |
ほぼ触らない |
ここで作業する |
ディレクトリ移動
| 操作 |
コマンド |
| ホームへ移動 |
cd ~ または cd
|
| ルートへ移動 |
cd / |
ファイル操作
| コマンド |
動作 |
cp src dst |
ファイルをコピー |
cp -r src dst |
ディレクトリを再帰的にコピー |
mv src dst |
ファイル/ディレクトリを移動またはリネーム |
rm file |
ファイルを削除 |
rm -r dir |
ディレクトリを再帰的に削除 |
mkdir dir |
ディレクトリを作成 |
mkdir -p a/b/c |
中間ディレクトリも含めて作成 |
touch file |
空ファイルを作成(または更新日時を更新) |
ls |
ファイル一覧を表示 |
ls -la |
隠しファイル含む詳細一覧を表示 |
pwd |
現在のディレクトリのパスを表示(pwd は Print Working Directory の略。Print = 表示する、Working Directory = 現在作業しているディレクトリ) |
cat file |
ファイルの内容を表示 |
less file |
ファイルをページ送りで表示(q で終了) |
圧縮ファイルの解凍
unzip archive.zip は Linux シェルで打つコマンド。Neovim のコマンドラインで実行する場合は、Ex コマンドではなくシェルコマンドとして渡す必要があるので :!unzip archive.zip のように先頭に ! を付ける。
| 場所 |
コマンド |
動作 |
| Linux シェル |
unzip archive.zip |
現在のディレクトリに zip を解凍 |
| Linux シェル |
mkdir -p archive && unzip archive.zip -d archive |
archive/ を作ってその中に zip を解凍 |
| Neovim 内 |
:!unzip archive.zip |
Neovim からシェルを呼び出して zip を解凍 |
| Neovim 内 |
:!mkdir -p archive && unzip archive.zip -d archive |
Neovim からシェルを呼び出し、archive/ を作ってその中に zip を解凍 |
Neovim
Leader キーは Space。
Normal モード
起動・終了
| コマンド |
動作 |
由来 |
nvim <ファイル> |
ファイルを指定して起動 |
Neovim
|
nvim . |
カレントディレクトリを開いて起動 |
. = カレントディレクトリ |
:qa |
全ウィンドウを閉じて終了 |
quit all |
:qa! |
未保存の変更を破棄して強制終了 |
! = 強制 |
:wqa |
全ファイルを保存して終了 |
write + quit all |
ファイル操作
| キー / コマンド |
動作 |
由来 |
:e |
ファイルをディスクから再読み込み(リロード) |
edit(再編集=再読み込み) |
:w |
保存 |
write |
:q |
閉じる |
quit |
:wq |
保存して閉じる |
write + quit |
:!<コマンド> |
Neovim 内からシェルコマンドを実行(例: :!cp -r src .) |
! = シェルコマンド実行 |
コピー・貼り付け・切り取り
この dotfiles では clipboard=unnamedplus を使っているので、通常の y / p はそのままシステムクリップボードと連携する。
一方で d / x は黒穴レジスタに捨てる設定なので、削除してもクリップボードは汚れない。
| キー |
動作 |
由来 |
yy |
現在行をコピー |
yank line |
yw |
単語をコピー |
yank word |
y$ |
カーソル位置から行末までコピー |
yank to end |
p |
カーソル後ろ / 次の行に貼り付け |
paste |
P |
カーソル前 / 前の行に貼り付け |
Paste before |
dd |
現在行を削除(切り取りではなく削除のみ) |
delete line |
dw |
単語を削除(切り取りではなく削除のみ) |
delete word |
x |
1文字削除(切り取りではなく削除のみ) |
excise |
元に戻す/やり直す
| キー |
動作 |
由来 |
u |
元に戻す(Undo) |
undo |
Ctrl+r |
やり直す(Redo) |
redo |
文字削除
| キー |
動作 |
由来 |
x |
カーソル下の1文字を削除 |
× 印(消す)、または excise |
X |
カーソルの左の1文字を削除 |
x の逆方向(大文字=逆) |
dw |
単語を削除(次の単語の先頭まで) |
delete word |
db |
単語を後方に削除 |
delete backward |
dd |
行全体を削除 |
delete(dd = 行全体) |
D |
カーソルから行末まで削除 |
Delete to end(大文字=行末まで) |
d0 |
カーソルから行頭まで削除 |
delete to 0(行頭) |
diw |
単語全体を削除(空白は残す) |
delete inner word |
daw |
単語全体+前後の空白を削除 |
delete around word |
di" |
"..." の中身を削除 |
delete inner "
|
da" |
"..." ごと削除(引用符含む) |
delete around "
|
vi' |
'...' の中身を選択(引用符は含まない) |
visual inner '
|
va' |
'...' ごと選択(引用符含む) |
visual around '
|
di' |
'...' の中身を削除 |
delete inner '
|
da' |
'...' ごと削除(引用符含む) |
delete around '
|
ci' |
'...' の中身を削除して挿入モードへ |
change inner '
|
yi' |
'...' の中身をコピー |
yank inner '
|
c 系 |
d と同じ範囲を削除してインサートモードへ |
change |
:normal コマンドを使うと、全行に対してノーマルモードの操作を一括適用できる:
| コマンド |
動作 |
内訳 |
:%normal 0x |
全行の先頭1文字を削除 |
% = 全行、0 = 行頭へ移動、x = 1文字削除 |
行結合
| キー |
動作 |
由来 |
J |
現在の行と次の行を結合して、改行を削除(1行にする) |
Join |
gJ |
スペースを挟まずに結合 |
g を付けて別バリエーションの join |
文字移動
| キー |
動作 |
由来 |
h |
左に1文字移動 |
vim hjkl(h = 左) |
l |
右に1文字移動 |
vim hjkl(l = 右) |
0 |
行頭に移動 |
列 0(ゼロ番目) |
^ |
行頭の最初の文字に移動 |
正規表現の行頭アンカー |
$ |
行末に移動 |
正規表現の行末アンカー |
単語移動
| キー |
動作 |
由来 |
w |
次の単語の先頭へ移動 |
word |
b |
前の単語の先頭へ移動 |
backward |
e |
次の単語の末尾へ移動 |
end |
ge |
前の単語の末尾へ移動 |
e の逆方向 |
W |
次の WORD 先頭へ移動(空白区切り、- 等を含む) |
WORD |
B |
前の WORD 先頭へ移動(空白区切り) |
Backward WORD |
E |
次の WORD 末尾へ移動(空白区切り) |
End of WORD |
w/e は iskeyword 定義の単位(- で区切られる)、W/E/B はスペースまでを 1 かたまりとして扱う。apxi-yasdfa-ffff 全体を一気に選ぶなら vE。
行番号移動
| キー / コマンド |
動作 |
由来 |
:行番号 |
指定行へジャンプ(例: :42) |
: = コマンドモード |
行番号G |
指定行へジャンプ(例: 42G) |
Go to line |
gg |
ファイルの先頭へ |
go(gg = 先頭) |
G |
ファイルの末尾へ |
Go(末尾) |
数字j |
現在行から N 行下へ移動(例: 10j) |
j = 下(vim hjkl) |
数字k |
現在行から N 行上へ移動(例: 10k) |
k = 上(vim hjkl) |
スクロール
| キー |
動作 |
由来 |
Ctrl+f |
1画面分下にスクロール |
forward(1ページ) |
Ctrl+b |
1画面分上にスクロール |
backward(1ページ) |
Ctrl+d |
半画面分下にスクロール |
down(半ページ) |
Ctrl+u |
半画面分上にスクロール |
up(半ページ) |
gg |
ファイルの先頭に移動 |
go(先頭) |
G |
ファイルの末尾に移動 |
Go(末尾) |
ウィンドウ移動
| キー |
動作 |
由来 |
<leader>h |
左のウィンドウに移動 |
vim hjkl(h = 左) |
<leader>l |
右のウィンドウに移動 |
vim hjkl(l = 右) |
<leader>j |
下のウィンドウに移動 |
vim hjkl(j = 下) |
<leader>k |
上のウィンドウに移動 |
vim hjkl(k = 上) |
<leader>w |
次のウィンドウに移動(順番に切り替え) |
window |
<leader>c |
現在のウィンドウを閉じる |
close |
:q |
現在のウィンドウを閉じる |
quit |
Ctrl+Home |
左のウィンドウに移動(ノーマル・インサート・ターミナルモード共通) |
Home = 先頭・左端 |
Ctrl+End |
右のウィンドウに移動(ノーマル・インサート・ターミナルモード共通) |
End = 末尾・右端 |
ファイル内検索
| キー / コマンド |
動作 |
由来 |
/キーワード |
カーソル以降を前方検索 |
/ = 区切り・検索(vi 由来) |
?キーワード |
カーソル以前を後方検索 |
? = 疑問(逆方向探索) |
n |
次のマッチへ移動 |
next |
N |
前のマッチへ移動 |
Next(大文字=逆方向) |
* |
カーソル下の単語を前方検索 |
* = ワイルドカード(単語全体にマッチ) |
# |
カーソル下の単語を後方検索 |
* の逆(# は * の隣キー) |
:noh |
検索ハイライトを消す |
no highlight |
置換
| キー / コマンド |
動作 |
由来 |
:s/old/new/ |
現在行の最初のマッチを置換 |
substitute |
:s/old/new/g |
現在行の全マッチを置換 |
global(行内全置換) |
:%s/old/new/g |
ファイル全体の全マッチを置換 |
% = 全行 + global |
:%s/old/new/gc |
ファイル全体を1件ずつ確認しながら置換 |
confirm |
:'<,'>s/old/new/g |
ビジュアル選択範囲内の全マッチを置換(ビジュアルモードで :) |
'<,'> = 選択範囲 |
:%s/\bold\b/new/g |
単語境界付きで完全一致のみ置換(部分一致を除外) |
\b = boundary |
:%s/old/new/gi |
大文字小文字を無視して全置換 |
ignore case |
確認モード(c オプション)の回答キー:
| キー |
動作 |
y |
この箇所を置換 |
n |
この箇所をスキップ |
a |
残りを全て置換 |
q |
置換を中止 |
l |
この箇所だけ置換して終了 |
使用例:
| やりたいこと |
コマンド |
現在行の foo を bar に全部置換 |
:%s/foo/bar/g の代わりに :s/foo/bar/g
|
ファイル全体の変数名 oldName を newName にリネーム |
:%s/oldName/newName/g |
http:// を https:// に全置換(/ を含むため区切り文字を変更) |
`:%s |
class という単語のみ置換(classname などは除外) |
:%s/\bclass\b/Class/g |
| 1〜10行目だけ置換 |
:1,10s/foo/bar/g |
| 確認しながら安全に全置換 |
:%s/foo/bar/gc |
選択範囲内の TODO を DONE に置換(ビジュアルで範囲選択後 :) |
:'<,'>s/TODO/DONE/g |
; を改行に置換(置換文字列側では \n が改行) |
:%s/; /\n/g |
折りたたみ(fold)
この設定では nvim-ufo を使っており、YAML は yamlls の fold 情報を優先して使う。
そのため、VS Code っぽく YAML の階層をそのまま畳める。
カーソル下の fold 操作:
| キー |
動作 |
由来 |
zo |
1段階だけ開く |
open |
zO |
カーソル位置の fold を再帰的にすべて開く |
Open all(大文字=再帰) |
zc |
1段階だけ閉じる |
close |
zC |
カーソル位置の fold を再帰的にすべて閉じる |
Close all(大文字=再帰) |
za |
fold をトグル(1段階) |
alternate |
zA |
fold を再帰的にトグル |
Alternate all(大文字=再帰) |
zv |
カーソル行が隠れていれば必要な分だけ開く |
view cursor line |
ファイル全体の fold 操作:
| キー |
動作 |
由来 |
zR |
全ての fold を開く |
Reduce all folds |
zM |
全ての fold を閉じる |
More folds |
よく使うパターン:
| やりたいこと |
操作 |
| 今いるメソッド配下を一気に展開 |
zO |
| 今いるメソッド配下を一気に畳む |
zC |
| 全部畳んでカーソル行だけ表示 |
zM → 移動 → zv
|
| YAML の階層をざっと閉じてから必要箇所だけ見る |
zM → 移動 → za or zo
|
Insert モード
モード移動
| キー |
動作 |
由来 |
Esc |
Insert モードを抜けて Normal モードに戻る |
Escape = モード離脱 |
ウィンドウ移動
| キー |
動作 |
由来 |
Ctrl+Home |
左のウィンドウに移動 |
Home = 先頭・左端 |
Ctrl+End |
右のウィンドウに移動 |
End = 末尾・右端 |
Visual モード
範囲選択
| キー |
動作 |
由来 |
v |
文字単位で選択開始 |
visual |
V |
行単位で選択開始 |
Visual line(大文字=行単位) |
コピー・貼り付け・切り取り
| キー |
動作 |
由来 |
y |
選択範囲をコピー |
yank |
p |
選択範囲を貼り付けで置き換え |
paste |
d |
選択範囲を削除(切り取りではなく削除のみ) |
delete |
x |
選択範囲を削除(切り取りではなく削除のみ) |
excise |
置換・コマンド実行
| キー / コマンド |
動作 |
由来 |
: |
選択範囲付きでコマンドラインを開く |
'<,'> が自動で入る |
:'<,'>s/old/new/g |
選択範囲内の全マッチを置換 |
'<,'> = 選択範囲 |
WezTerm ペインへの送信
| キー |
動作 |
由来 |
<leader>y |
選択範囲の ファイル:行 または ファイル:開始行-終了行 を右ペインに送信 |
yank to pane |
Terminal モード
モード移動
| キー |
動作 |
由来 |
Alt+q |
ターミナルモードから Normal モードに戻る |
quit terminal mode |
Esc+Esc |
ターミナルモードを抜けて左ウィンドウへ移動 |
二度押しで確定(Claude Code → エディタ) |
ウィンドウ移動
| キー |
動作 |
由来 |
Ctrl+Home |
ターミナルモードを抜けて左ウィンドウへ移動 |
Home = 先頭・左端 |
Ctrl+End |
ターミナルモードを抜けて右ウィンドウへ移動 |
End = 末尾・右端 |
プラグイン
Telescope
ファジーファインダー。ファイル名・テキスト・バッファ・履歴などをインクリメンタルに検索できる。
| キー |
動作 |
由来 |
<leader>ff |
ファイル名で検索して開く |
find files |
<leader>fg |
プロジェクト全体をテキスト検索(live grep) |
find grep |
<leader>fw |
カーソル下の単語でテキスト検索 |
find word |
<leader>fb |
開いているバッファ一覧 |
find buffers |
<leader>fr |
最近開いたファイル一覧 |
find recent |
nvim-tree
左サイドバーにファイルツリーを表示するエクスプローラー。
ツリー操作
| キー |
動作 |
由来 |
Ctrl+n |
ファイルツリーを開閉 |
nvim-tree |
<leader>tf |
nvim-tree にフォーカス(閉じていれば開く) |
tree focus |
<leader>ef |
エディタにフォーカスを戻す |
editor focus |
<leader>tR |
ツリーを最新状態に更新 |
tree Reload(大文字=更新) |
<leader>tr |
カーソル下のディレクトリをルートに変更して再表示 |
tree root |
Ctrl+] |
フォルダを nvim-tree 内部のルートに変更(:pwd は変わらない) |
] = 深く潜る(vim 慣習) |
W |
ツリー全体を折りたたむ(collapse all) |
大文字で全体操作 |
E |
ツリー全体を再帰的に展開(expand all) |
大文字で全体操作 |
絞り込み
| キー |
動作 |
由来 |
f |
ファイル名でライブフィルター(絞り込み) |
filter |
F |
フィルターをクリア |
Filter clear(大文字=リセット) |
ファイル・フォルダ操作
| キー |
動作 |
由来 |
a |
新規ファイル/ディレクトリを作成(末尾に / でディレクトリ) |
add |
A |
フォルダのみ作成(プロンプトに名前入力) |
Add directory(大文字=ディレクトリ専用) |
d |
削除 |
delete |
r |
リネーム(パスごと書き換えで移動も可) |
rename |
m |
ファイル/フォルダをマーク(複数選択)/再度押すと解除 |
mark |
bmv |
マークしたファイルをカーソル位置のディレクトリに一括移動 |
bulk move |
x |
カット(マーク済みがあれば一括、なければカーソル下を対象) |
excise(切り取り) |
c |
コピー(マーク済みがあれば一括、なければカーソル下を対象) |
copy |
p |
カット/コピーしたファイルをカーソル位置のディレクトリに貼り付け |
paste |
注意: c / x / p は同一 Neovim インスタンス内でのみ有効。別ウィンドウの Neovim との間ではクリップボードが共有されないため、ターミナルで mv / cp コマンドを使う。
mv "ファイルパス" . # 現在のディレクトリ直下に移動
cp "ファイルパス" . # 現在のディレクトリ直下にコピー
ファイルを開く
| キー |
動作 |
由来 |
Enter |
ファイルを開く / フォルダを展開 |
確定・実行 |
Tab |
フォーカスを保ったままファイルをプレビュー |
タブ=仮表示 |
e |
水平分割で開く |
edit horizontal split |
補足: zip / tar / gz / 7z は nvim-tree 上には表示されるが、Enter / Tab ではエディタに開かない設定。解凍コマンドは上の「Linux コマンド集 > 圧縮ファイルの解凍」を参照。
補足: pptx / ppt / pdf は nvim-tree 上に表示され、Enter / Tab ではエディタに展開せず Windows の既定アプリ(PowerPoint / PDF ビューア等)で開く設定(explorer.exe 経由、WSL2用)。
パスコピー
| キー |
動作 |
由来 |
gy |
絶対パス(Linux)をクリップボードにコピー |
get yank |
gW |
Windows パスをクリップボードにコピー(WSL2用) |
get Windows path |
gE |
Windows の File Explorer で開く。ファイルは選択状態、フォルダはそのまま開く |
get/go Explorer |
gV |
VSCode(WSL Remote 経由)でカーソル下のノードを開く |
g = go / V = VSCode |
gr |
相対パスをクリップボードにコピー |
get relative path |
<leader>y |
ノードのパスを右 WezTerm ペイン(Claude Code 等)に送信 |
yank to pane |
glow
Markdown をターミナル内でレンダリングしてプレビューするプラグイン。
| キー |
動作 |
由来 |
<leader>md |
右ペインで glow プレビューを開く(markdown ファイルのみ) |
markdown |
Alt+q → <leader>c
|
glow プレビューを閉じる(ターミナルモード抜け → ウィンドウ閉じる) |
quit terminal → close |
scratch.nvim
フローティングウィンドウでサッと書ける一時メモ用プラグイン(reybits/scratch.nvim)。
| キー |
動作 |
由来 |
<leader>n |
スクラッチパッドを開く / 閉じる |
note |
タイムスタンプ付き一時メモ
スクラッチパッドと違い、ファイルとして残したい一時メモ用。zsh の memo コマンド一発でタイムスタンプ付きメモが開き、追加のメモは nvim 内から <leader>N で作れる。
| キー / コマンド |
動作 |
由来 |
memo(zsh) |
メモディレクトリ(~/memo。MEMO_DIR で変更可)に yyyymmddhhmmss.md を作成して nvim で開く |
memo |
<leader>N |
カレントディレクトリに yyyymmddhhmmss.md を作成して開く |
New note(<leader>n の Shift 版) |
outline.nvim
LSP シンボルや Markdown 見出しをサイドバーにアウトライン表示するプラグイン。
| キー |
動作 |
由来 |
<leader>o |
アウトラインを開閉(Markdown の見出し一覧/LSP シンボル) |
outline |
octo.nvim
Neovim から GitHub の Issue・PR・Discussion を操作するプラグイン。
| キー |
動作 |
由来 |
<leader>oi |
GitHub Issue 一覧を開く |
octo issue |
<leader>op |
GitHub Pull Request 一覧を開く |
octo pull request |
<leader>od |
GitHub Discussion 一覧を開く |
octo discussion |
<leader>on |
GitHub Notification 一覧を開く |
octo notification |
<leader>oI |
GitHub Issue を作成 |
octo Issue create(大文字=作成) |
<leader>os |
Issue/PR を検索 |
octo search |
<leader>oC |
Issue をクローズ(Issue バッファ内) |
octo Close(大文字) |
<leader>oR |
Issue を再オープン(Issue バッファ内) |
octo Reopen(大文字) |
<leader>ola |
ラベルを追加(Issue/PR バッファ内) |
octo label add |
<leader>olr |
ラベルを削除(Issue/PR バッファ内) |
octo label remove |
<leader>opa |
親 Issue を追加(Issue バッファ内) |
octo parent add |
<leader>opr |
親 Issue を解除(Issue バッファ内) |
octo parent remove |
<leader>ope |
親 Issue を編集(Issue バッファ内) |
octo parent edit |
<leader>oca |
子 Issue を追加(Issue バッファ内) |
octo child add |
<leader>ocr |
子 Issue を削除(Issue バッファ内) |
octo child remove |
AI 連携
claudecode.nvim
Neovim から Claude Code を操作するプラグイン。右パネルにターミナルを表示し、ファイル追加・選択範囲送信などが行える。
| キー |
動作 |
由来 |
<leader>ac |
Claude Code を開閉(:Claude でも可) |
ai claude |
<leader>af |
Claude Code にフォーカス |
ai focus |
<leader>ab |
現在のファイルを Claude Code に追加 |
ai buffer |
<leader>as |
選択範囲を Claude Code に送信(ビジュアルモード) |
ai send |
<leader>av |
縦分割(vertical)で Claude Code を開く(MCP連携あり) |
ai vertical |
<leader>ah |
横分割(horizontal)で Claude Code を開く |
ai horizontal |
codex.nvim
Neovim から OpenAI Codex CLI を操作するプラグイン。サイドパネルに Codex ターミナルを表示する。
| キー |
動作 |
由来 |
<leader>cx |
Codex を開閉(:Codex でも可) |
codex
|
<leader>cf |
Codex にフォーカス(閉じていれば開く) |
codex focus |
Claude Code 再起動
Neovim 内の Claude Code は「閉じて再度開く」ことで再起動できる(claudecode.nvim の既知仕様)。
| キー / コマンド |
動作 |
由来 |
<leader>ac(Claude Code フォーカス中) |
Claude Code パネルを閉じる(=セッション終了) |
ai claude(トグル) |
<leader>ac(閉じた後) |
新しい Claude Code プロセスを起動(=再起動) |
同上(トグル) |
:ClaudeCodeClose |
パネルを明示的に閉じる |
コマンド名そのまま |
ターミナル内の Claude Code プロセス自体を再起動したい場合:
| コマンド |
動作 |
由来 |
exit または Ctrl+D
|
Claude Code セッションを終了 |
exit / EOF(D = end of file) |
claude |
新規セッションで Claude Code を起動 |
コマンド名そのまま |
claude -r <セッション名> |
指定セッションで再開 |
resume |
claude -y / claude da
|
権限確認をスキップして起動(--dangerously-skip-permissions) |
yes(codex -y と統一)/ danger の略 |
トークン使用量・コスト集計(ccusage)
ccusage で Claude Code / Codex の使用量とコストを集計。alias ccusage='npx ccusage@latest' で毎回最新版を実行(グローバルインストール不要)。
| コマンド |
動作 |
由来 |
ccusage / ccusage daily
|
日別のトークン使用量・コスト(デフォルト) |
daily |
ccusage weekly |
週別集計 |
weekly |
ccusage monthly |
月別集計 |
monthly |
ccusage session |
会話セッション別集計 |
session |
ccusage blocks --live |
5時間課金枠をライブ表示 |
blocks |
ccusage daily --since 2026-06-01 --until 2026-06-18 |
期間指定 |
since/until |
ccusage daily --json |
JSON 出力 |
json |
Claude Code ゾンビプロセス防止
| コマンド / 操作 |
目的 |
Ctrl+D(セッション終了時) |
明示的に閉じてゾンビプロセスを防ぐ |
ps aux | grep claude |
残存する不要な claude プロセスを確認 |
Claude Code プロンプト入力
| キー |
動作 |
由来 |
Ctrl+J |
プロンプト内で改行(送信せずに次の行へ) |
J = 下方向(vim hjkl) |
Ctrl+L |
プロンプトをクリアして入力欄を空にする |
terminal の clear を連想しやすい |
Gmail
キーボードショートカットを使うには、設定 → すべての設定 → 全般 → 「キーボードショートカット:オン」にする必要あり。
受信トレイをさばく基本フロー
- 常に
g → i で受信トレイへ戻る
-
j / k で次に読む候補のスレッドへ移動する
- ちゃんと読むときは
o または Enter で開く → 読んだら e でアーカイブ → u で一覧へ戻る
- 要らないときは一覧上で
x → # で削除、または x → e でアーカイブ
基本の検索ショートカット
| ショートカット |
動作 |
/ |
メール検索バーにカーソルを移動 |
メール操作
| ショートカット |
動作 |
j / k
|
一覧で上下に移動(カーソルを合わせる) |
o / Enter
|
カーソル中のスレッドを開く |
x |
カーソルのスレッドを選択(チェックを入れる) |
# |
選択中のスレッドを削除(ゴミ箱へ移動) |
e |
現在のスレッド、または選択中のスレッドをアーカイブ |
u |
スレッド表示から一覧へ戻る |
+ または =
|
選択中のスレッドに重要マークを付ける |
- |
選択中のスレッドの重要マークを外す |
* → a
|
現在のページの全スレッドを一括選択 |
y |
選択中のスレッドをアーカイブ(受信トレイから移動、削除ではない) |
b |
選択中のスレッドをスヌーズ(指定時刻まで非表示にして再通知) |
Esc |
検索ボックス・入力欄からフォーカスを外す(ショートカットが効かないときに押す) |
注意: + / - / y / b は先に x でスレッドを選択してから押す。選択なしで押すと「スレッドが選択されていません」と表示される。
検索ボックスや本文入力中はショートカットが無効になるので、効かないときは先に Esc を押す。
新規作成
| ショートカット |
動作 |
c |
新しいメールを作成(画面右下に作成ウィンドウ) |
d |
新しいメールを新しいタブで作成 |
Shift + c |
新しいメールを新しいウィンドウでポップアウトして作成 |
Ctrl + Enter |
作成中のメールを送信 |
画面移動
| ショートカット |
移動先 |
g → i
|
受信トレイ(Inbox) |
g → s
|
スター付き(Starred) |
g → t
|
送信済み(Sent) |
g → d
|
下書き(Drafts) |
g → l
|
ラベルへ移動(入力ボックスが開く → ラベル名を入力して Enter) |
g → l でラベル「重要」に移動する手順
-
Esc でフォーカスを外す
-
g を押す → l を押す(ラベル移動ボックスが開く)
-
重要 または Important と入力して Enter
検索クエリで代替する場合は、検索欄に is:important と入力して Enter。
重要マークの仕組み
Gmailが機械学習でユーザーの操作履歴を学習し、自動で付けるフラグ。
判定に使われるシグナル:
- よくやり取りする相手(頻度・返信速度)
- 開封率・返信率
- To 直接送信か、CC/メーリングリストか
手動で修正すると学習される:
- マークがないのに重要 →
x で選択 → + で付ける
- 重要でないのにマークあり →
x で選択 → - で外す
一括で重要マークを無効化するには:
設定 → すべての設定 → 受信トレイ → 「重要マーカー」→「マーカーなし」を選択。
Linear
| ショートカット |
動作 |
由来 |
G → P
|
親イシュー(上の階層)に戻る。 |
Go to Parent issue |
Azure CLI
Azure Key Vault
| 操作 |
コマンド |
| Key Vault 一覧 |
az keyvault list --output table |
| Key Vault の URL 確認 |
az keyvault show --name <vault-name> --query properties.vaultUri --output tsv |
| シークレット一覧 |
az keyvault secret list --vault-name <vault-name> --output table |
| シークレット追加・更新 |
az keyvault secret set --vault-name <vault-name> --name <key> --value <value> |
| シークレット値を取得 |
az keyvault secret show --vault-name <vault-name> --name <key> --query value --output tsv |
| シークレット削除 |
az keyvault secret delete --vault-name <vault-name> --name <key> |
このプロジェクトの Key Vault
| 項目 |
値 |
| Vault 名 |
autofor-kv |
| URL |
https://autofor-kv.vault.azure.net/ |
# シークレット追加の例
az keyvault secret set --vault-name autofor-kv --name my-api-key --value "my-secret-value"
# シークレット値を取得する例
az keyvault secret show --vault-name autofor-kv --name my-api-key --query value --output tsv
Slack(Windows)
とりあえずの入口
| ショートカット |
動作 |
由来 |
Ctrl+/ |
ショートカット一覧を表示 |
/ = ヘルプ・コマンド入力の慣習 |
Ctrl+K / Ctrl+T
|
どこでも会話にジャンプ(クイックスイッチャー) |
Slack 独自(Key navigation / To channel) |
Ctrl+, |
設定(Preferences)を開く |
, = 設定・オプションの慣習 |
ナビゲーション・未読処理
| ショートカット |
動作 |
由来 |
Ctrl+Shift+A |
全未読ビューを開く |
All unreads |
Alt+↓ / Alt+↑
|
次/前のチャンネル・DMへ移動 |
矢印キー = 方向 |
Alt+Shift+↓ / Alt+Shift+↑
|
次/前の未読チャンネル・DMへ移動 |
Shift = 未読に絞り込み |
Ctrl+Shift+L |
チャンネル一覧を開く |
List channels |
Ctrl+Shift+K |
DM一覧を開く |
Slack 独自(Key = DM) |
Ctrl+Shift+M |
メンション/アクティビティを開く |
Mentions |
F6 / Shift+F6
|
セクション間フォーカス移動 |
F6 = フォーカス移動の慣習 |
Esc |
現在のチャンネル/DMを既読にする |
Esc = 離脱・完了 |
Shift+Esc |
全チャンネル・DMを既読にする |
Shift = 全体に拡張 |
スレッド・サイドバー
| ショートカット |
動作 |
由来 |
Ctrl+Shift+T |
スレッドビューを開く |
Threads |
Ctrl+. |
右サイドバーを開閉 |
. = 右側(> の方向) |
メッセージ入力・編集
| ショートカット |
動作 |
由来 |
Shift+Enter |
改行のみ(送信せずに次の行へ) |
Enter だけだと送信されるため Shift で抑制 |
Ctrl+B |
太字 |
Bold |
Ctrl+I |
斜体 |
Italic |
Ctrl+Shift+X |
打ち消し線 |
× 印(消す) |
Ctrl+Shift+9 |
引用 |
Slack 独自(9 に特定の意味なし) |
Ctrl+Shift+C |
インラインコード |
Code |
Ctrl+Alt+Shift+C |
コードブロック |
Code block(修飾キーを増やして区別) |
Ctrl+Shift+7 |
番号付きリスト |
Slack 独自(7 に特定の意味なし) |
Ctrl+Shift+8 |
箇条書きリスト |
Shift+8 = *(アスタリスク=箇条書き記号) |
devbox への接続
~/.ssh/config(dotfiles 管理: windows/.ssh/config)に Host devbox を定義しているので、どのツールからも同じ名前で入れる。
| コマンド |
動作 |
ssh devbox |
devbox に SSH(鍵・ユーザー名は config が解決) |
ssh devbox -t tmux new -As main |
tmux の main セッションに直接 attach(WezTerm 外から) |
scp devbox:~/path/file . |
devbox からファイル取得(アップロードは逆向き) |
pwsh -File windows\bin\devbox.ps1 ensure |
VM 起動 + NSG の現在 IP 許可を担保(ネットワーク変更後の復旧はこれ or <leader> →a) |