TIM Labs

2012年10月アーカイブ

問題

git checkout another_branch にすら時間がかかる......というのは大規模なプロジェクトだとありがちです。 例えば

  1. 自分が長期休暇を取ったら
  2. 自分の居ない間に盛大なリリースが行われ
  3. master にコミットがとんでもなく積み重なっている

という状況を考えてみましょう。 普通なら

git checkout master
git pull

だけで自分が居ない間に行われた修正が取り込めますが、

  • checkout 前のブランチと master が結構背離してて作業ツリーの更新に時間がかかる
  • しかもその時間をかけて行われた作業ツリーの更新が pull ですぐに上書きされる

という精神衛生上大変よろしくない事態が発生します。 どうにかしてブランチを checkout せずに共有リポジトリの取り込むことができないものでしょうか。

問題

Vim の矩形選択 は便利です。痒いところに手が届く感じの便利さです。

例えば以下のようなコードを編集していて、 一時的に真ん中のブロックをコメントアウトして無効化したくなったとしましょう。

foo1()
foo2()
foo3()

bar1()
bar2()
bar3()

baz1()
baz2()
baz3()

やり方は色々あります。

  • 対象が1行だけなら I# <Esc> で十分です。
  • 複数行あるなら最初の行を I# <Esc> でコメントアウトした後に j. を繰り返していけば良いですね。
  • 数が多くて j. の連打が難しい場合は vip で選択して :s/^/# /<Enter> という手もあるでしょう。

これ以外に矩形選択を使う方法もあります。

  1. <C-v> で矩形選択を開始し、
  2. j 等を連打して適当な範囲を選択し、
  3. I# <Esc>

こうすれば選択範囲の各行の頭にまとめてコメント文字を入力することが出来ます。

しかし、現実には「 j 等を連打する」といった優雅さに欠ける操作はしません。 ブロック単位でテキストを選択したければ十中八九 vip で事足ります。 ところが vip を使うと操作手順が以下のようになります:

  1. vip で選択し、
  2. <C-v> で矩形選択状態に変更し、
  3. I# <Esc>

というのも、ビジュアルモード中の IA は矩形選択のみで使えるもので、 文字単位や行単位で選択しているときには使えないからです。 そして ip を使うと選択単位は自動的に行単位になります。 だから <C-v> で矩形選択状態に変更する必要があります。

しかしこれは不便です。 j 等を連打することと同じくらい優雅さに欠けます。 もっと便利にできないものでしょうか。

このアーカイブについて

このページには、2012年10月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2012年9月です。

次のアーカイブは2012年11月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。