globashとvim server
globash。bashをfunctionでglobal -cやらなんやらで拡張してくれて、しかも短縮オプションでglobalにアクセスできてちょっとアドレナリンってやつ。こんなのあるって気付いてなかった。というか名前が楽しい。
どうせ普段はvimつかってるし、zshでもcompletionでやってくれるし、コマンド作っとけば済むし、、、なんだけれど、ちょっとシェルを使いながらあちこちに飛んで実験とかしながら、、、という用途だと案外便利(ちと強引)。
で、globashの機能の一つに、検索した候補をclientserverモードにしたEmacsに表示させることができる、というのがある。そういえば vim にも利用目的不明のserver機能あったなー、とか思い出して「嗚呼!」とうれしくなったんだけど、globashはvim serverには対応していらっしゃらない御様子。
ちょっと対応してみたりした。かなりの頻度で無意味かもだけど
変更点
これに以下を追加。
*** 689,694 **** --- 689,695 ---- -v|-vi) local EDITOR=vi; shift;; -l|-less) local EDITOR=less; shift;; -e|-emacs) local EDITOR='emacsclient --no-wait'; shift;; + -m|-vim) local EDITOR='vim --remote '; shift;; -g|-gozilla) local EDITOR=gozilla; shift;; -n|-noedit) local EDITOR=noedit; shift;; *) echo "invalid option $1."
実践。。。
で、たとえばscreenとかtmuxとかで作業ウィンドウと別に
% vim --servername VIM
のように表示用vimを立ち上げておく。で作業ウィンドウにておもむろにglobash起動。
たとえばputtyのソースツリーにて
[/home/tkuro/Exp/putty-0.60] x ^ssh_pkt.* > 1 ssh_pkt_addbyte 1622 ssh.c static void ssh_pkt_addbyte(struct Packet *pkt, unsigned char byte) 2 ssh_pkt_adddata 1607 ssh.c static void ssh_pkt_adddata(struct Packet *pkt, void *data, int len) 3 ssh_pkt_addstring 1651 ssh.c static void ssh_pkt_addstring(struct Packet *pkt, char *data) 4 ssh_pkt_addstring_data 1646 ssh.c static void ssh_pkt_addstring_data(struct Packet *pkt, char *data, int len) 5 ssh_pkt_addstring_start 1636 ssh.c static void ssh_pkt_addstring_start(struct Packet *pkt) 6 ssh_pkt_addstring_str 1641 ssh.c static void ssh_pkt_addstring_str(struct Packet *pkt, char *data) 7 ssh_pkt_adduint32 1630 ssh.c static void ssh_pkt_adduint32(struct Packet *pkt, unsigned long value) 8 ssh_pkt_defersend 1935 ssh.c static void ssh_pkt_defersend(Ssh ssh) 9 ssh_pkt_ensure 1597 ssh.c static void ssh_pkt_ensure(struct Packet *pkt, int length) 10 ssh_pkt_getdata 2100 ssh.c static void *ssh_pkt_getdata(struct Packet *pkt, int length) 11 ssh_pkt_getstring 2083 ssh.c static void ssh_pkt_getstring(struct Packet *pkt, char **p, int *length) 12 ssh_pkt_getuint32 2065 ssh.c static unsigned long ssh_pkt_getuint32(struct Packet *pkt)
としたあと show -m
まあまあ便利。
結論
GNU global サイコー!