この記事はVim Advenvimt Calendar 2012 107日目の記事です。 前回は@manga_osyoさんのquickrun.vim で make するでした。
ブログ自体始めたばかりですが、よろしくお願いします。
Advenvimtの記事を見ていると、日常生活全てでVimを使わないと生きていけない人も居るようですが、 今回の記事では特にWindowsの中で、他のソフトから編集だけVimを呼んでみたり、 全くVimエディタとは関係のない所でVimっぽい感じで作業したりする方法を紹介して行きたいと思います。
Firefox/ThunderbirdでVim
FirefoxやThunderbirdをブラウザやメーラーのメインとして使っていますが、 使ってる最大の理由として、簡単にテキスト入力などのためにVimを外部エディタを 呼び出せたり、また、Vimperatorといった、Vimライクな操作を可能にしてくれる アドオンがあることです。 (Chromeにも大分出て来ましたが、Vimperatorでしか出来ないちょっと込み入った ことを覚えてしまうとなかなか移る気にはなれません。)
これらについては、ちょっと無駄にページが長くなるのと今回のメインとは逸れるので、 こちらの投稿に分けておきました。
絵がなくて寂しいので、Vimperatorのスクリーンショットだけ。
こんなかんじで、コマンドライン(Vimみたく:
で入って一番下にコマンド欄が表示される)
を使えてopen
コマンド(o
を押しただけで補完)でurlを開くのですがブックマークや履歴、
さらにGoogle Search Suggestionも
候補として表してくれます。
yamyを使って全ての動きをVimライクに
WindowsにしてもMacにしてもキーバインドを変更してる方は沢山居ると思いますが、 自分の環境ではWindowsではyamy、 MacではKeyRemap4MacBook1 といったソフトでキーバインド変更を行なっています。
取り敢えず、これらを使う最大のモチベーションはVimエディター以外の所でも Vimライクに動くことが出来るようにすることなので、今回はWindowsでつかている yamyの設定を紹介したいと思います。 yamyの導入に関してはこちらから。
yamy自体古いソフトで、最近アップデートもされてないので、 どれくらい需要があるかわかりませんが、 基本的にはWindowsで出来る動きをリマップしてるだけなので、 他のキーバインド変更ソフトでも同じような事ができると思います。
話がそれますが、つい先日、 keyhacというpythonベースらしい 物も見つけたので、より複雑な事が出来るのかな、と思い試してみたい今日このごろ。
それは良いとして、設定ファイルとしてvimedit.mayuをダウンロードして読み込むことで、今回の設定をすぐに試すことが出来ます。 詳しくは、こちらの方にまとめてみました。
簡単に説明すると
- どの場所でも
Alt-Ctrl-
+h
,j
,k
,l
によってカーソルを左下上右に動かせる - マウスやウィンドウも
Alt-Ctrl-
/Alt+Shift-
+y
,u
,i
,o
(h
,j
,k
,l
の上のキー達)で左下上右に動かせる - ついでにクリックとかも出来る(
Alt-Ctrl-
+n
/p
で左/右クリック) - ホイール操作も(
Alt-Ctrl-
+m
/,
で下/上ホイール) - 特定のアプリケーション上ではVim emulationを行える
最後の物以外は、通常の場面全てで有効にしてあります。
Alt-Ctrl-
と同時に3つボタンを押すようなショートカットキーなら既存のショートカットキー
とは殆ど競合しないし、h
,j
,k
,l
のためだけ様に左手でAlt-Ctrl-
を押すのは
それ程面倒ではないと思います。
実際、Vimで編集してても、普通の文章を書いている時なんかだと、
ちょっと移動したいときはA-C
を押してh
,j
,k
,l
で移動しています。
(これはVimの中のマップで行なっている人もいるかと思います。)
ただ、最近Macも使う様になったらいくつか(Cmd+Ctrl-
での3つ押しとか)競合してて、そのうちまた考えなおそうか直さないか考え中です。(取り敢えず競合した相手の方を他に移したりしてますが。)
最後にあるVim emulationですが、常に有効にしておくと流石に面倒が起こるので(vim on vim…)、 取り敢えず上のファイル内ではThunderbird、メモ帳、TeraPadで有効にしてあります。 TeraPadでは矩形選択ができるソフト、ということで試してみました。
アプリケーションはこちらを参考にしていただければ 簡単に追加できるかと思います。
Vim emulation with yamy
Vim emulationの部分について、もう少し補足したいと思います。
Vimの様にモード
を変化させてそれぞれで出来る事を変えています。
Insert Mode
が所謂Windowsの標準状態です。アプリケーション起動時の初期状態はこのModeです。
Normal Mode
はキーひとつ(h
,j
,k
,l
)で移動できたり
w
で単語移動、3j
で3行下がる、gg
、G
でトップ、ボトムに移動、
等出来るようにしてあります。
Insert Mode
からEsc
/C-[
で入る事が出来ます。
Visual Mode
は、Shift
+移動
で通り道が選択されることを使っています。
Normal Mode
からv
、S-v
、C-v
で文字毎、行毎、矩形選択のモードに入ります。
矩形選択に対応してない場合は普通に文字毎の選択になります。
選択後にy
やd
を押すことでコピーしたりカットしたりできます。
勿論、それをNormal Mode
で、p
によって貼り付けられます。
一応Command Line Mode
もどきも加えてありますが、
取り敢えず、Normal Mode
で:
を押した後、w
やq
を押すと、
ファイルの保存、終了、おまけとして:h
でヘルプをだせる、という程度です。
Command
といわれるほどのものはありません…
Windowsの機能をキーマップで変えてるだけに過ぎないので、
多少カットアンドペーストの部分で違う動きがあったり、
.
コマンドは完全に固定の1単語削除+貼り付け
だったり、
後、コマンド同様、マクロなんかなにそれ、状態なので、
常時使い、とまでは行きませんが、メーラーとかで軽くVimライクな
編集をしたいときには便利に使っています。
特にVisualモードで複数行選んで削除、他に移す、とか、簡単にショートカットキー
だけでは出来ないので嬉しい感じです。
ちょっとわかりづらいですが、デモンストレーションも作ってみました。
TeraPad上で、yamyを起動させてVimっぽい編集操作をしています。
途中で項目を反転表示させてるのは、S-v
を使ってライン選択をしているわけです。
キーボード部分はny_keydas
と言うソフトを使わせて頂きました。
yamyからの出力部分と元の入力を両方捉えてしまうようで、h
、j
、k
、l
と同時にカーソルキーも反応している様に見えていますが、文字は入力されずに
移動だけしているのは分かるかと思います。
後、これは日本語キーボードで表示されてますが、使っているのがUSキーボードなので、
記号部分とかよく見るとおかしいかもしれません。
まあ、各キーが詳細にどれが押されたか、はぱっと見わかりづらいですが、Vimを普段使ってる人達なら
なんとなく雰囲気でわかって頂けるかな、と2。
最後に
実用的なのは実は最初のAlt-Ctrl-
使ってちょっと移動する、という方なんですが、
メールなんかだと相手の問に一つ一つ答える様なメールの時など、
切ったり貼ったりすることが多かったりするので
Emulationの方も結構重宝するかとおもいます。
まあ、外部エディタ立ち上げればいいじゃん、と言われればそれまですが…
今回のVim emulationの部分に関しては 窓使いの憂鬱でいろいろvi風キーバインドにしてみるにある設定を参考にさせて頂きました。 随分昔にファイルだけ拾ってあったので、ファイルの中身の言葉で検索して見つけたのであれですが、おそらく本家はここだろうと。
vim な感覚で Windows Common Control を操作する mayu 設定にも同じような事をやっている方がいらっしゃいました。 まだ詳しく見てないですが、取り入れてない機能があれば取り入れてアップデートしたいな、とは思っています。
Macでも、KeyRemap4MacBookを使って同じような事が出来ます。 こちらの方には最初からVimライクにする設定も入っているので、 簡単なことであればすぐに使えますし、 自分設定でも凝った設定もできるので そのうち紹介したいと思います。
(Vim以外でVimする: Windows+AutoHotkey編でAutoHotkey (or Standalone)でする方法も追加。)
次回は@ujihisaさんです。
- vitalのData.List.take_whileを例にvital開発の指南書