1 名前:名無しさん@お腹いっぱい。 [01/12/17 12:15] みんなでスクリプトを覚えよう
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 …いつも報告ばかりでスミマセン. 大掃除が終わり次第自分でも中身を見てみたいと思いますが,取り急ぎご報告まで.
725 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/28(水) 17:33:26 ] >>724 こちらでは再現できません。 vim のバージョンはいくつでしょうか? また、set backspace=indent,eol か let &backspace = "indent,eol" でエラーは出ますか?
726 名前:725 mailto:sage [2005/12/28(水) 18:41:33 ] >>724 理由がわかりました。'backspace' の値が数値だとエラーが出るようです。 以下のパッチを当ててください。 1121c1121 < set backspace+=indent,eol --- > set backspace=indent,eol 1196c1196 < set backspace+=indent,eol --- > set backspace=indent,eol 1297c1297 < exe "lnoremap <silent> <buffer> " . g:skk_abbrev_to_zenei_key . " <C-r>=<SID>SkkKey(\"<C-v>" . g:skk_abbrev_to_zenei_key . "\")<CR>" --- > exe "lnoremap <buffer> " . g:skk_abbrev_to_zenei_key . " <C-r>=<SID>SkkKey(\"<C-v><C-q>\")<CR>" 1366c1366 < elseif a:key ==# g:skk_abbrev_to_zenei_key --- > elseif a:key == "\<C-q>"
727 名前:724 mailto:sage [2005/12/28(水) 20:00:54 ] >>726 素早い反応ありがとうございます. > 以下のパッチを当ててください。 修正(>>721 以前のスクリプトの挙動になっていること)を確認しました ♪
728 名前:名無しさん@お腹いっぱい。 [2005/12/29(木) 00:23:01 ] gvim は uim 1.0.0 以上の vim 協調モードでOKな気がする。 コンソールは uim-fep でこれまたOK
729 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/29(木) 00:43:00 ] 文章書きたい人には毎回offで始まる協調モードはあまりOKじゃないっす。
730 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/29(木) 01:52:54 ] onだったらコマンド送れないやん
731 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/29(木) 01:54:28 ] そりゃ当たり前。 だからコマンドモードではoff、挿入モードではonまたは前回と同じ状態という 制御が求められるのですよ。
732 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/29(木) 13:34:23 ] >>716 こりゃいーわ imcustomみたいで
733 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/29(木) 14:45:59 ] というかgvimのmbyte.cは腐ってるから、誰か書き直さない?
734 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/29(木) 17:13:53 ] 先生!アボートしますた。 *** glibc detected *** double free or corruption (out): 0x085089e8 *** Vim: 致命的シグナル ABRT を検知しました
735 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/12/30(金) 18:10:01 ] >>733 そういえば文字化けしまくるな
736 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/12(木) 20:58:14 ] インストールされているカラースキームを数秒ごとにスライドショーのように 表示するスクリプト、作成お願いします。
737 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/12(木) 22:06:03 ] let i = 0 let color_files = globpath(&runtimepath, "colors/*.vim") while i < strlen(color_files) let file = matchstr(color_files, "[^\n]*", i) execute "source " . file redraw echo g:colors_name let i = i + strlen(file) + 1 sleep 1 endwhile
738 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/13(金) 16:21:19 ] 神光臨! それにしても、colors_name を設定していない不届き者が何名がおるの。 自分がインストールしている範囲で、6カラースキームあった。
739 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/14(土) 13:23:56 ] skk.vim取れないよん 再うpよろ
740 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/16(月) 18:23:43 ] skk.vim ちょっとだけしか手を入れてないけど ttp://49uper.com:8080/html/img-s/105893.zip
741 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/18(水) 14:27:05 ] >>740 ありがとうございます。DLできました。
742 名前:739 mailto:sage [2006/01/20(金) 00:55:45 ] あー、ちょっとこのスレ覗かないうちに・・ うpしてくれたけど、もう落とせない・・ ガーソ
743 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/20(金) 17:28:40 ] skk.vim >740 とまったく同じ ttp://49uper.com:8080/html/img-s/106584.zip
744 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [2006/01/20(金) 17:38:06 ] >>743 www.kaoriya.net/testdir/skkvim-20060116.zip にコピーを置いておきます。
745 名前:743 mailto:sage [2006/01/23(月) 09:25:21 ] >> KoRoN 様 お手数をおかけして申し訳ありません。 ありがとうございました。
746 名前:743 mailto:sage [2006/01/24(火) 02:27:19 ] >>744 やっと落とせた おおきに!
747 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/26(木) 16:44:31 ] vimスクリプトの関数って2つの値を返す、もしくは引数の値を書き 換えることってできないのですか?
748 名前:mattn@Vim%Chalice mailto:sage [2006/01/26(木) 17:40:25 ] >>747 function! Test() let l = [1, 2] return l endfunction let r = Test() echo r[0] echo r[1] では駄目ですか?
749 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/01/26(木) 17:53:16 ] >>748 それ、vim7ですよね。
750 名前:mattn@Vim%Chalice mailto:sage [2006/01/26(木) 18:00:43 ] そうですね。 vim6 では、セッション変数を利用するしかないと思われます。 # もしくは改行などのセパレータを使った文字列を返す等
751 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/02(木) 02:17:24 ] 知らんかった。感動した。 :let filename = "hoge.txt" :e `=filename`
752 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/03(金) 01:27:09 ] gvimでなくvim(GUIでなくターミナルでvimが起動している)という判定を vimscriptで書くとどうなりますか?
753 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/03(金) 01:34:09 ] :echo has('gui_running')
754 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/03(金) 01:37:35 ] >>752 if has("gui_running") "GUI else "CUI endif
755 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/04(土) 02:50:26 ] >>753-754 ありがとうございました。
756 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/05(日) 09:14:25 ] vim scriptだけでskkが動くのならmigemoもできるかも?
757 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [2006/02/05(日) 10:22:44 ] >>756 1行の候補を探せば良いだけのSKKと、探し出した複数行の候補を正規表現へ組み立て なければならないMigemoでは少し事情が違い、大量のCPUとメモリを使ってしまうで しょう。回避策はいくつか考えられますが、実用になる速度+メモリで動くようにな るには少し時間がかかる気がします。
758 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/07(火) 21:23:34 ] scriptの中で % s/a/b/g を実行したときにaが見つからないと ↓ 処理中にエラーが検出されました。 E486: パターンはみつかりませんでした。: a ↑ のようなエラーメッセージが表示されてうるさいので try〜catch文で囲ってるんですがどうもcatchできない みたいです。パターンがなくてもエラーメッセージが 出ないようにしたい場合どうすればいいんでしょうか?
759 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/07(火) 21:26:54 ] %s/a/b/ge :h :s_flags
760 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/02/07(火) 21:59:59 ] >>759 うまくいきますた。謝呀
761 名前:名無しさん@お腹いっぱい。 [2006/02/24(金) 13:46:01 ] :let foo = "Hello World" :echo foo Hello World :let foo = 5 :let bar = "2" :echo "foo+bar=" . (foo + bar) foo+bar=7
762 名前:名無しさん@お腹いっぱい。 [2006/03/14(火) 10:56:49 ] skk.vim お久し振りです。 >>710 への一つの解として Auto Fill モードを付けてみました。 format.vim がロードされてないと自動で折り返しはしません。 デフォルトではトグルキーを <C-k> にマップしてあります。 ttp://aploda.org/dl.php?mode=pass&file_id=0000000092
763 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [2006/03/14(火) 11:50:40 ] >>762 おつかれさまです。コピー置いておきます。 www.kaoriya.net/testdir/skkvim-20060314.zip
764 名前:710 mailto:sage [2006/03/15(水) 06:55:59 ] >>762 素晴らしいです.実用には十分です. 現在も100% skk.vimを常用しているので引き続きテストします. 本当にありがとうございます.
765 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/10(月) 22:31:47 ] skk.vim すげぇぇぇ!!!!
766 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/21(金) 19:51:55 ] 良スレ
767 名前:名無しさん@お腹いっぱい。 [2006/04/24(月) 00:54:56 ] >>751 えと、これはどう解釈したらいいのでしょ? `=foo` の部分がどういう意味の構文だかわからんす。
768 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/04/24(月) 03:46:40 ] :h `-expansion
769 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/05/03(水) 00:48:03 ] テキストファイルがたくさんあって中身に必ず"DT[YYYY-MM-DD]"という文字列が あります(YYYY-MM-DDは年月日)。これらのファイルのうち例えば1989年以降の ファイルだけカウントしたい場合どうしたらよいでしょうか? s/DT\[\([0-9]\{4}\)/\1/g の\1みたいにマッチした文字列を変数に取り出すみたいなことはできるのでしょうか。
770 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/05/03(水) 10:50:12 ] vimよりは、普通にegrep+wcでやっつけたほうが楽だとおもうけど...
771 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/05/03(水) 14:13:38 ] よくわかんないけどこういうの? function! Func() let year = matchstr(getline('.'), 'DT\[\zs\d\{4}\ze-\d\{2}-\d\{2}\]') if year >= 1989 echo "ウホッ" endif endfunction g/DT\[\d\{4}-\d\{2}-\d\{2}\]/call Func()
772 名前:769 mailto:sage [2006/05/03(水) 22:55:57 ] >>771 おおっありがとう。 function! CountPeriod( period ) let s:check_sum = 0 let s:period_sum = 0 bufdo call s:DoCounts( a:period ) echo a:period "以降のファイルは" s:period_sum "個でした。" echo "チェックしたファイル数 "s:check_sum endfunction function! s:DoCounts( period ) g/DT\[\d\{4}[0-9\-,]*\]/call s:Counts( a:period ) endfunction function! s:Counts( period ) let s:check_sum = s:check_sum + 1 let year = matchstr(getline('.'), 'DT\[\zs\d\{4}\ze[0-9\-,]*\]') if year >= a:period let s:period_sum = s:period_sum + 1 endif endfunction こんな感じで思っていた事ができました。
773 名前:名無しさん@お腹いっぱい。 [2006/05/11(木) 17:49:17 ] 不特定多数行の内、 folderの単語の無い行を取り去りたいのですが、どうしたらよいですか?
774 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [2006/05/11(木) 18:13:37 ] :g/folder/d かな? 「folderの単語の無い」っていうのの意図がわかりません。
775 名前:名無しさん@お腹いっぱい。 [2006/05/11(木) 18:45:12 ] "folder"という単語が一度も登場しない行の事です。
776 名前:名無しさん@お腹いっぱい。 [2006/05/11(木) 18:53:00 ] 要するに、"folder"が登場する行をコレクトしたいのです。
777 名前:匿名希望@Vim%Chalice mailto:sage [2006/05/11(木) 21:19:53 ] :v/folder/d のことか
778 名前:名無しさん@お腹いっぱい。 [2006/05/11(木) 23:12:54 ] ありがとう匿名の人
779 名前:名無しさん@Vim%Chalice mailto:sage [2006/05/12(金) 23:08:03 ] :g!は:vとも書けるのか、はじめて知った でもスレ違い気味だね
780 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/05/14(日) 21:25:17 ] vim7にしてkaoriyaのパッチを当てたけど、migemoが効かない。 :versionでは+migemoになってるのに。
781 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/05/14(日) 21:26:43 ] スマン。書くスレ間違えた。
782 名前:780 mailto:sage [2006/05/14(日) 21:32:12 ] migemodictが設定されてませんでした。
783 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/06/08(木) 08:20:17 ] tokyo.cool.ne.jp/hopper2/vimproc.zip Vimスクリプトでプロセス間通信やソケット通信しちゃうライブラリ。 例えばこのように遊べます... let sock = g:vimproc.socket_open("www.yahoo.com", 80) call sock.write("GET / HTTP/1.0\r\n\r\n") let res = "" while !sock.eof let res .= sock.read() endwhile call sock.close() for line in split(res, '\r\n\|\r\|\n') " ... endfor
784 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/06/20(火) 17:05:11 ] >> 783 おもすれー。 ところで proc.vim の関数定義で書いてある dict ってどういう意味があるのでしょうか。
785 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/06/20(火) 23:52:54 ] dict を指定した関数では self という変数が暗黙的に使えるようになります。 c++ の this や python の self みたいなもんです。 ディクショナリとともに使い、オブジェクト指向っぽいコードが書けます。 :help Dictionary-function より :function Mylen() dict : return len(self.data) :endfunction :let mydict = {'data': [0, 1, 2, 3], 'len': function("Mylen")} :echo mydict.len() この例だと、selfにはmydictが代入されます。 普通の関数と同じようには呼べません。 :call Mylen() <- これはエラーになる 関数の定義とディクショナリへの設定をまとめてすることもできます。 :help numbered-function より :let mydict = {'data': [0, 1, 2, 3]} :function mydict.len() dict : return len(self.data) :endfunction :echo mydict.len() (この方法で定義した関数には名前ではなく番号が付けられるので、 エラーが起きたときに「関数 3 でエラー」みたいに表示されて泣けます)
786 名前:784 mailto:sage [2006/06/21(水) 11:35:50 ] いえ、dict を指定しなくても self が参照できるため、疑問に思ったのです。 :let mydict = {'data': [0, 1, 2, 3]} :function mydict.len() : return len(self.data) :endfunction :echo mydict.len() という dict を書かない書き方でも self が参照でき、 期待した値が帰ってくるので、dict 書かなくてもいいんじゃないかなぁ、 と思った次第です。
787 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/06/21(水) 22:03:00 ] あーホントだ。 It is not necessary to use the "dict" attribute for a numbered function. ですね。気づかなんだ。
788 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/06/22(木) 23:53:45 ] >>784 の vimproc を利用して簡単な HTTP クライアントを作ってみました。 www.bigbold.com/snippets/posts/show/2227 let h = HTTP.new('www.bigbold.com') let res = h.get('/snippets/') echo res.headers if res.code < 400 echo res.body else echo 'error ' . res.code endif などして使うことができます。 エラー処理周りは全くやってないのでお遊び程度にしか使えませんが…。
789 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/06/23(金) 11:14:41 ] むー、>>783 のやつ面白そうなんだけど、 Windowsでも使えるようにするには、どうやってコンパイルしたらいいんだろー
790 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/06/23(金) 19:52:23 ] Windowsでも使えるようにしたので適当にどうぞ。urlは同じです。dllも入ってます。 vimproc.dllはVisual Studioでコンパイル、vimproc_mingw.dllはmingwでコンパイル したやつです。たぶん大丈夫だろうけどダメなら交換してください。 pipeは怪しいけど他はそれなりに動くと思います。 ...ちゃんとマニアックな人がいて良かったw
791 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/06/24(土) 08:11:35 ] >>790 やーべー、言ってみるもんだw ありがとーです。遊ばしてもらいます。
792 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/06/29(木) 11:15:13 ] skk.vim 毎回毎回同じローマ字ルールを計算するのも無駄なので SkkAddRulesSection() というのを作りました。これはコンパイル済のデータを自分自身に書き込みます。 読み込み時間は多少増えますが、気にならないレベルだと思います。 削除するには SkkDeleteRulesSection() を呼んでください。 あと vim7 にも対応したつもりです。 それと、いつまでも KoRoNさんのところをお借りしているわけにもいかないので、 まっつんさんが言われたように vim.org の scripts に公開してみることにしました。 ttp://www.vim.org/scripts/script.php?script_id=1589
793 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/06/29(木) 16:28:04 ] キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
794 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/07/17(月) 07:31:45 ] function! g:GetHere() redir => str silent function g:Here redir END let lines = split(str, '\n')[1:-2] " 前後のゴミ(関数宣言)を削除 let lines = map(lines, 'v:val[3:]') " 行番号を削除 return join(lines, "\n") endfunction function! g:Here() ねんがんの ヒアドキュメント をてにいれたぞ endfunction let a = g:GetHere() function! g:Here() これは ヒアドキュメントです ウヒョヒョ endfunction let b = g:GetHere()
795 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/07/17(月) 16:25:04 ] >>794 これはどう使うものなんだい?
796 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/07/17(月) 18:39:23 ] どうって言われてもな。見たまんまだよ :fu! g:Here() : テキスト :endf :echo g:GetHere() テキスト
797 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/07/19(水) 22:07:18 ] >>794 うまいね。vimスクリプトでここまでトリッキーな 技は始めて見た。
798 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/08/01(火) 03:41:45 ] Vimの関数はグローバル関数と無名関数の二種類しかないという話。 fun Func() endf fun g:Func() <- Func()とは区別される endf fun g:func() endf fun b:func() endf fun w:func() endf fun s:func() endf fun hogehoge::func() endf 全部グローバル関数。 b:とかw:とかに特殊な意味はなくて、単に関数名にコロンが使えるってことでしかない。 s:func()は特別扱いだけど、<SNR>123_func()という特殊な名前のグローバル関数に 過ぎないので、スクリプト番号さえわかればどこからでも呼び出せる。 ちなみに関数と変数は名前空間が分かれている。
799 名前:カラーロゴなり (1/2) mailto:sage [2006/08/02(水) 11:21:56 ] let h = ["black", "darkblue", "darkgreen", "darkcyan", "darkred", "darkmagenta", "brown", \ "lightgray", "darkgray", "blue", "green", "cyan", "red", "magenta", "yellow", "white"] for i in range(16) execute printf('syn match _%x /\c%x/', i, i) execute printf('hi _%x guifg=%s guibg=%s ctermfg=%s ctermbg=%s', i, h[i], h[i], h[i], h[i]) endfor put =' A ' put =' A2A ' put =' 7777777777777AA222AA7777777777777777' put =' 788888888888822222227888888888888888' put =' 00888888888002222222008888888888000 ' put =' 888888888222222222278888888800 ' put =' 7888888882222222227888888880 ' put =' 788888888222222277888888800 ' put =' 78888888822222278888888802A ' put =' 788888888222277888888800222A ' put =' A7888888882227888888880222222AA ' put =' A2788888888277888888800222222222A ' put =' AA227888888887888888880222222222222AA '
800 名前:カラーロゴなり (2/2) mailto:sage [2006/08/02(水) 11:23:32 ] put ='22222788888888888888880022222222222222A' put =' 2222788888888888888008822222222222200 ' put =' 227888888888888002888222222222220 ' put =' 2788888888888022222222222222220 ' put =' 7888888888002222888228888828888 ' put =' 78888888802222228882288888888888 ' put =' 788888800222222288822882288 88 ' put =' 788888022222222888822882 88 88 ' put =' 788800 222222228882288 88 88 ' put =' 7880 22222228882288 88 88 ' put =' 780 222228882 88 88 88 ' put =' 00 2222888 88 88 88 ' put =' 220 ' put =' 0 '
801 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/08/09(水) 21:47:02 ] メールアドレスを補完する completefunc を作ろうとしたけど 完全なものにするのはかなり大変だとわかった。 誰か改良して。 function! CompleteMail(findstart, base) if a:findstart let line = getline(".") let start = col(".") - 1 while start > 0 && line[start - 1] =~ '[A-Za-z@\.\-]' let start -= 1 endwhile return start else let res = []
802 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/08/09(水) 21:47:57 ] while 1 let match = search('\<' . a:base, "bW") if match <= 0 return res endif let line = getline(".") let b = col(".") - 1 let e = match(line, '[^A-Za-z@\.\-]', b + 1) if e < 0 let e = strlen(line) endif call add(res, strpart(line, b, e-b)) if complete_check() return res endif endwhile endif endfunction set completefunc=CompleteMail