Life goes on

何かJavaScriptとかVimとかMacとかに関係してそうな深淵から覗かれる者

Vimでomni補完で使用するomnifuncを同じfiletypeで複数設定したい

ま、表題の通りなんですけども。


昨日そういや入れてみるかーと、myhere/vim-nodejs-complete · GitHubを入れてみたんですが、どうにも上手く補完してくれず…。


issueで質問したら、ちゃんと

autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
とnodejs-complete用のomnifuncを一緒に使うよーという事だったんですが、neocomplcacheの設定をしてないからか、元のjavascriptcompleteを.vimrcに書いておくと、nodejs用の補完が効かない…
echo &ofu
するとjavascriptcompleteしか使ってないんですよねえ…。


javascriptcompleteをコメントアウトすると上手く補完してくれるんですが、これ正しいやり方なのか分からん…。一応、今はid:teramakoさんのteramako/jscomplete-vim · GitHubとnecoを併用してるんで、コメントアウトしても実害は無いんですが…。どうにもスッキリしないなあ。

Vimをこれから始めたいと思ってる人達に教えたいVimを使いこなすのに必要な、たった一つのコマンド

こんにちは。最近またもブログが停滞気味ですが、みなさんはいかがお過しでしょうか。


さて、こちらの記事はVim Advent Calendar 2011 : ATNDの11日目のエントリになります。2011年の11日目というのは何だかステキ!


と、言う事で本題です。タイトルは年末にふさわしく釣りタイトルです。どうも自分がVimを使えるようになったのはこのブログを遡ってみると2009/9月からのようです。ブログはちゃんと書いた方が良いですね。こういう時に。
食欲の秋なので、vimにも手を出してみました。 - Life goes on


それまでは、EmacsTextmateを使っていた訳で、vimはこの時まで全然上達しなかった訳ですが、何でマトモにVimを使えるようになったのかなーと考えた所一つの結論に達しました。それは…


<Esc>の代わりに<C-[>を使う。


これでした。他の方のハイレベルなVimmerぶりを表わすエントリに対して、本当にこんなエントリで大変に申し訳ありませんが、聞いてください。


Vimを始めるにあたり、操作法をググるとしましょう。例えば、"vim コマンド"あたりで。で、内容を見ていくと「インサートモードからノーマルモードに戻すにはEscを押しましょう」とか書いてると思うんです。大概。でも、を押すって結構な心理的障壁があると思います。キーボードの一番左上とかで、全然押しやすくない。他の移動だとかのコマンドが大体ホームポジションだったりするのに。なのに、結構な頻度で使用するはずのが遠いのが、自分の中ではVimを使うにあたっての一番「面倒だなー」と思った所でした。


まず、"モードという概念がある"という部分よりも、"モードを切り替えるのに、を押さないといけない"と思うと「面倒な事しないと、使えないのか」になります。で、面倒だと思うと、操作が億劫になってきます。自分は何回もTuotrialをやっても、Vimがしっくり来なかったんですが何でなのか考えたときに一番これが当てはまりました。


詳細は忘れましたが、そんな折に上記のが、の代わりに使えるというのを知った訳です。それまでも、Emacsを使ってはいましたが、キャンセルとかを使う為に全くこんなコマンドは知りませんでした。これを知ってから「もしや…」と思い、Vimを使った所、凄くスムーズに使える自分に気付いた訳です。特に*nux圏の人々には当たり前の事なんだろうと思うんですが、それ以外の文化圏の人達だとこういうキーバインドは結構盲点なんじゃないかと思います。


は前述の通り、キーボードでは一番左上ですが、であれば、左手と右手の小指を少し動かすだけで、モードの切り替えができる訳です。もちろん、CtrlがCaps Lockの位置にあると想定しての話ですが。この差は思った以上に大きくて、まず心理的な負担が全然違ってきます。後は豊富なキーバインドによるVimの多彩な操作を堪能できるという訳です。


この事が万人に当てはまるかどうかは非常に微妙ではあるんですが、こういう人種もいるんだなーという事で。という事で、11日目のVim Advent Calendar 2011はちょっとこれから、Vimを始めてみたい!という人達への箸休め的なエントリでした。


明日はbleisさんのAdvent Calendarです。

初めてのVimScript

今日いつもの日課になっている、vundleのアップデートをしたところeasymotion.vimがアップデートされていました。
「これはこれは」と思い早速使ってみると、なぜかwなどでも使用できず…。help見たところ何と他のプラギンとの
バッティングしないようにと、になっておりました。


で、めでたく使えるようになったんですが、何かおかしい。デフォルトだとGvimで現在のカラースキームが暗くなって、
飛べる場所が赤い文字で表示されたはずが、カラースキームはそのままで、白文字になってる。ぶっちゃけ見にくい。


おかしいと思い、:mesしてみたら、何やらeasymotion.vimらしい関数で未定義になってるというエラーが出てました。
ちょっとソースを読んでみたところ、「ここおかしくね?」という所があったので、試しに直してみたところ、
エラーが出なくなり、元の表示になりました。


という事で、不安だったんですがGitHubで早速Pull Requestを送ってみた所、先程採用されました!
Fix error because EasyMotion#InitHL is undefined by Layzie · Pull Request #34 · Lokaltog/vim-easymotion · GitHub


ぶっちゃけ本当に初めてVimScriptを弄ったのですが、それもこれもVimテクニックバイブルを読んでいたおかげです。
背は5cm伸びてます!宝くじにも当たりたいです!


まあ、いじったのはたった2行だけでしたが、自分的には大分な進歩です。これからも、VimScript道に精進します。

Vimテクニックバイブル ?作業効率をカイゼンする150の技

Vimテクニックバイブル ?作業効率をカイゼンする150の技

svn 1.7では、vcscommand.vimが使えない件

この3ヶ月くらい、それまで会社で使っていたsvnとかも全然使ってませんでしたが、最近また使いはじめたのです。
で、ちょうど2年ぶりですか?svnがバージョンアップしたという事で何も考えずにインストールして使い始めたんです。


vimではvcscommand.vim - CVS/SVN/SVK/git/hg/bzr integration plugin : vim online使って、addやらlogやらcommitやらを、していたんですが
どうも、「No Suitable Plugin」とかエラーが出て、さっぱりsvnの操作が出来ないと来たもんだ…。結局未だにvimshell使って
(会社のPCはWin XP)コマンド叩いてるんですが、こっちはちゃんと動く。試しにコマンドラインで":!svn log"とかやっても
動く。


おまけに、なぜかディレクトリの直下のファイルはちゃんとvcscommandが効いてる。そして、ディレクトリを一つとか掘ると
上記のエラー。意味が分からん…とか思い該当のディレクトリを見てみたら…。あれ?各ディレクトリにあった".svn"が無い!
なんじゃこれ。と、svnのリリースノート見たらメタファイルの扱いが変わってgitのようにrootディレクトリのみにしか".svn"を
置かないようになったらしい。


これでvcscommandが使えない謎が解けました。で、どうしようかなーと思ったのですがバグ報告しました。
Issue 84 -
vcscommand -

vcscommand thrrow error "No suitable plugin" with svn 1.7 -
CVS, SVN, git, SVK, bzr, and hg integration plugin for VIM - Google Project Hosting

超ザックリな英語ですが、意味は伝わったようで、修正済みのファイルを作ってもらえたようです。


ウチではsvn使ってないんで、明日仕事で試そう。