コンテンツにスキップ

tmux + Vimでペアプログラミング勉強会を開催した記録

概要

tmux と Vim を組み合わせて、複数人が同じ画面・同じカーソル位置を共有しながらペアプログラミングを行う勉強会の記録。リモートでもターミナルベースで高速・低遅延な共同編集ができる。Vim を実際に人に見せることで気づく操作の洗練ポイントもまとめ。

詳細

環境構築: tmux でセッション共有

# ホスト側: 新しいセッションを作成
tmux new-session -s pair

# ゲスト側: 同じセッションにアタッチ(読み取り専用)
tmux attach-session -t pair

# ゲスト側: 同じセッションに書き込み権限でアタッチ
tmux attach-session -t pair -r  # -r は readonly の逆で共有書き込み
# または
tmux new-session -t pair         # セッションをグループとして共有

勉強会で学んだ Vim キーバインド Tips

移動系

# 単語単位の移動
w / b     次/前の単語の先頭へ
e         次の単語の末尾へ
W / B     空白区切りで単語移動(より大きな単位)

# 行内の移動
f{char}   行内で {char} に forward ジャンプ
t{char}   {char} の直前にジャンプ
;  /  ,   同じ方向 / 逆方向に繰り返し

# 画面スクロール
Ctrl-d    半画面下
Ctrl-u    半画面上
zz        カーソル行を画面中央に

編集系

ci"       ダブルクォート内を変更(Change Inside)
ca(       カッコごと変更(Change Around)
di{       波括弧内を削除
yip       現在の段落をヤンク

# マルチライン操作
V         ビジュアルライン選択
gq        選択範囲を整形(折り返し)
=         選択範囲のインデント自動整形

ペアプロで気づいた活用パターン

シチュエーション 使ったコマンド
関数定義に飛ぶ gd(ローカル定義)/ gD(グローバル)
直前の変更箇所に戻る g;
マークを使って行き来 ma でマーク → 'a で戻る
同じ変更を複数箇所に .(ドット)コマンドで繰り返し
レジスタを確認する :reg

.vimrc の共有設定例

" ペアプロ向けに視認性を上げる設定
set number          " 行番号表示
set cursorline      " カーソル行をハイライト
set showcmd         " 入力コマンドを右下に表示
set ruler           " カーソル位置を表示
set scrolloff=8     " カーソル上下に8行のマージン

なぜ重要か / いつ使うか

  • リモートペアプログラミングを低遅延で実現したいとき(VS Code Live Share より軽量)
  • Vim を独学で使っているが、他人の操作を見て学びたいとき
  • チームに Vim ユーザーを増やしたい・布教したいとき
  • SSH 環境しか使えないサーバー作業で効率よく共同作業するとき