zshでvimのビジュアルモードを再現-完結編-
linux_fedora12のzsh 4.3.10で動いたやつ
Max-OSXのzsh 4.3.9で動いたやつ
↑どっちかダウンロードして、きちんと動いた方をつかうのだ。
FC2ブログの設定の関係で、拡張子がtxtになってる。注意
使い方(キーバインド)一覧
大抵のzsherは、zshのキーバインドをEmacs風(bindkey -e)にしてると思うんだ。デフォルトだしね。
でもvimmerがbindkey -eって屈辱だよね!
確かに^aで行頭に飛べるのは魅力だけど、vimmerなら^[Aか^oAだよね!
今回を機に、vim風キーバインド(bindkey -v)に乗り換えよう!
導入方法
-----.zshrcの外部に置く方法:-----
1) linux_fedora12のzsh 4.3.10で動いた方かMax-OSXのzsh 4.3.9で動いた方を~/path/に保存する。
2) .zshrcに、source ~/path/zsh_vim_visualmode と書く
3) bindkey -vと書く。bindkey -e は消すべし。
4) $source .zshrc する
-----.zshrcに貼付ける方法:-----
1) ~/.zshrcを開く。
2) bindkey -vと書く。もしbindkey -eと書いてあれば、消しましょう
3) linux_fedora12のzsh 4.3.10で動いた方かMax-OSXのzsh 4.3.9で動いた方の中身をコピーして、~/.zshrcに貼り付ける
(コピペして挙動が変なら、^[を[Ctrl-v][ESC]にして、^vを[Ctrl-v][Ctrl-v]にする必要がある。)
4) $ source ~/.zshrcする
自分で言うのもアレですが、無印ビジュアルモードほぼ完全に再現できてると思う。
ただし、純正vimのiaIAは、ビジュアルモードで少々変な動きをする(以下)
a)ビジュアルモード:iaAは無反応、Iはカーソル位置前方からインサート
b)行選択モード:iaは無反応、Iは行頭からインサート、Aはカーソル位置後方からインサート
ので、普通にコマンドモードでiaIAしたのと同じ結果になるようにした。
シェルで対話的に使うことを考えたら、こっちのほうが良いと思う。
※2010/05/13 iaはテキストオブジェクトだったのか。一見無反応に見えてつい…
直った問題点
http://zshscreenvimvimpwget.blog27.fc2.com/blog-entry-1.html
にはいろいろ致命的なバグがあったので、だいぶ直した
1) v押した位置より左に移動したら、ちょっと感覚とズレる
↑克服した
2) 文頭、文末でビジュアルモードが勝手に終了する
↑一応克服。ただし、「文頭の1文字」の削除etcがうまくいかない場合がある。
このバクは根が深い上、直したところであんまりメリットが感じられないので直すつもりは無い。
zle exchange-point-and-markこいつを利用して文字を反転させてる訳だが、
この反転方式をvim式直すのが大変だった。コードが膨大なのも、主にコイツのせい
直すべきだけど直す気がない問題点
1)Shift-V押してkしても、あんまり行選択ができてない
↑シェルで複数行を使わない俺には関係のない話だな0Vしましょう。
VVしたとき、カーソル位置が変わってほしくないため、こういう仕様になった。
対話シェルでガンガン改行する人っているのかな。
2)短型選択モード^Vが再現できていない。無修飾vと同じ機能
↑確かに短型が便利なことは認めよう。^V0jjjI#などとコメントアウトしたい気持ちはわからんでもない。
しかし、それをシェルに求めるのはまちがいなんだよ!
3)3hとか8lとかが上手く動かない
これは暇があれば直すかもしれない。
ただし、3wとか6bとか5f(とかはちゃんと動くので、そんなに不便ではないと思う。
他にバグを見つけたり、こんな機能が欲しいと思ったり、なにか思うところがあればコメントください
...しかし、こんなの使うくらいなら素直にbindkey -eし続ける人が圧倒的多数というw
Max-OSXのzsh 4.3.9で動いたやつ
↑どっちかダウンロードして、きちんと動いた方をつかうのだ。
FC2ブログの設定の関係で、拡張子がtxtになってる。注意
使い方(キーバインド)一覧
大抵のzsherは、zshのキーバインドをEmacs風(bindkey -e)にしてると思うんだ。デフォルトだしね。
でもvimmerがbindkey -eって屈辱だよね!
確かに^aで行頭に飛べるのは魅力だけど、vimmerなら^[Aか^oAだよね!
今回を機に、vim風キーバインド(bindkey -v)に乗り換えよう!
導入方法
-----.zshrcの外部に置く方法:-----
1) linux_fedora12のzsh 4.3.10で動いた方かMax-OSXのzsh 4.3.9で動いた方を~/path/に保存する。
2) .zshrcに、source ~/path/zsh_vim_visualmode と書く
3) bindkey -vと書く。bindkey -e は消すべし。
4) $source .zshrc する
-----.zshrcに貼付ける方法:-----
1) ~/.zshrcを開く。
2) bindkey -vと書く。もしbindkey -eと書いてあれば、消しましょう
3) linux_fedora12のzsh 4.3.10で動いた方かMax-OSXのzsh 4.3.9で動いた方の中身をコピーして、~/.zshrcに貼り付ける
(コピペして挙動が変なら、^[を[Ctrl-v][ESC]にして、^vを[Ctrl-v][Ctrl-v]にする必要がある。)
4) $ source ~/.zshrcする
自分で言うのもアレですが、無印ビジュアルモードほぼ完全に再現できてると思う。
ただし、純正vimのiaIAは、ビジュアルモードで少々変な動きをする(以下)
a)ビジュアルモード:iaAは無反応、Iはカーソル位置前方からインサート
b)行選択モード:iaは無反応、Iは行頭からインサート、Aはカーソル位置後方からインサート
ので、普通にコマンドモードでiaIAしたのと同じ結果になるようにした。
シェルで対話的に使うことを考えたら、こっちのほうが良いと思う。
※2010/05/13 iaはテキストオブジェクトだったのか。一見無反応に見えてつい…
直った問題点
http://zshscreenvimvimpwget.blog27.fc2.com/blog-entry-1.html
にはいろいろ致命的なバグがあったので、だいぶ直した
1) v押した位置より左に移動したら、ちょっと感覚とズレる
↑克服した
2) 文頭、文末でビジュアルモードが勝手に終了する
↑一応克服。ただし、「文頭の1文字」の削除etcがうまくいかない場合がある。
このバクは根が深い上、直したところであんまりメリットが感じられないので直すつもりは無い。
zle exchange-point-and-markこいつを利用して文字を反転させてる訳だが、
この反転方式をvim式直すのが大変だった。コードが膨大なのも、主にコイツのせい
直すべきだけど直す気がない問題点
1)Shift-V押してkしても、あんまり行選択ができてない
↑シェルで複数行を使わない俺には関係のない話だな0Vしましょう。
VVしたとき、カーソル位置が変わってほしくないため、こういう仕様になった。
対話シェルでガンガン改行する人っているのかな。
2)短型選択モード^Vが再現できていない。無修飾vと同じ機能
↑確かに短型が便利なことは認めよう。^V0jjjI#などとコメントアウトしたい気持ちはわからんでもない。
しかし、それをシェルに求めるのはまちがいなんだよ!
3)3hとか8lとかが上手く動かない
これは暇があれば直すかもしれない。
ただし、3wとか6bとか5f(とかはちゃんと動くので、そんなに不便ではないと思う。
他にバグを見つけたり、こんな機能が欲しいと思ったり、なにか思うところがあればコメントください
...しかし、こんなの使うくらいなら素直にbindkey -eし続ける人が圧倒的多数というw



