🔙 Back to Top

Sun Jun 1 12:55:20 JST 2014

vim +vimclient (びるどおぷしょん)

vimclient 機能を知ったのでメモを.

vim --servername VS

servername にはユニークにユーザーが与える. ここでは, vim server の頭文字のつもりで VSとした.

vim --servername VS --remote-send "<esc><esc>iHello, VS. Do you read this?"

--remote-send で与えた文字列を、VSと名のついた vim で、 忠実に、キーストロークを再現してくれる. ここでvim特有のキー表記、<esc> だとか <cr> だとか <C-n> だとか が効く.

今の場合、

 "<esc><esc>iHello, VS. Do you read this?"

これを送信した. 頭の "<esc><esc>i"で確実に挿入モードに移行して、 その状態で文字列を入力する. 最後にノーマルモードに戻ることをしていない.

:help には、ノーマルモードへの移行には

<C-\><C-n>

を使おうと、書いてあった. 理由は、<esc> だと、ビープ音がなったり、画面のなんていうのかあのぴかっってやつ、一瞬白くなるやつ、あれがあるように設定してる人もいるから.それにしても、<c-\><c-n> なんて初めてみた.確かに今、挿入モードやコマンドモードでこれを打ってみると、ノーマルに移行できた.

ノーマルモードへの移行は、頭ですることにしよう.

for i in `seq 1 10`; do vim --servername VS --remote-send "<esc><esc>:insert<cr>${i}<cr>."; done

:insert コマンドの存在は知ってたけど、実際に使ったのは初めてだ.

:insert<cr>hoge<cr>fuga<cr>.<cr>

と使うものらしい. へぇ.

活用例

この機能、いかに活用すれば私の人生が幸福になるものか.

ちょっと思いつかなかった.

普通に考えれば、 ユーザーがvimを開き、それを見てそれを操作してる場面で、裏から別のプロセスがそのvimに操作を加えることになりそう. つまり、ユーザー側がサーバ. 自分が見てるものが突然、挿入モードに入ったりなんだったりしたら迷惑でしかない.

だから私が考えたのは、ユーザーはそのvimで文書の編集をする機会は2割以下で、ほかはただ、見るだけ.例えば、Twitterをvim上に実現するみたいに.

実際例

実際に使われてる例をまず見るのが一番だった. 実は、vmailに使われている.

vim で gmail を見たり、送受信したりできるよ!っていう 謳い文句だけど、vimと言いながら gem install させるじゃねーかと 思ってたんだけど、 vim単体で実現するのが面倒そうなこと(きっとメールの送受信部分だろう) は、Rubyで実現して、vimはユーザーインターフェースであり、インターフェースへの反映に使ってると見た.

Search Results


i3wm で,壁紙画像をどう設定するんだって調べると,feh を使えっていう 記事が大量に出てくるので,私は少し前からそうしてた

feh --bg-fill ~/Dropbox/Pictures/cool.jpg

feh はそのまま使うとただの画像ビューワとして働く.というかこちらがメインな感じもする.

# 一枚だけ
feh ~/Dropbox/Pictures/cool.jpg
# 4.0 秒で次々行くスライドショー
feh -D 4.0 ~/Dropbox/Pictures/

サムネールモードなるものがあることに気づいた. 他にもモンタージュモードだとか, リストモードだとかあるんだけど, それらの差異はそこまで大きくなくて, それよりも,アクションなるものを設定できる. それが便利だ.

feh -t -E300 -y300 ~/Pictures/ -A 'feh --bg-fill "%f"'

これは,~/Picutures/ 内の画像を,300x300 におさまる大きさに全部変換して, いっぺんに一枚に表示する.アクションとして, 'feh --bg-fill "%f"' が設定されているが, これは,一枚の画像の上にマウスオーバーした状態で, キーボードの0 を押すと, 'feh --bg-fill "%f"' が新しい /bin/sh から実行される. ただし,%f は,その画像のフルパス. フォーマットは他にもたくさんあって,もちろん組み合わせられる.

希望としては,マウスオーバーして,キーを押すなんてまどろっこしいことじゃなくて,クリックでいいじゃんって思うんだけど,サムネールモードにおいてクリックは,その一枚を新しいウィンドウで表示,という動作に結び付けられている.

アクションは10個まで,設定できて, 1 キー以上でそのアクションを起こせる

不満点として,さきほどのクリックにアクションを設定できないこともだけど, デフォルトだと,横に細く縦に長く表示されて, スクロールするのに,マウスのスクロールする回るあれじゃ動かなくて, ドラッグしないとスクロールできない. 面倒だ.

全体の大きさ(画像一枚じゃなくて,画像郡を表示するあのウィンドウ自体)は,-W, -H で設定するんだけど,両方を設定すると,W * H に表示できない画像は表示しない.だからどちらか一方までしか設定しないほうがいい.

feh -t -W 1300 -E300 -y300 ~/Pictures/ -A 'feh --bg-fill "%f"'