[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/18 19:04 / Filesize : 368 KB / Number-of Response : 974
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Vim6スクリプトお勉強スレ



1 名前:名無しさん@お腹いっぱい。 [01/12/17 12:15]
みんなでスクリプトを覚えよう

624 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/10(金) 23:02:05 ]
言語の強化よりも、もっとvim内部をいじれるように
してほしいんだけど。
そういう改良はないの?

625 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/10(金) 23:26:33 ]
>>624
ソースがある。

626 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/12(日) 01:05:50 ]
いい加減そういう反応はやめましょうよ…

627 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/12(日) 01:09:13 ]
改良を望む人自身が改良するのが一番いいだろ。

628 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/12(日) 01:29:23 ]
624の言ってるのは、スクリプトそのものの言語仕様をいくら高めたところで
vim側がスクリプトに委ねてくれるものが今のままでは
どのみち大したことはできないってことなんじゃないの。

スクリプトで出来ることを増やそうと言っているのに
その答えがソース弄れというのは頓珍漢。

629 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/12(日) 01:34:56 ]
これは凄いエスパーだな。

630 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/12(日) 02:09:28 ]
ソース弄らなきゃその「スクリプトで出来ることを増やす」こともできないだろ
問題は誰がどのように弄るかなの

だったらどうしたいかアイデアを持っている人がやるのが手っ取り早い

631 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/12(日) 02:34:21 ]
外部でそういう部分を弄って持ち込んでも某mattn氏の二の舞になるだけだからなあ。
hackするのと、開発の方向性を変えるのとは別次元の問題だよ。

632 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/12(日) 03:00:32 ]
とはいえ、開発の方向性を変えるのにパッチを送る以外に有効な方法ある?

まぁ、コミュニティの方向性を変えたいならパッチを送るだけじゃなくって
そういう方向に向くように開発者を説得するのも必要かもしれないが、
それにしたってまず最初にパッチは必要だよね。



633 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/12(日) 03:32:00 ]
こういう件に関しては、あまりそうは思わないな。

単なるhackならとりあえず自分の役には立つが、
scriptingのようなものは正式に取り込まれて初めて意味を持つ。
方向性も定まらないうちに闇雲に書いてみても労力が無駄になるだけだ。
socialを先にすべき問題だろう。

634 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/12(日) 03:33:33 ]
ま、一つ二つ見本くらいは作ってみせてもいいだろうけどネ

patch出して取り込んで、というものとは少々違うわけですよ。

635 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [2005/06/12(日) 10:34:46 ]
一応参考まで。

私の経験で言うとscriptingの拡張としては、User Defined CompletionがVim7で取り
込まれました。パッチはBram氏には相談せずに書き始めました。書き始めた時には無
駄になることも覚悟の上でしたが、ちょうどWin専用で無理矢理Intellisenceを行う
スクリプトが発表された直後だったこともあり、コンセプトは受け入れてもらえると
確信はしていました(まさか関数の定義方法とか殆どそのままだとは思いませんでし
たがorz)。仕様が小さくなかったのでVim6には見送られましたが、Vim7で日の目を見
たというわけです。

逆に言えばVim7開発中である今なら、比較的取り込んでもらいやすいでしょう。もち
ろんパッチの形のほうがBram氏の手間が低くなるので取り込んでもらえる確率は高い
のですが、海外の方はたとえ信義に反しても理に適っていれば納得する傾向があるの
で、コンセプトだけでも背景や考え方つまり説得力があれば、採用される可能性は高
くなるでしょう。

特にMzScheme用のマルチスレッドや、関数ポインタが導入された今ならば、上手くす
れば相当に面白い機能を突っ込める気がしています。

636 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/12(日) 15:17:25 ]
文字コード判定スクリプト。gaucheのguess.cを移植してみた。
ttp://tokyo.cool.ne.jp/hopper2/guess_enc.vim
こっちはlibiconvの移植。(要vim7)
ttp://tokyo.cool.ne.jp/hopper2/vimiconv.tar.bz2

ありえないほど遅いです。
...とんだ無駄足だったよorz

637 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/12(日) 15:22:53 ]
>>636
いやいや、興味深い。
今日の夜にでも試させてもらうよ。



638 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [2005/06/12(日) 15:44:21 ]
>>636
> ありえないほど遅いです。

