rcmdnk's blog
Last update

vim_200_200

この記事は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のスクリーンショットだけ。

vimperator

こんなかんじで、コマンドライン(Vimみたく:で入って一番下にコマンド欄が表示される) を使えてopenコマンド(oを押しただけで補完)でurlを開くのですがブックマークや履歴、 さらにGoogle Search Suggestionも 候補として表してくれます。

yamyを使って全ての動きをVimライクに

Yet Another Mado tsukai no Yuutsu (yamy) 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行下がる、ggGでトップ、ボトムに移動、 等出来るようにしてあります。 Insert ModeからEsc/C-[で入る事が出来ます。

Visual Modeは、Shift+移動で通り道が選択されることを使っています。 Normal ModeからvS-vC-vで文字毎、行毎、矩形選択のモードに入ります。 矩形選択に対応してない場合は普通に文字毎の選択になります。 選択後にydを押すことでコピーしたりカットしたりできます。 勿論、それをNormal Modeで、pによって貼り付けられます。

一応Command Line Modeもどきも加えてありますが、 取り敢えず、Normal Mode:を押した後、wqを押すと、 ファイルの保存、終了、おまけとして:hでヘルプをだせる、という程度です。 Commandといわれるほどのものはありません…

Windowsの機能をキーマップで変えてるだけに過ぎないので、 多少カットアンドペーストの部分で違う動きがあったり、 .コマンドは完全に固定の1単語削除+貼り付けだったり、 後、コマンド同様、マクロなんかなにそれ、状態なので、 常時使い、とまでは行きませんが、メーラーとかで軽くVimライクな 編集をしたいときには便利に使っています。 特にVisualモードで複数行選んで削除、他に移す、とか、簡単にショートカットキー だけでは出来ないので嬉しい感じです。

ちょっとわかりづらいですが、デモンストレーションも作ってみました。

TeraPad上で、yamyを起動させてVimっぽい編集操作をしています。 途中で項目を反転表示させてるのは、S-vを使ってライン選択をしているわけです。

キーボード部分はny_keydas と言うソフトを使わせて頂きました。 yamyからの出力部分と元の入力を両方捉えてしまうようで、hjkl と同時にカーソルキーも反応している様に見えていますが、文字は入力されずに 移動だけしているのは分かるかと思います。 後、これは日本語キーボードで表示されてますが、使っているのが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開発の指南書
Sponsored Links
  1. 追記: 2022/06/23

    現在はKarabiner-Elementsと名前が変わっている。

    追記ここまで

  2. LICEcapでキャプチャして、 Giamで間を詰めたり編集したりしました。

    DesktopCamで撮影しようとしたらny_keydasが映りませんでした。 Camstudioというソフトなら映ったのですが、 ちょっと数分でものすごいサイズになってしまって辞めました。(簡単にサイズ調整出来ると思いますが…) まあgifを作りたいだけだったので、LICEcapなら最初から簡単にgifが作れるのでこれが一番簡単でした。

Sponsored Links

« Firefox/ThunderbirdでVim プロンプトの戯れ »

}