LoginSignup
301
316

More than 5 years have passed since last update.

秀丸を10年使い続けた私が、MacVimと出会って困って訊いて調べて… 徒然備忘録

Last updated at Posted at 2014-07-27

秀丸な10年間からの〜

秀丸で開発し続けて10年超。12年かな。
Windowsはもちろん、Unix系だってSMB経由で秀丸を使い続けてました。
当然、色々カスタムしたり…。

そんな私がMacで開発することになって、はや6ヶ月。
最初は「Macでも秀丸をなんとか、なんとか、できやしないか…」と思ったりしました。

MacVimとの出会い

開発チームでは、Vim派とEmacs派が半分。
1日ずつ触ってみた感じ、なんとなくVimかなと。
Unix系でviを少し触ってたしね。

もう一つVimに惹かれた大きな要因。
隣の席にはVimの秘孔をすべて知り尽くした重鎮が鎮座している。
彼の秘孔を突くスピード(ブラインドタッチ)に驚愕。
Vimで何でもやっちゃう豪腕は、まるでラオウ。
流れるキータッチは、まるでトキ。
Vimに注ぐ愛は、まるでケンシロウ。
使えないプラグインに対する言葉は、まるでジャギ。
ペアコーディングで隣で見てても、彼がMacVimでコードと向き合ってることしかわからず、いつの間にかデバッグか完了してしまっている。
要するに、そんな彼にあこがれて、MacVim伝承者になろうと決めたのでした。

一日も早くVim使いにならなくちゃならない状況

チームでは、

  • 朝会の議事録を
  • 持ち回りで
  • 各人のエディターで
  • みんなの見ている前で
  • スピーディーに書く

が、当たり前に行われていて、これが結構なプレッシャー。

知ってたこと

文字入力モード(インサートモード)そうじゃないモードがあること
hjklで上下左右にカーソルを動かすこと(でもカーソルを使う)
iaインサートモードになること
xで文字を削除すること
yyが行コピーすること(当然ヤンクという言葉も知らない)
pがペースト
:wqで保存終了
:q!で保存せずに強制終了
困ったらESC連打(ノーマルモードに移行)

行頭行末にカーソルを移動

WindowsではHomeEndPage UpPage 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-zCtrl-yです。

u:やり直し

アンドゥのuですね。わかりやすい。

ctrl-r:やり直しのやり直し

リドゥですね。
アンドゥとリドゥで、なぜctrlが付いたり付かなかったりするのか謎です。

最後に編集した行にジャンプ

秀丸ではCtrl-l
この機能はかなり重宝していました。これ無しでは生きていけない!

`.

でも↓の方を好んで使用してます。

g;

正確には「編集位置をさかのぼる」です。

画面の分割

秀丸は少しカスタムすると「ウインドウ分割上下」「ウインドウ分割左右」「ウインド
ウ切り替え」ができます。私は何かのキーに割り当ててました。

ctrl-ws:ウインドウ分割上下
ctrl-wv:ウインドウ分割左右
ctrl-ww:ウインドウ切り替え(次のウインドウに移動)
ctrl-wp:ウインドウ切り替え(前のウインドウに移動)

選択行の先頭に...

選択行の先頭にTABを入れたかったのです。
秀丸ではTABを入れたい行を選択し、Tabキーを押すだけ。

ctrl-v ビジュアルモードの矩形選択
jなどカーソル移動でTABを入れたい行を選択
I(大文字)で行頭挿入開始し、Tabキーを押す。
escを押す。選択行の先頭に一気にTABがはいる。

当然Tabではなく//#で一気にコメントアウトだって可能。

ちなみに

==:今いる行のインデントを揃える
複数行選択 =:選択した行のインデントを一気に揃える
>> <<:今いる行のインデントを出したり引っ込めたりする
複数行選択 > <:選択した行のインデントを出したり引っ込めたりする

TAB挿入で本当にやりたかったことは、インデント揃えなので、これでできちゃう。
(@yuuAnさん ありがとうございます。)

行頭行末に移動してインサートモード

上で少し記述してしまいましたが…

I:行頭に移動してインサートモード
A:行末に移動してインサートモード

行末までカット

ついでに

D(大文字):カーソル位置から行末までカット
C(大文字):カーソル位置から行末までカットしてインサートモード

小文字<->大文字 変換

秀丸では右クリックメニューにあるTO UPPER CASElower case
Vimを使用するようになってから、意外にこの機能を利用してたことに気づきました。

~:カーソル下の文字の大/小文字を反転し、カーソルを右に進める
ビジュアルモードで選択してU:大文字変換
ビジュアルモードで選択してu:小文字変換

インクリメント/デクリメント

朝会の議事録などを書いていると、27日を28日に書き換えたりします。

数字の上でctrl-a:インクリメント
数字の上でctrl-x:デクリメント

これを知った時、なんじゃこりゃ〜って、ちょっと感動。

これから調べること

301
316
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
301
316