{}による名前の解決が多いのが原因かもしれないですねぇ。だとすればC++のテンプ
レートみたいに、functionの中でfunctionを定義する、ジェネリックなことができれ
ば解決できるかもしれません。

libcall()使っちゃうのが王道だとは思いますけど。

639 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/13(月) 01:20:26 ]
>>636
試してみた。
500行くらいまでなら、ありえないってほどには遅く感じなかったよ。
10000行のファイルは帰ってこねぇ、、、

640 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/17(金) 23:53:41 ]
synID(line,col,flag)のflagって0でも1でも同じに感じるんですが
どう違うんでしょうか?いまいちわからない…

641 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/19(日) 23:02:44 ]
transparent 属性がついてる構文アイテムの上では違う結果を返すんじゃない。
:set ft=c として ( の上で
:echo synID(line("."),col("."),1)
:echo synID(line("."),col("."),0)
すると違う結果になるよ。


642 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/20(月) 21:13:20 ]
ttp://tokyo.cool.ne.jp/hopper2/undo_ex.vim
undoのシリアライズとemacsのselective undoもどき(要vim7)



643 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/08/02(火) 05:10:24 ]
ttp://tokyo.cool.ne.jp/hopper2/kanaconv.vim
簡易ローマ字入力メソッド(要vim7)
まともな辞書を用意すればなんとか使いものになる...かも?

644 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/08/02(火) 12:08:37 ]
それよりim_customの強化きぼんぬ

645 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/08/03(水) 03:48:22 ]
ttp://tokyo.cool.ne.jp/hopper2/kanaconv.vim.gz
とりあえず、
かんな辞書の取り込み
変換リストのプレビュー
文節区切りの変更
MeCabや茶筌などの形態素解析器との連携
を実装した。
初期変換の制度を上げるのは難しそうだなぁ。

646 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/26(月) 19:30:09 ]
DLLの扱いが
libcall() -> DLLロード -> 関数呼び出し -> DLLアンロード
じゃなくて
libopen() -> DLLロード
libcall() -> 関数呼び出し
libclose() -> DLLアンロード
とか、DLLのインスタンスを保持できるようになってないのがちょっと不思議。

647 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [2005/09/26(月) 20:58:17 ]
>>646
インスタンスを保持する変数が無いから。というより変数にはインスタンスを保持でき
なかったから、と考えるのが正確かも。Vim7の変数は多少事情が違うので、うまく議論
できればそのようにすることは不可能じゃない、とは思います。

648 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/26(月) 21:46:15 ]
単純にDLLが状態保持できればと思ったんだけど、でもそうか、
どうせなら複数インスタンスを作れた方がおもしろそうだ。
それならlibopen()がDLLから関数リストをもらって、その関数をセットした
ディクショナリを返すとかがいいな。ついでに引数の制限もゆるめてほしい。
まぁ議論なんてできないわけだが...on

649 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [2005/09/27(火) 08:44:17 ]
>>648
> それならlibopen()がDLLから関数リストをもらって、

DLL自体にはタイプライブラリ機能はありませんから。COMやXPCOMとかいうあたりがな
いとダメでしょう。

> ついでに引数の制限もゆるめてほしい。

マーシャリングですねぇ。つい最近vim-devで、if_*で呼び出せるスクリプト言語か
ら、Vim本体の変数を操作するようなジェネリックな方法がどうとか、そういう議論が
ありました。ガンバレばその流れで関連技術を滑り込ませられるかもしれません。

とはいえ、なんかそれって.NETだよなぁ。

650 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/27(火) 20:06:51 ]
おれはVim専用のDLLを考えてました。
char* vim_getfunclist() という関数から"1,1,func1,1,3,func2"
みたいな文字列が返ってきて、この場合なら引数を一つ取るfunc1()と、
一つから三つまでの引数を取るfunc2()を、DLLは持っている。
関数のプロトタイプは char** func(int argc, char* argv[])
で、文字列のリスト(NULL終端)を返す。みたいな簡単なの。
あとはVimの関数をDLLに渡して、pVim->eval("@a")とかできるようにしたり。
あんまり深くVimの内部まで操作出来るようにすると、お手軽じゃなくなりそうなんで、
Vimへのアクセスは他のスクリプトと同程度になりそうだけど、DLLをC言語で書くなら
Vimの内部表現を直接いじりたいかも。
うーん…欲しいなぁ。

