キラキラvimmerに憧れるatommerの為の環境構築

Vim2 Advent Calendar 2017の8日目のエントリです。

ええ、タイトルの通りatom使いです。gitのcommitの時くらいしかvimを使っていません。
やめてください!石を投げないで!仲間に入れてください!!


でも、vimは大好きなんです。
mac上で文字を打つときは全部vimにしたいっていつも思っています。
というわけで、vimの素晴らしさに驚嘆するも、なかなかvimに扱い慣れずatomに来てしまった・・。
だけれどもあの素晴らしい指捌きをもう一度。

そんな方のための記事です。

 

とりあえずパッケージを入れてみる

atomでvimの良いところを使えるようなパッケージを入れていきます。

 

パッケージの追加方法

Ctrl-,でatomの設定を開いて以下の画像の番号の順番で操作していきます。

vim-mode-plus

これがないと始まりません。言わずと知れたt9md氏が開発者のatomパッケージです。
vimのキーバインドをatom上でも使えるようにするためのパッケージです。ものすごく多機能です。こちらにチュートリアルがあります。

若干本家のvimと異なるキーバインドもありますが大体できます。
僕はsettingでデフォルトに加え、上4つと一番下にチェックを付けています。
つまり、
「keymap ‘Y’ to ‘yank-to-last-character-of-line’」
「keymap ‘s’ to ‘select’」
「keymap ‘_’ to ‘replace-with-register’」
「keymap ‘p’ and ‘P’ to ‘put-after-with-auto-indent’ and ‘put-before-with-auto-indent’」
「keymap ‘I’ and ‘A’ to ‘insert-at-start-of-target’ and ‘insert-at-end-of -target’ when editor has ‘preset-occurrence’ marker」
の5つの項目にチェックを付けました。

 

Occurrence機能

この記事を書く時に初めてドキュメントを読んだのですが、本家のvimにはないoccurrenceという独自機能もあるようで、これが結構便利そうなので少し紹介します。

一つのパラグラフの中の同じ単語を一気に書き換えることができます。
変えたい単語の上でcoipとすることで実行します。
change,occurrence,in,paragraphですね。
オペレーターコマンドの直後にoを打つのですね。

同様にレジスタにhogeという単語が入っている時に、
textの上で_opとすると全部のtextがhogeに変わります。これすごく便利!!!
コレを実現するためにはSettingで上から3つ目の「keymap ‘_’ to ‘replace-with-register’」にチェックが入っている必要があります。

 

preset-occurance

もう一つ紹介します。
単語の上でgo、他にも変えたい単語がアレばその上でもgoとし、選択しきったらcなどで一気に変更します。

上の画像では「text」まで移動してgo,
次に「line」まで移動して再びgoとしたあとに
vipでパラグラフ選択し、cで書き換えています。

ただマクロ機能は付いていません。
t9md氏も今のところは実装しないみたいです。
Support macro (record by q, replay by @). · Issue #238 · t9md/atom-vim-mode-plus

【参考】t9md氏のqiita記事です。
[Vim/vim-mode-plus for Atom] 秒速で初心者からエキスパートになる。 たった7ステップで。 – Qiita
vim-mode-plus の occurrence のぱわ〜( と demo-mode のぱわ〜) – Qiita

ちょっとよくわからなかった。
Sum up undocumented feature. · Issue #54 · t9md/atom-vim-mode-plus

 

ex-mode

atom上でvimのコマンドモードを実行できるようにするためのパッケージです。
ただ、たまにできないものもあります。
また、僕自身勉強不足であまりコマンドモードは使っておらず、置換などはatomのデフォルトの機能を使っています。

ちなみにvim-mode-plusの開発者のt9md氏が作ったvim-mode-plus-ex-modeというのもあるようですが
そのパッケージの説明欄にex-modeの方がいいよ!って書いてあるので使っていません。

I originally released this package for quick workaround of lack of ex-mode support.
・But now ex-mode works with vim-mode-plus.
・If you want better ex-mode, don’t use this package, use ex-mode instead.
・Experimental ex-mode support for vim-mode-plus

 

relative-numbers

行番号がカーソルのある行からの相対番号になり10yyみたいなことがしやすくなります。
デフォルトがどんな感じか忘れましたが下3つにチェックを付けています。

以下の画像の様な感じです。
ノーマルモードの時のみ行番号が相対表示になるので、以下何行をヤンクするのかなどがすぐに把握できますね。

 

cursor-hisotry

vimのカーソルヒストリーを再現したパッケージです。
デフォルトでキーが設定されていないので、vimと合わせるなら以下のように書きます。
(キーマップの変更方法はこの記事のもうちょい下の方を参照してください)

ただ自分の環境だと若干キーが競合しているので
ctrl-iの代わりにctrl-shit-oに変更して置きました。
あっち行ってこっち行って、また戻ってという動作を頻繁にするのであると便利です。

ちなみにlast-cursor-positionというパッケージもあり、
こちらのキーマップはalt--,alt-_です。もはやvim関係ないですが。(てへぺろ)

 

vim-mode-plus-keymaps-for-surround

本家のvim-surroundとは若干指使いが異なります。
vim-surroundというのもあるみたいです。

 

(vim関連で)良さげだけと入れてないパッケージ

良い感じなのだけど、僕自身はあまり使わないもの一覧です。誰かの為になれば幸いです。

sort-lines

vimの:sortと同じ。

 

atom-keyboard-macros-vim

qコマンドを実行するためのパッケージ。
便利なのですが10@aのように記録したものを連続で使うことはできません。
最近実行したらエラーが出たので使わなくなりました。

 

vim-mode-plus-exchange

何かと何かを入れ替える。

 

atom-vim-like-tab

vimのようなタブを実現します。

 

vim-mode-clicpboard-plus

クリップボードの履歴を閲覧して選択して挿入することができます。

 

キーマップもちょっと変えてみる

atom上でもキーマップを変更することができるので、お好みのvimキーマップを作成しましょう。

 

キーマップの変更の仕方

atom上でのキーマップ(ショートカットキー)の変更方法です。
メニューのAtom > キーマップから変更できます。

 

jj

vimのキーマップ変更ではescjjに割り当てるのが気に入っています。

すごく頻繁に使用するescですが、ホームから少し距離があるので大変です。
代わりにctrl-[もありますが、誤タイプが多いので困っていました。
そこで出会ったのがjjです。これに変えてからは人生が大きく変わりました。(まじです)

 

ctrl-\

ついでに、インサートモードで行末にカーソルを移動するためのキーマップを設定しました。
vimだとesc+Aとかになるのでしょうか。(わからない)
わざわざノーマルモードに移動するのがあれなのと行末セミコロンのある言語だと割と多用するので設定しておきました。

 

まとめ

以上です。vimとatomの良いところを取っていくスタイルもどうでしょうか。
他にも良い(atomの)vimパッケージがあったら是非教えてほしいです。

今回のこの記事を書くにあたって思ったことはvim界隈って日本人多いのですね。かっこいいです。
コマンドモードもっと勉強しよっと。

「キラキラvimmerに憧れるatommerの為の環境構築」への1件のフィードバック

コメントを残す