秀丸な10年間からの〜
秀丸で開発し続けて10年超。12年かな。
Windowsはもちろん、Unix系だってSMB経由で秀丸を使い続けてました。
当然、色々カスタムしたり…。
そんな私がMacで開発することになって、はや6ヶ月。
最初は「Macでも秀丸をなんとか、なんとか、できやしないか…」と思ったりしました。
MacVimとの出会い
開発チームでは、Vim派とEmacs派が半分。
1日ずつ触ってみた感じ、なんとなくVimかなと。
Unix系でviを少し触ってたしね。
もう一つVimに惹かれた大きな要因。
隣の席にはVimの秘孔をすべて知り尽くした重鎮が鎮座している。
彼の秘孔を突くスピード(ブラインドタッチ)に驚愕。
Vimで何でもやっちゃう豪腕は、まるでラオウ。
流れるキータッチは、まるでトキ。
Vimに注ぐ愛は、まるでケンシロウ。
使えないプラグインに対する言葉は、まるでジャギ。
ペアコーディングで隣で見てても、彼がMacVimでコードと向き合ってることしかわからず、いつの間にかデバッグか完了してしまっている。
要するに、そんな彼にあこがれて、MacVim伝承者になろうと決めたのでした。
一日も早くVim使いにならなくちゃならない状況
チームでは、
- 朝会の議事録を
- 持ち回りで
- 各人のエディターで
- みんなの見ている前で
- スピーディーに書く
が、当たり前に行われていて、これが結構なプレッシャー。
知ってたこと
文字入力モード(インサートモード)とそうじゃないモードがあること
h``j``k``lで上下左右にカーソルを動かすこと(でもカーソルを使う)
i``aでインサートモードになること
xで文字を削除すること
yyが行コピーすること(当然ヤンクという言葉も知らない)
pがペースト
:wqで保存終了
:q!で保存せずに強制終了
困ったらESC連打(ノーマルモードに移行)
行頭行末にカーソルを移動
WindowsではHome``End``Page Up``Page Downを重宝してました。
0:行頭へジャンプ
$:行末へジャンプ
ctrl-u:半画面上へ
ctrl-d:半画面下へ
gg:ファイル先頭へ
G:ファイル末尾へ
最初、カーソル移動やコピペするのにも全く指が動かず、ストレスと肩こりが本当にひどかったことも
良い思い出です。
オペレータとモーション
北斗Vim拳伝承者が私に最初に教えてくれたこと
「オペレータとモーションを組み合わせてバリバリ編集するのがVimmerのはじめの一
歩」
オペレータの例
c:変更d:削除y:ヤンク(コピー)
なのでy``$でカーソル位置から行末までコピーできちゃう。
範囲選択
実はこれが一番最初に知りたくなった機能です。
秀丸(というか一般的に)はshiftキー + カーソルキーでの範囲選択できるのに、Vimは?
v
後に知るのですが、これはビジュアルモードへの切り替えです。
せっかくなので
shift-v:ビジュアルモードで行選択
ctrl-v:ビジュアルモードで矩形選択
検索
これも一般的にはctrl-fのような感じでできるのに、Vimは?
/:検索単語を指定して、nで次の単語、Nで前の単語に移動
*:カーソルがある箇所の単語を検索してくれて、ハイライトもしてくれる
でも、用が済んだらハイライトが邪魔になります。
秀丸なんかはESCを押せば解決なんですが、Vimは?
:noh:ハイライトが消える
行削除
秀丸ではCtrl + Enterで行削除ですが、Vimでは?
dd
これ、本当は削除ではなくカット。
そして、ddは基本コマンド。らしいです。
「Emacs使いでも知ってる」と言われてしまいました。
空行挿入
秀丸ではShift + Enter
o
空行挿入してすぐにインサートモードになります。
たくさん空行挿入したい時に、連打してしまう癖が抜けません。一長一短。
O(大文字) :今いる行の前に行挿入します。
「やり直し」と「やり直しのやり直し」
一般的にはCtrl-zやCtrl-yです。
u:やり直し
アンドゥのuですね。わかりやすい。
ctrl-r:やり直しのやり直し
リドゥですね。
アンドゥとリドゥで、なぜctrlが付いたり付かなかったりするのか謎です。
最後に編集した行にジャンプ
秀丸ではCtrl-l。
この機能はかなり重宝していました。これ無しでは生きていけない!
``
```.
でも↓の方を好んで使用してます。
g``;
正確には「編集位置をさかのぼる」です。
画面の分割
秀丸は少しカスタムすると「ウインドウ分割上下」「ウインドウ分割左右」「ウインド
ウ切り替え」ができます。私は何かのキーに割り当ててました。
ctrl-w``s:ウインドウ分割上下
ctrl-w``v:ウインドウ分割左右
ctrl-w``w:ウインドウ切り替え(次のウインドウに移動)
ctrl-w``p:ウインドウ切り替え(前のウインドウに移動)
選択行の先頭に...
選択行の先頭にTABを入れたかったのです。
秀丸ではTABを入れたい行を選択し、Tabキーを押すだけ。
ctrl-vビジュアルモードの矩形選択
jなどカーソル移動でTABを入れたい行を選択
I(大文字)で行頭挿入開始し、Tabキーを押す。
escを押す。選択行の先頭に一気にTABがはいる。
当然Tabではなく//や#で一気にコメントアウトだって可能。
ちなみに
==:今いる行のインデントを揃える
複数行選択=:選択した行のインデントを一気に揃える
>><<:今いる行のインデントを出したり引っ込めたりする
複数行選択><:選択した行のインデントを出したり引っ込めたりする
TAB挿入で本当にやりたかったことは、インデント揃えなので、これでできちゃう。
(@yuuAnさん ありがとうございます。)
行頭行末に移動してインサートモード
上で少し記述してしまいましたが…
I:行頭に移動してインサートモード
A:行末に移動してインサートモード
行末までカット
ついでに
D(大文字):カーソル位置から行末までカット
C(大文字):カーソル位置から行末までカットしてインサートモード
小文字<->大文字 変換
秀丸では右クリックメニューにあるTO UPPER CASEやlower case
Vimを使用するようになってから、意外にこの機能を利用してたことに気づきました。
~:カーソル下の文字の大/小文字を反転し、カーソルを右に進める
ビジュアルモードで選択してU:大文字変換
ビジュアルモードで選択してu:小文字変換
インクリメント/デクリメント
朝会の議事録などを書いていると、27日を28日に書き換えたりします。
数字の上で
ctrl-a:インクリメント
数字の上でctrl-x:デクリメント
これを知った時、なんじゃこりゃ〜って、ちょっと感動。
これから調べること
- grep
- 秀丸を10年使い続けた私が、MacVimでgrepしてみた… 徒然備忘録で調べてみました。