651 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/27(火) 21:38:28 ID:0]
あー、でもどうせvimスクリプトでDLLをラップするだろうから
DLLの扱いはシンプルでいいのかも。

652 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [2005/09/27(火) 22:01:32 ID:0]
内部表現をいじるなら、先ずはソースコードを直接触っちゃったほうが速いでしょう。
難しいところなんですが、エディタとしての価値を直接高めるのに必要な拡張であれ
ば、思いの他すんなり通るものです。一方、間接的なもの、スクリプトの表現力を上げ
てそれが結果的に、というのはなかなかに難しそうです。



653 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/28(水) 03:33:56 ]
どうもDLLをロードするたびに新しいインスタンスが作られるわけではないようで、
複数インスタンスを作るのは難しそう。
というわけで、DLLのインスタンスを保持するだけの最低限のものを作成。
これでもけっこう遊べるかな。
www.uploda.org/file/uporg203304.zip.html
こんな感じで使う
:call libopen('sum.dll')
:echo libcallnr('sum.dll', 'add', 1) => 1
:echo libcallnr('sum.dll', 'add', 32) => 33
:call libclose('sum.dll')
:echo libcallnr('sum.dll', 'add', 43) => 43  "いままでどおり使うこともできるが
:echo libcallnr('sum.dll', 'add', 32) => 32  "毎度初期化される
これだけでだいぶ幅が広がると思うんだけど…
GUIのウィンドウとか、通信とか...

654 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/28(水) 04:22:52 ]
そういうのは今でも出来るけど、ちょっとしたサーバ(daemon?)を作るのが面倒くさいな。

655 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/09/28(水) 06:02:12 ]
> 6   Add support for loading shared libraries, and calling functions in it.
>       :libload internal-name libname
>       :libunload internal-name
>       ...
優先度は低いながらもいちおうTodoには入ってるようで、ver5.3のころから。
たぶんこれはlibcall実装前のTodoな気もしますが…。
libcallの引数を増やすのも、DLLからVimのコマンドを呼べるようにするのも
Todoに入ってますね。

656 名前:名無しさん@お腹いっぱい。 [2005/11/14(月) 23:07:34 ]
verilogの回路を、vimを使ってで記述しています。
で、vimだけ(一部、tag生成のためにperl)をつかって、ドライブ元を自動検索する
スクリプトを作成中です。
そこで、質問ですが、以下の信号を検索するための正規表現をどうしたら最適だと思いますか?
正規表現が無理なら、関数でも可能です。
1.
xxxxが入力ピンとして存在することを調べる
input   xxxx;

input   yyyy,   /*testdesu*/
        xxxx;
2.xxxxが、ドライブされていることを検索
xxxx = yyyy ;

xxxx <= (zzzz <=
    yyyy) ;
3.xxxxが、接続されているピンを検索
.yyyy(xxxx)
や、
.yyyy(  // pin
    /* test */
    xxxx )
今の僕の検索は
1.input\_[^;]*\<xxxx\>
2.\<xxxx\>\_[ \t\[\]0-9:{}]*<\==\_[^;=]\+\_[^;]*;
3.(\_\s*\(\/\*\_.\{-\}\*\/\)\=\_\s*xxxx\>
なんて感じです。結構適当ですが、まぁ、そこそこヒットします。
微妙にスレ違いかもしれませんが、いいアイディアがあれば教えてもらえればと思います。
結構コメントがいろいろ入る可能性があるので、本来は構文解析させるべきなんでしょうが、
それだと、リアルタイム性が薄れるので、なんとか、ベースは検索+関数って感じで
やりたいと思っています。

657 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/20(日) 08:30:23 ]
Verilogというハードウェア記述言語のソースを書いていて、
それをサポートするツールをVimスクリプトで作っていて、
んで、C言語で例えるなら、ある変数の宣言位置や、代入されている位置や、
その変数を引数に取っているある関数を探したい、ということなんかな?
なにが問題なのかよくわかんないからなんとも言えないけど、
そこそこの割り切りは必要じゃないかと。
検索するだけなら:g/xxxx/.-3number 6とかして目視とかョョョ

658 名前:名無しさん@お腹いっぱい。 [2005/11/24(木) 11:56:54 ]
vim スクリプトで skk を実装してみました。
あやしいところが多々ありますが、
とりあえず動いているようです。
よかったら使ってみてください。
www.jt200x.com/uploder/src/up0272.zip

