dannの日記

2009-10-19

neocomplcacheでtagで補完する方法あれば

00:18

最近、neocomplcacheを少し使ってみてるんですが、autocomplpopから1点移行できない点があってまだ移行できず。

ftplugin/perl.vimとかで、tagsを以下のように設定してるんですが、このtagから補完する方法がよくわからなかったりします。

setlocal tags+=~/.vim/tags/perl/cpan.tags

neocomplcacheは特にsnippetの補完がかなりいいので、何か方法があれば移行したいなぁと。どなたか使ってる方いらっしゃれば、是非教えてください!

ShougoShougo2009/10/21 15:20neocomplcacheの作者です。neocomplcacheはタグ補完に対応しているのですが、
タグファイルが大きいと読み込みに時間がかかるという欠点があり、
自動補完では読み込まないようになっています。
次のバージョンで対応させます。
将来的には、ファイルのインクルードを自動認識するインクルード補完を実装したいですね。

danndann2009/10/21 22:23おぉ、どうもありがとうございます!オプションでもいいので、つけて頂けると大変ありがたいです。

ShougoShougo2009/10/22 15:54githubにある最新版でタグ補完が有効になりました。お試しください。
いずれタグ補完のルーチンも改良したいところです。

danndann2009/10/23 02:57どうもありがとうございます!後で使い込んでみます!

少し試した感じだと、タグ補完ルールがautocomplpopとは違うみたいですね。perlで試してみてるんですが、autocomplpopだとpackage名しか補完されてないようなので、割と現実的な速度で動いています。neoconだとtagsが全対象になるので、tagsのサイズが大きいとtypeしながら補完する用途だとちょっと難しい印象です。

# dictにパッケージ名一覧をいれて補完するようにしたほうが、今のところは現実的な気がしてきました。

ShougoShougo2009/10/23 10:13neocomplcacheのタグ補完が遅いのは認識していて、結果をキャッシュするようにすれば改善されるはずです。それでも、最初の補完は重いでしょうが……。
autocomplpopだと「パッケージ名しか補完されない」というのは妙ですね。
あれはVim標準の補完を用いているので、同じような結果になるはずですが。

2009-04-25

簡単に関数の選択を

11:13

メソッドの移動を割とよくやるので、メソッドを簡単に選択できないかなぁと。

例えば、以下のようなメソッドがあるときに、oopsメソッド全体を選択したいというケースです。

visual modeでjで移動して選択とやっているんだけど、明らかに効率が悪いです...

sub oops {
  print 'xxx';
  if(aaa) {
     print 'yyy'
  }
  1;
}

text objectでやれればベストな気がするんですが、自作のを作らないとできなそうだなぁと。ただ、textobj-userはこの用途ではなさそう。

その先を頑張るには、自作のtext objectを頑張るしかないのかなぁと。

これは何かいい解があるんでしょうか。いい解があれば是非おしえてください!

# id:thincaさんがtext-object化してる!id:ka-nachtさんのtextobj-functionというのがあるのかぁ。thinca++, ka-nacht++

http://d.hatena.ne.jp/thinca/20090426/1240675033#

ruiccruicc2009/04/25 12:55メソッド1行目もしくは最終行で
V%
てのはどうでしょう。%は対括弧にjumpですね。

ka-nachtka-nacht2009/04/25 13:59> ただ、textobj-userはこの用途ではなさそう。
そんなことはないですよ、というかそう判断した根拠は何ですか?

danndann2009/04/25 14:20> ruiccさん
ありがとうございます!これでvisual modeで選択しなくてよさそうです。

> ka-nachtさん
メソッドの最後の}にマッチする正規表現をどうかけばいいんだろうなぁと思ったのが理由ですね。

ka-nachtka-nacht2009/04/25 14:30>メソッドの最後の}にマッチする正規表現をどうかけばいいんだろうなぁと思ったのが理由ですね。
正規表現をどうしても使いたいのであれば、コーディングルールが定まっているならばどうとでもなります。

ただ該当範囲の選択に正規表現を使うのは簡易的な手段であって、Vim scriptで記述できるようにもしてますよ。

danndann2009/04/25 14:49ka-nachtさん>
vim scriptでも記述できるんですね。それであれば、そっちのほうがよさそうですねー。関数をtext-objectとして扱えると使える場面が結構ありそうなので今度使ってみます!

ruiccruicc2009/04/25 16:55あと関数全体を折り畳んでおくと、ddやyy等で折りたたみ全体が扱えて便利ですね。

danndann2009/04/26 09:24おぉ、なるほど!移動させたいときにfoldさせるっていう使い方もあるかもしれないですね。複数のメソッドまとめて移動させたいときには使えるのかもなぁと。

2008-10-12

vimで日本語

18:02

http://d.hatena.ne.jp/ruzia/20080918/1221746121

やりたいことは、大体ruziaさんのと同じで、日本語を多量に書くようなファイルで、

    * インサートモードに変更(ここでことえりを日本語入力モードに)
    * 日本語を入力
    * エンターで確定
    * 別の日本語を入力・・・(複数回)
    * ノーマルモードに変更(ここでことえりの日本語入力も解除)

というのをしたいなぁと。

ka-nachtさんのresみる感じだと、iminsertの切り換えができればいいのかなぁということで、少し試してみました。

http://vim.g.hatena.ne.jp/ka-nacht/20081012/1223794317

au BufNewFile,BufRead *.txt set iminsert=2
inoremap <ESC> <ESC>:set iminsert=0<CR>

こんな感じかなぁと思ったんだけど、MacPortでインストールしたvim 7.1なのだけれど、

    * インサートモードに変更(ここでことえりを日本語入力モードに)
    * ノーマルモードに変更(ここでことえりの日本語入力も解除)

のどっちもできず。

multi_byte_imeのオプションつける必要があんのかなぁ。

今まではコード書くときしかvim使ってなかったから、特段気にすることもなかったんだけれど、vimだけに統一するのもいいかなぁと最近思い始めた今日この頃。

みなさん、どうしてるんでしょ。エディタvimで統一して、プログラムも文書書きも全部vim

2008-10-11

VimでIMEのON/OFFをスマートに切り替えるには?

02:02

プログラミングするのにvimは向いてる気がするのだけれど、日本語と英語が混在する文章を書くのにvimは向いてない気がする。モードの切り替えとIMEのON/OFFを両方しなきゃいけないのがとても面倒。

なにかこれいい解があるのかなぁ。

MacVim

01:54

MacVimってどういう点がいいんだろうなぁ。screen+zsh+vimで使っているせいか、MacVimを使う事の利点がいまいちわからない。

fuzzyfinder-textmate

01:45

http://weblog.jamisbuck.org/2008/10/10/coming-home-to-vim

fuzzyfinder-textmateはいいなぁ。ただ、遅くて実用するに至らないのだけれど。fuzzyfinderで公式サポートになるといいなぁ。