#秀丸な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してみた… 徒然備忘録で調べてみました。