659 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/24(木) 16:12:56 ]
>>658
すごいですね。

660 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/24(木) 16:14:05 ]
たしかにあやしいw
けどまっつんさんのskkim.vimより変換がかろやか

661 名前:名無しさん@お腹いっぱい。 [2005/11/25(金) 00:30:13 ]
rate this script│(*)God ( )Life Changing ( )Helpful ( )Unfulfilling [rate]

再帰登録や補完にまで対応とは、凄いですね。さっそく使わせて頂いております。


ちょっとだけ改造してみました。検討して頂けると嬉しいです。
ttp://www.jt200x.com/uploder/src/up0293.zip
・▽を<C-H>で削除した後に挙動がおかしくなる現象を修正
・gSで辞書を手動セーブ
・以下のオプションを追加
let skk_egg_like_newline = 1 " <CR>で確定しても改行しない
let skk_show_annotation = 1 " skkinput2ライクなannotation表示 (ださい)
" skkサーバなんちゃって対応 (設定するとL辞書は読まない)
let skk_external_prog = "/usr/bin/env ruby -Ke ~/ruby/skkservcaller.rb -w"
"let plugin_skk_disable = 1 " pluginの無効化

直せなかったもの:
・「. /./・/。/…;.../」のような . や \ などを見出しに含むエントリがおかしい。
 search()が正規表現と解釈するため。(これはこれで/anno.* とかできて面白い?)
・タイプ速度が速いとキーを取りこぼす
・検索やコマンドラインなどで入力できない
・カタカナモードでの変換結果がかなを含む場合はトグルする必要がある(▽ヨミカタ→「読ミ方」)
・Chaliceでは[SKK:あ]が表示されない

その他:
mfdは200はないとダメみたいです。
Lisp対応は(concat "hoge")ってのだけあれば十分だと思います。
今後に大いに期待しておりますので、がんがって!

662 名前:658 mailto:sage [2005/11/25(金) 17:22:12 ]
>>659
>>660
さっそく使ってみてくれてありがとう。

>>661
素早い手直しありがとうございます。
ほとんど使わせてもらいましたが、
> ・▽を<C-H>で削除した後に挙動がおかしくなる現象を修正
これがよくわからないので詳しく説明して!
> ・gSで辞書を手動セーブ
ここにすると skk_keep_state == 0 のときに map されないので、
グローバルにしてみました。skk_manual_save_jisyo_keys を
空にするとこのグローバルマッピングは行わないことにしました。
> " skkサーバなんちゃって対応 (設定するとL辞書は読まない)
> let skk_external_prog = "/usr/bin/env ruby -Ke ~/ruby/skkservcaller.rb -w"
これはskkサーバを動かしていないのでわからない。取り入れたけど。

> ・「. /./・/。/…;.../」のような . や \ などを見出しに含むエントリがおかしい。
これは直しました。これを直してるときに SkkSaveEnv のバグを
発見したのでここも直しました。
> ・タイプ速度が速いとキーを取りこぼす
これは腕がないので再現できません。とりあえず screen の paste では
取りこぼしはないように見えるんだけど…。
> ・検索やコマンドラインなどで入力できない
やる気はあるけどちょっと時間がかかりそう。
> ・カタカナモードでの変換結果がかなを含む場合はトグルする必要がある(▽ヨミカタ→「読ミ方」)
これはわりとすぐにできそうです。
> ・Chaliceでは[SKK:あ]が表示されない
これは確かに自覚症状があったので、ちょっと調べてみます。

とりあえず今日できたところまで
ttp://www.jt200x.com/uploder/src/up0309.zip



663 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/25(金) 22:58:06 ]
>>662
おお、ありがとうございます。良い感じです。

> > ・▽を<C-H>で削除した後に挙動がおかしくなる現象を修正
> これがよくわからないので詳しく説明して!
次の手順で再現できると思います。
/ "▽|"
<C-H> "|"
/ 'Already in ▽ mode'

> elseif b:skk_henkan_mode == 1 && s:SkkCursorCol() < b:skk_hstart
ここでのSkkCursorCol()はカーソル移動「前」の値なので
"<"が成立せず、▽を消しても▽モードから抜けられない結果になります。
「消去後に、変換開始位置とカーソルが一致する」のが正しい条件なので:
> elseif b:skk_henkan_mode == 1 && s:SkkCursorCol() <= b:skk_hstart + 2


> > ・タイプ速度が速いとキーを取りこぼす
> これは腕がないので再現できません。
マシンがボロい(か、辞書がデカい)と再現するのかもです。


> > let skk_external_prog = "/usr/bin/env ruby -Ke ~/ruby/skkservcaller.rb -w"
> これはskkサーバを動かしていないのでわからない。取り入れたけど。
あるといろいろ面白いですよ。複数辞書に対応できたりして。
本当はvim scriptで直接サーバと更新できるといいのですが。

664 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/25(金) 23:07:38 ]
.vimrcの設定例を晒しておきましょう。

let skk_jisyo = "~/.skk-vim-jisyo" " .skk-jisyoだとemacsが起動してたら危険
let skk_show_candidates_count = 2 " これ気が効いてる
let skk_keep_state = 1
let skk_egg_like_newline = 1
let skk_show_annotation = 1
let skk_special_midasi_keys = ">" " ?は普通に使いたい
let skk_user_rom_kana_rules = ""
\. "z<《\<NL>"
\. "z>》\<NL>"
\. "z  \<NL>"
let skk_user_rom_func_rules = ""
\. ";SkkSetHenkanPoint1(kana)\<NL>"
" 要はサーバさえ呼べれば何でもいい
let skk_external_prog = "/usr/bin/env ruby -Ke ~/bin/skkservcaller.rb -w"
set maxfuncdepth=200


実際このスクリプトはかなりのものだと思うので、
できるだけ早い段階で陽の当たる場所へ出してやってほしいです。
vim scriptのSKK! かなりインパクトありますよ。

665 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/26(土) 15:13:56 ]
置く所無いんだったら vim wiki にでも置かせてもらったら?
つ ttp://vim.mydns.jp/?scripts

666 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/28(月) 17:26:12 ]
tokyo.cool.ne.jp/hopper2/if_spidermonkey.diff
VimのSpiderMonkeyインターフェース。
適当にmakefileを書き換えればコンパイルできます。

667 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/28(月) 19:01:41 ]
>>663
なるほどよくわかりました。ただ skk_marker_white を変数に
しているので strlen(g:skk_marker_white) としました。

・カタカナモードでの変換結果がかなを含む場合
これは直しました。

・Chaliceでは[SKK:あ]が表示されない
これは調べてみたら Chalice は statusline を使っていて
親切にも chalice_status_line という変数があったので
let chalice_statusline = '%{SkkGetModeStr()}'
とすれば表示されるようになりました。

>>664
>>665
もうちょっとこの場所で続けさせてください。
ttp://www.jt200x.com/uploder/src/up0548.zip

668 名前:mattn@Vim%Chalice mailto:sage [2005/11/28(月) 20:49:30 ]
# skk.vim
良いっすね。
期待してまつ。

669 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [2005/11/28(月) 21:55:18 ]
>>666 それ、vim-devに投げてみたらどうですか? 結構賛同者は多い予感がします。

670 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/28(月) 23:55:14 ]
>>669
まともに受け答えできそうにないのでやめときます。
いやほんとお恥かしい…。

671 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [2005/11/29(火) 08:57:08 ]
>>670
インストールの手順とかSpiderMonkeyのリソースなどについて、日本語で簡単に解説
してもらえますか? 何が必要で、どこから持ってきてどうすれば良いのかとかどんな
環境で動作確認できたとか。

# これだけの仕事量をうもらせてしまうのは忍びありません

672 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/29(火) 17:46:33 ]
>>671
おお、代わりに投げてくださるんでしょうか。ありがとうございます。
ざっくりとコンパイル手順を書いてみました。
FreeBSD6とWindowsXP(+mingw)でコンパイル、動作確認しています。
tokyo.cool.ne.jp/hopper2/if_spidermonkey_make.html



673 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/29(火) 21:39:14 ]
>>672
乙。でも使用方法や例といった本当のドキュメントも欲しいなぁ。
っちゅうか、ドキュメントなかったら、相手してくんないかも。

674 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/11/30(水) 03:37:00 ]
tokyo.cool.ne.jp/hopper2/if_spidermonkey.txt
でっちあげコピペヘルプ。
整理したらオブジェクト設計の迷いがうきぼりに...orz

675 名前:名無しさん@お腹いっぱい。 [2005/12/01(木) 19:08:05 ]
あ…あの…
カレントファイル名フルパスの文字列の長さを得るにはどうすればよろしいですか…?

676 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/01(木) 19:14:25 ]
:echo expand("%:p")

677 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/01(木) 19:16:04 ]
違った...
:echo strlen(expand("%:p"))

678 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/01(木) 19:21:29 ]
>>676
ありがとうごさいました

679 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/01(木) 20:21:18 ]
最近やたら濃かったから、何か清々しくていいなw

680 名前:名無しさん@お腹いっぱい。 [2005/12/02(金) 12:30:57 ]
二行以上(表示が)になってしまう行は、背景を違う色にしたいのですが、どうすればよろしいですか?

681 名前:名無しさん@お腹いっぱい。 [2005/12/02(金) 13:07:17 ]
ファイルパスの文字列からファイル名文字列のみ抽出するにはどうすればいいですか?

682 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/03(土) 21:03:55 ]
>>681
:echo fnamemodify("/path/to/file.txt", ":p:t")

>>682
ムリ。一時的に強調するだけならなんとか…
function! MatchLongLine()
  let w = winwidth("%")
  let w = w - &foldcolumn
  if &number
    if v:version >= 700
      let w = w - &numberwidth
    else
      let w = w - 8
    endif
  endif
  if &list && &listchars =~ 'eol:'
    let w = w - 1
  endif
  if has('signs')
    redir @a
    silent sign place
    redir END
    if @a =~ 'line='
      let w = w - 2
    endif
  endif
  execute 'match Error /^.*\%>' . w . 'v..*$'
endfunction



683 名前:名無しさん@お腹いっぱい。 [2005/12/05(月) 01:31:37 ]
ありがとうございました^^

684 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/05(月) 02:20:12 ]
skk.vimの調子はいかがー?

685 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/06(火) 14:20:19 ]
skk.vim
コマンドライン入力を可能にしました。
(concat "文字列")に対応しました。
試してみてください。
ttp://49uper.com:8080/html/img-s/98992.zip

それとコマンドラインに入ったときは必ず off の状態になるように
したんですが、ここら辺への意見を聞かせてください。

686 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/06(火) 15:03:17 ]
>それとコマンドラインに入ったときは必ず off の状態になるように
>したんですが、ここら辺への意見を聞かせてください。
>>685
コマンドラインでは日本語を入力することはあまりないので問題な
いと思います。
検索の場合は日本語を入力することも多いでしょうから前回の状態
を保存できるといいかもしれません。

687 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/06(火) 20:49:13 ]
>skk.vim
変換候補の先頭でのxと末尾でのスペースの挙動が変です。
例えば、
1) A:藹  S:姶  D:会  F:饗  [残り 0]
2) あい<space>
となります。まぁホンモノのskkは知らないのだけれど。
あとできればESCで変換をキャンセルしたいです。
困ったときのESC連打が通用しないとパニくります。

688 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/07(水) 05:35:16 ]
>>685
imapやcmapじゃなくてlmapを使うと
状態管理とかしなくていいし楽なんじゃなかろうか。
mapのバッティングとか気にしなくていいし、
カーソルの色も変るし。

689 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/07(水) 17:33:28 ]
>>687
> 変換候補の先頭でのxと末尾でのスペースの挙動が変です。
第一候補で x 読みに戻す。
最終候補で <space> 登録モードに入る。
ということでしたらこれは正しい挙動だと思いますが…。

> 困ったときのESC連打が通用しないとパニくります。
困ったときは <C-g> を連打してください。

690 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/07(水) 17:34:29 ]
>>688
> imapやcmapじゃなくてlmapを使うと
> 状態管理とかしなくていいし楽なんじゃなかろうか。
あ、これいけるかも。
lmap = keymapファイルというイメージがあったので、
端から除外していました。
ちょっととりかかってみます。

691 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/07(水) 19:11:13 ]
undoはなんとかしたいところだが、これはvimscriptの構造的な問題だな。
scriptをブロック化してundoの単位を指定する命令がないんだもん。

692 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/12(月) 11:17:15 ]
vimでプロセスを起動してそのプロセスと通信するにはどうすれば
いいですか?
emacsのstart-process, process-send-stringのようなものです。



693 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/12(月) 13:47:29 ]
>>685
コマンドラインや検索ではskk_egg_like_newlineが効いていないようです。
あと、コマンドラインや検索を<C-H>で抜けられなくなるようです。

694 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/12(月) 15:23:51 ]
>>692
if_perlとかif_rubyとか使うのが簡単じゃないすかね。
もしくはvimと他プロセスを仲介してくれるサーバーを書くとか。

695 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/12(月) 15:47:12 ]
if_rubyの実際の使用例やサンプルって:h ruby以外にはありませんか?
ruby側と引数をやり取りする方法とかさっぱりわかんないっす。

696 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/12(月) 16:43:53 ]
>>695
rrb

697 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/12(月) 16:45:27 ]
>>694
>もしくはvimと他プロセスを仲介してくれるサーバーを書くとか。
そのサーバとどうやってやりとりするのですか?

698 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/12(月) 16:56:56 ]
skk.vimがないのですが。
再うpきぼんです。

699 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/12(月) 17:27:08 ]
>>696
ありがとうございます、読んでみます。

700 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/12(月) 17:36:21 ]
>>697
:!client send message > result
とかlibcall()とか
クライアントの中身はソケットでもSendMessage()でもなんでも

701 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/12(月) 17:42:00 ]
>>700
どうも。if_{perl,ruby}使った方が楽そうですね。

702 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/13(火) 17:15:48 ]
skk.vim
>>693
とりあえず回避しました。

maxfuncdepthの件
おおよそ今までの半分ぐらいで大丈夫になったんじゃないかと思います。
(本当はループで回せればいいんだけど再描画がうまくいかなくて...。)

暫定バージョンです。
ttp://49uper.com:8080/html/img-s/99866.zip

cmapの<c-\>eと<c-r>=の違いについて
throwすると<c-\>eの方はすぐに反応が返ってくる(input()を抜ける)のに、
<c-r>=だと固まる(というかinput()を抜けずにそのままの状態でいる)
わけを誰が知っていたら教えてください。



703 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/13(火) 20:17:43 ]
c_CTRL-R_= の処理でエラーチェックしてないから
この辺
*** ex_getln.c.orig     Tue Dec 13 19:04:59 2005
--- ex_getln.c  Tue Dec 13 19:28:15 2005
***************
*** 1048,1053 ****
--- 1048,1054 ----
                break;
  #endif
 
+ case_esc:
        case ESC:       /* get here if p_wc != ESC or when ESC typed twice */
        case Ctrl_C:
                /* In exmode it doesn't make sense to return. Except when
***************
*** 1094,1099 ****
--- 1095,1105 ----
                        save_cmdline(&save_ccline);
                        c = get_expr_register();
                        restore_cmdline(&save_ccline);
+                       if (get_expr_line() == NULL)
+                       {
+                           beep_flush();
+                           goto case_esc;
+                       }
                    }
                }
  #endif

704 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/14(水) 11:53:11 ]
>>703
ありがとうございます。
ということは、現時点では <C-\>e を使うしかないということか…。
まぁ、登録の時だけなので cmap を切り替えてやってみます。

705 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/15(木) 20:56:05 ]
skk.vimで▽モードのときに色を付けるのはvimスクリプトでは無理?

706 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/16(金) 02:09:37 ]
漢字変換の仕方がわからない、、、

707 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/16(金) 02:21:48 ]
>>706
skkを勉強しなさい

708 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/16(金) 22:34:34 ]
skk.vim をwindowsで使用しているのですが、
skk_jisyoに空白があるパスを指定するとエラーが出てしまいます。

この場合何か特別な書き方があるんでしょうか?

709 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/16(金) 23:49:43 ]
skk.vim,便利に使わせて頂いてます.
2点報告と,1点要望です.

その1 single-repeatの挙動

あほ
あほ
あほ

1. コマンドラインで /あほ
(「あほ」を検索)

2. 最初の「あほ」の「あ」の位置で cwばか<esc>
ばか
あほ
あほ

3. n.n.
ばか
ばか
ばか
となってほしいところが
ばか
bばkか
bばkか
となる

710 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/16(金) 23:52:18 ]
その2 変換中に折り返しが来る場合の挙動
1. :set tw=20 (便宜上,少な目に)

2. 行頭から以下を入力(日本語モードで)
choudoOrikaesi<spc><c-j>deHenkan

ちょうど折り返しで▽
hへんかん

となる


その3
skk_imみたいにモード表示がほしい
(これはただの要望なので,聞き流してください)


711 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/17(土) 00:03:45 ]
>>710
モード表示ありますよ。
se stl&

712 名前:710 mailto:sage [2005/12/17(土) 00:32:16 ]
>>711
ありがとう,知りせんでした.

しかも skk_im ってなんだよ…
im_customの間違いでした orz




713 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/18(日) 17:06:28 ]
>>700
dllの中で自身をロードすれば、libcallの呼び出し後もdllは開放されないので、
状態を保持しなきゃいけないような拡張もlibcallとdllだけで可能。

714 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/19(月) 17:56:01 ]
>>708
let skk_jisyo = 'C:\Program\ Files\hoge' または
let skk_jisyo = "C:\\Program\\ Files\\hoge"

>>709-710
うーん、どっちも悩ましい問題です…。
しばらく宿題とさせておいてください。

715 名前:708 mailto:sage [2005/12/19(月) 19:39:07 ]
>>714
ありがとうございます。無事下記のようにして読み込むことができました。
let skk_jisyo = escape( $VIM ,' ').'\_skk-jisyo'


716 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/24(土) 03:21:17 ]
tokyo.cool.ne.jp/hopper2/vimuim.c
tokyo.cool.ne.jp/hopper2/uim.vim
uimを使った文字入力。オモチャだけど...。今のところほぼ挿入モード専用です。

使い方:
1. vimuim.cを適当にコンパイルする。
  $ cc -shared -o vimuim.so -I/usr/X11R6/include/uim vimuim.c -L/usr/X11R6/lib -luim
2. uim.vimとvimuim.soをruntime/keymap/にコピーする。
3. :set keymap=uim と設定する。
  CTRL-^で言語を切り替えれば入力できるようになります。

オプション:
g:uim_lang (デフォルト"ja")
g:uim_engine (デフォルト"anthy")

717 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/24(土) 08:21:39 ]
>>716
実は私もvim-uimをrubyで作ろうとしていたのでした。(まだ手をつけていないけど)
今後の開発に期待しております。

718 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/25(日) 23:48:41 ]
みんな濃いなあ。。。
やっぱり日本語入力はvimmer共通の悩みなのね

719 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/26(月) 22:18:51 ]
>>716
コマンドラインを使えば、プリエディットに色をつけれるのか。
バッファ内にプリエディットを表示させるときは色はつけれないで
すよね?

720 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/27(火) 08:37:12 ]
例えば、2行3列目の文字を強調する
:syn match Error /\%2l\%3c./
とか細かい指定もできるので一応できます。
ただ、C言語のコメントのような、syn-regionで範囲指定された
空間の中はどうがんばっても無理です。たぶん。

721 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/27(火) 11:59:07 ]
skk.vim
・lmapを使うように変更しました。
・>704 の問題を直しました。おまけとして undo がだいぶきれいになりました。
・変換時の色付けを追加しました。
・ウィンドウサイズが崩れなくなりました。
ttp://49uper.com:8080/html/img-s/101947.zip

722 名前:名無しさん@お腹いっぱい。 [2005/12/27(火) 13:13:46 ]
s/>704/>709
の間違いでした...



723 名前:mattn@Vim%Chalice mailto:sage [2005/12/28(水) 09:09:36 ]
# skk.vim
vim.org の scripts に入れて見られてはどうですか?
結構日本人には、反響あると思いますし、防火壁内の人にも
よいのでは?
# もちろんそのあかつきには、「Life Changing」です。

724 名前:709+710 mailto:sage [2005/12/28(水) 16:31:09 ]
>>709 に関してはバッチリ直っていることを確認しました.

(前バージョンでは出なかった)以下のエラーが出ました.
例えば >>710 の操作で再現すると思います.

Error detected while processing function <SNR>18_SkkKey..<SNR>18_SkkInsert..<SNR>18_SkkInsertKana..<SNR>18_SkkEraseRom..<SNR>18_SkkDeleteRange:
line 23:
E474: Invalid argument: backspace+=indent,eol

Error detected while processing function <SNR>18_SkkKey:
line 42:
E171: Missing :endif


…いつも報告ばかりでスミマセン.
大掃除が終わり次第自分でも中身を見てみたいと思いますが,取り急ぎご報告まで.






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<368KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef