[表示 : 全て 最新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]
みんなでスクリプトを覚えよう

587 名前:& ◆h9Bn.Lr5Ro [05/01/15 15:54:13]
失敗しました。>>586

begin 644 vimonline.diff
M+2TM('9I;6]N;&EN92YV:6TN;W)I9PE4:'4@2F%N(#$S(#`T.C0V.C,W(#(P
M,#4**RLK('9I;6]N;&EN92YV:6T)4V%T($IA;B`Q-2`Q,SHU.#HQ-B`R,#`U
M"D!`("TR-2PV("LR-2PW($!`"B`@('-I;&5N="$@)7,O+R]G"B`@('-I;&5N
M="$@)6<O/'-P86X@8VQA<W,](FYE=W-D871E(B?L+UY<<RH?"]P/B0O:F]I
M;@H@("!S:6QE;G0A("5G+SQT9"!C;&%S<STB;F5W<V1A=&4B+RPO/%PO=&0^
M)"]J;VEN"BL@('-I;&5N="$@)7,O7EPH7&1<9"I<+EQD7&0J7"Y<9%QD*EPI
M)"??:#$^5FEM(%PQ(&ES('1H92!C=7)R96YT('9E<G-I;VX?"]H,3XO"B`@
M(&-A;&P@04Q?97AE8W5T92@G)7,O+BI<*$YE=W-<*3Q<+W-P86X^+BHO7U]?
M)RYG.FAE861L:6YE36%R:T-A=&5G;W)Y+B=<,2]I)RD*("`@8V%L;"!!3%]E
M>&5C=71E*"<E<R?N*EPH4F5C96YT(%-C<FEP="!5<&1A=&5S7"D?"]S<&%N
M/BXJ+U]?7R<N9SIH96%D;&EN94UA<FM#871E9V]R>2XG7#$O:2<I"B`@(&-A
M;&P@04Q?97AE8W5T92@G)7,O+BI<*%)E8V5N="!4:7`@061D:71I;VYS7"D?
M7"]S<&%N/BXJ+U]?7R<N9SIH96%D;&EN94UA<FM#871E9V]R>2XG7#$O:2<I
!"@``
`
end


588 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [05/01/15 16:49:59]
>>587
なんかその diff 微妙におかしくありませんか?

あ、全角「?」が含まれている?

589 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/15 17:05:54]
そろそろuuencode.vimほすい鴨
↓がんがれ

590 名前:586 mailto:sage [05/01/15 18:49:10]
やっぱり失敗してます。>>587
もう1回挑戦

--- vimonline.vim.orig Thu Jan 13 04:46:37 2005
+++ vimonline.vim Sat Jan 15 13:58:16 2005
@@ -25,6 +25,7 @@
silent! %s///g
silent! %g/<span class="newsdate"/,/^?s*<?/p>$/join
silent! %g/<td class="newsdate"/,/<?/td>$/join
+ silent! %s/^?(?d?d*?.?d?d*?.?d?d*?)$/<h1>Vim ? is the current version<?/h1>/
call AL_execute('%s/.*?(News?)<?/span>.*/___'.g:headlineMarkCategory.'?/i')
call AL_execute('%s/.*?(Recent Script Updates?)<?/span>.*/___'.g:headlineMarkCategory.'?/i')
call AL_execute('%s/.*?(Recent Tip Additions?)<?/span>.*/___'.g:headlineMarkCategory.'?/i')


591 名前:586 mailto:sage [05/01/15 19:21:50]
すみません。
590も変。
全角?を半角backslashにしただけじゃ直りませんね。

1行足しただけです。
あと、"Vim ? is"の所はbackslashの後に1を足して下さい。

顔を洗って寝直して来ます。


592 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [05/01/15 20:10:56]
>>589
www.kaoriya.net/testdir/base64.vim

既にあるかも。
:call Uudecode()
でカーソル行以降の最初のbegin〜endブロックをデコードしてカレントディレクトリ
に保存します。Chaliceのバッファに対しても使えます。一応
:call Uuencode(filename)
もあるみたいだけど、なんかうまく動いてないかも。

593 名前:586 mailto:sage [05/01/16 23:20:25]
悔しいので再挑戦させてください。

begin-base64 644 vimonline.diff.gz
H4sICEfG6kEAA3ZpbW9ubGluZS5kaWZmALWQwU+DMBjFz9tf8bnMMMZoYWMjI0hYvBn14KanZoTQ
BqqskLZM/e8tmR5mjIkHD22aL+/33vfqui4c+aERNRcMmRdqJC8Hu6qDm1yAvwAviIJVtAhh7nnL
oeM45/rBthMn6Qr8dRSEkb8+SdMU3PlytgLH3CGk6RAAFK+Z0BdwqTDG5dmkxLFqjVFR50pdjQR7
VTTXbIRneE/UNCa4Tcb4ueHiO6bpT5ABNP0inLPoPZkQStDncYg9xnHlJ0/8AMQHrkBXDIpOSgPA
kUnFG2HsjAT32UVe17C5zdgbKzrNJpaxRFMyuTfpxDbCvkeCpjjLMguVUcVy2v/XXS5frs12ZSPf
kUV8zC37N78HVvQLbAvJWw2Pbd/sPwJ2vIUNpVybmn/3/wAkbgcXQwIAAA==
====

少し変更しました。


594 名前:586@Vim%Chalice mailto:sage [05/01/23 11:41:11 ]
headline/sankei.vimを
記事のタイトルを左に、
urlを補完して右に移動するように
変更してみました。

begin-base64 644 sankei.vim.diff.gz
H4sICKwH80EAA3NhbmtlaS52aW0uZGlmZgCdUtuK2zAQfY6/YmxafIvl2Lm0NY5JWFpKm1Do7tKH
KFm0tmJrY8vBlkv7mD+vFGeX0FIKBXmYkc7xnDmS53nQEn6gDH1nFaoblg/uig4+EQ7BWK5oMo0m
MwhHo6nmuu4VeHDb8TMulLggGs2i6dset1iANx6+AVeFxUID44oGHtyeC/hGH+FYdjnjsK8bKCjJ
SsapAkmKYq0J40J+tIkG6/uvyy+fl3BHmhriQ93UfCEOBBEhkCQ9HRPNM2BFWgE3BeE5jQZB6El9
ntQ0QZr722E4fj6cIg00aNOGHQXlaZ0xnkN6fDcO5b6aZRIOJ+DK2E8D0LKScqHD61bH1S5mVb7Z
JVsniQkUDd3PDWxtdsYWu9g2EpXHWwfbsU8S5LzS8fzjZdQPdVMRsZKZ1XaPMk0LK7SH8FIEsjBN
W/+z6en9v5ttdie2dU4MWzjDma8CqBCpgO3T03+oeSnGdi8rJWUJy9UD/UHTTlDLvJgiMnmjLC/E
3AhmRqJMQk68r7noveqVKtWxr3alNbqJ8uj5GaxJc7ghguZ18xOZONBNW3P/0s66GGHrOLj+x31T
PvSP7cztoUIcI+RgVIgK29iSqS1dCEG2yHuUH/cSfT/XgPJs3/FUsJprvwDOsrrWLgMAAA==
====

595 名前:586@Vim%Chalice mailto:sage [05/01/23 18:08:57 ]
>>594を再考し
日付、記事タイトル、url
の順番にしてみました。(diffの後半)

後、トップニュースが、表示されるようにしてみましたが、
今日の紙面?でしか試していません。(.diffの前半)

begin-base64 644 sankei.vim.diff.gz
H4sICCFm80EAA3NhbmtlaS52aW0uZGlmZgCdVF2PmlAQfV5+xUB2g4qA4EcTg4Sm2aZpbPuw9smr
BuUKt4uXBq52N+mL/6M/tnfED/zYNGmil2E4nDlzZoJpmlCE/Jkya8NWVpaz+G6UrOFzyMFpy1+/
0+13euC2Wl3FMIwK+O5pzXc4V+LeSVC/1S5xQQCm0206DhjlJQgUANDg21yEjIPIfnL6q8BcSoWk
3NBZTmMYQKBhkmf5KkxViGPFBChYSrlQwZ56qmlu/8i3iVWI0DR9u/rcakpExDYQpizmAy2lS6H5
9qsUrBiXNGckxgXJMuOifG+vcN5PaBiljNNRKX3EREql3mI9LwQTa0Frt8NAa4JGvK9DXwa6Lv+x
Xpcpb57vMoAphindG0/9CTF8/QTE+hXd181d9X9yiPIIm7ts/4C6whyGIfLzvm52cECvXhyJ1rEb
UrMapL5lpEYiEtl4AB59PMjv3cMfXghJTpcDjdTGU012S+qar5/Y3HO2N+C4Xx232QFDnr39dh0a
fChUspp6bBWjnw3/JgfG3gQr2KFvNe5VMvi0n/BHXD4xlBHOUYaLpObK+RxvHByWXlevi24f/11s
PN2ySeMtm6RF/6HmeNOul7IWYZrC++GMvtAFzlDfmyIiSCiLEzHQnJ7mo0lWY7fupVelUlTt2ZiV
1qi6FR+3/0uYP38IBY2z/NXSiaPKTajs1r4cYLkbDmAs54qXe9UnbSAuVNm/5+nsqfy87Lir1A+F
7ZUabTtWQC7ucs0XgmVc+QuinupGwwQAAA==
====



596 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/26 19:57:33 ]
あ・・・あのですねあの・・
this->hoge[ i ]なんてなってるのが200行くらいあるんですよ
これら全てを急遽
(*(this->hoge + i))
に変更したいんですよ
あのよろしかったら・・・その・・・・ねそのぉ・・・教えて下さい.

597 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/26 20:49:34 ]
>>596
なぜ変更したいの?

598 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/27 09:53:59 ]
そのままポインタ参照したらいいやん

599 名前:名無しさん@お腹いっぱい。 mailto:sage [05/01/27 12:46:10 ]
こんな感じ?
s@\(\k\+\)->\(\k\+\)\[\s*\(\k\+\)\s*\]@(*(\1->\2 + \3))@
これでダメならPerlスレとかで聞いた方がいいかも.

600 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/12 11:40:41 ]
要望:
1.
hz_ja.vimに変な文字を全部正規化する関数が欲しいなぁ。具体的にはgHA, gZJ

2.
あるフォルダ内のファイルを再帰的に検索するプラグインが欲しいなぁ。
grep -r とか find . -type f | xargs grep みたいなやつ。
Windowsでgrep.exeやcygwin用意するのが面倒な場合があるんで。
あと符号化方式の自動認識を考えたらvimでやっちゃうのも悪くないだろうし。
一個、そういうプラグインを見つけたんだけど、やたら遅くて使い物にならなかった。

それから、検索だけじゃなくて置換も出来ると良いな。リファクタリングするとき便利なんだよね。

601 名前:名無しさん@Vim%Chalice mailto:sage [05/02/12 15:13:46 ]
自分で書け

602 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/12 20:57:04 ]
WinのCygwin上でvim使ってる人いる?
見ためがいいからgvim使ってるけど,ちょっとしたとき<C-z>で
シェルに降りられるのも便利なんだよねえ.

603 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/14 08:38:41 ]
>>601
やはりそうなるのか。
「同じ事考えてますねー。ボクは作っちゃいましたよ!」という人が現れるのを期待してたんだが。

604 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/14 09:34:10 ]
> あるフォルダ内のファイルを再帰的に検索
project.vim で出来るかな。

605 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/15 00:56:08 ]
>>604
ありがとー。試してみるよ。これでダメなら書くか...



606 名前:586@Vim%Chalice mailto:sage [05/02/15 21:44:24 ]
ttp://cvs.kaoriya.net/svn/kaoriya/vimscript/headline/trunk/plugin/headline/
から 2/13 に頂いた sankei.vim にジャンルの表示を加えてみました。

--- sankei.vim.origSun Feb 13 00:37:00 2005
+++ sankei.vimTue Feb 15 21:37:33 2005
@@ -36,14 +36,12 @@
   let @" = save_reg
   " Format headlines
   silent! %s/<br>/\r/g
-  silent! g/\m^<td height="16"><img.*Special/delete _
-  silent! g/\m^<td height="16"><img.*お知らせ/delete _
-  silent! g!/\m^<img[^>]*><a href="[^"]*.htm"\|^・<a href="[^"]*.htm"\|^<td height="16"><img[^>]*><b>/delete _
+  silent! g!/\m^<img[^>]*><a href="[^"]*.htm"\|^・<a href="[^"]*.htm"\|^<td width="110">/delete _
   silent! %s!\m^<img[^>]*><a href="\([^"]\+\)">\([^<]*\)</a>(\(\d\d/\d\d \d\d:\d\d\)).*$!\=HeadlineFormatLine(submatch(2), submatch(1), submatch(3))!
   silent! %s!\m^<img[^>]*><a href="\([^"]\+\)">\([^<]*\)</a>.*$!\=HeadlineFormatLine(submatch(2), submatch(1), '')!
   silent! %s!\m^・<a href="\([^"]\+\)">\([^<]*\)</a>[^(]*(*\(\d\d/\d\d \d\d:\d\d\))*.*$!\=HeadlineFormatLine(submatch(2), submatch(1), submatch(3))!
   silent! %s!\m^・<a href="\([^"]\+\)">\([^<]*\)</a>.*$!\=HeadlineFormatLine(submatch(2), submatch(1), submatch(3))!
-  call AL_execute('%s!\m^<td height="16"><img.*<font[^>]*>\([^<]\+\)</font>.*!'.g:headlineMarkCategory.'\1!')
+  silent! execute '%s/^<td width=.*alt="\([^"]*\)".*$/'.g:headlineMarkCategory.'\1/'
   silent! execute '%s!"\([^"]\+\)">\([^<]\+\)\(.\+\)$!>\3 \2 '.g:headlineUrl_Sankei.'\1!'
   silent! %s/<[^>]*>//g
 endfunction

607 名前:名無しさん@お腹いっぱい。 [05/02/17 14:15:23 ]
:syntax match

:match
は、どういう風な違いがあるんですか?
一緒??

608 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/17 14:32:38 ]
>>607 matchは1つしか定義できないし、複雑な条件を付加することもできない

609 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/17 15:15:21 ]
ありがとう。
そっか、だから match none でも動くのか。

610 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/18 03:03:35 ]
:match yocchan toshichan

611 名前:名無しさん@お腹いっぱい。 mailto:sage [05/02/21 09:30:55 ]
>>610 で「tanokin torio」がマッチするようになりました。
ありがとうございました。

612 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/03/21(月) 04:20:16 ]
windows環境でgtags.vimを利用している方はいますか?
私の環境だとエラーがでて動かないのですが

613 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/04/23(土) 11:54:58 ]
SuperTab.vim、(GTKの)ximと相性悪くない?
<C-X>押すとximがonになるからいちいちoffにしないと次の操作を受け付けない。

614 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/01(水) 14:07:44 ]
Vim7のスクリプトがだいぶ強まってるので
無意味にベイジアンフィルタを書いてみた
ttp://tokyo.cool.ne.jp/hopper2/is_spam.vim
そのうちpythonになっちゃいそうないきおいだ

615 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/05(日) 06:54:04 ]
どんなとこが強まってるのかちょっと紹介してもらえるとうれしいです。



616 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/05(日) 08:15:44 ]
配列や連想配列が実装された

617 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/05(日) 11:37:39 ]
スクリプト勉強中です。環境はWin2K + Kaoriya版Vim6.3です。
自力では解決できなかったので教えてください。

これは動作しますが、Dos窓を閉じる必要があり面倒だなと思い
execute "! dir > C:\\test"

以下の方法を試しましたが、うまく動作しません。
let value = system("dir > C:\\test") "test.txtは作成されない
echo value "エコーは出力される

何故・・・

618 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/05(日) 13:38:25 ]
system()は出力をリダイレクトで受け取るから実際に実行するコマンドが
  dir > C:\test > tmpfile
的なことになってるとおもわれ
  :9verbose echo system("dir > C:\\test")
とかすれば確認できる。出力を直接受け取る必要がないなら
  :silent execute "! dir > C:\\test"
で、目的の動作になると思う

619 名前:617 mailto:sage [2005/06/05(日) 21:57:30 ]
>>618
ありがとうございました。期待の動作になりました。

>>612
618さんのアドバイスのおかげで、Win2Kではgtags.vimに以下の変更を加えたらとりあえず動きました。
オプションの変更は正直よく理解してません。

"let cmd = 'global' . sep . '-tq' . option . sep . pattern
let cmd = 'global' . sep . '-tq' . sep . pattern
"let stuff = system(cmd . " > " . tmpfile)
:silent execute "!" . cmd . ">" . tmpfile

ところでglobalってC++のオーバーロードも判断してくれるんですかね?期待して調べたんですが。
なんか無理っぽくてちょっとがっかり気味。

全体で数百万ステップを超えるソフトの改造に入ったんですが、でかすぎてさっぱり分からんのです。
オーバーロードを認識しないctagsでは役に立たない。
VC++で定義位置とかを追うとビルドばっかりで時間がかかり使い物にならず。

助けてくだされ。

620 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/05(日) 23:36:16 ]
globalはオーバーロードした関数ごとにタグ作ってるみたいだから
普通に使えるんじゃないの。さすがに文脈を判断してジャンプする
とかむりだろうけど、複数候補から自分で選ぶくらいはできそう。

621 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/07(火) 23:32:27 ]
>>615
直接ファイルの入出力ができるようになったのが便利。
あと、まだ実装されてないみたいだけど文字列をforループで処理できるようになるらしい。
つーかリストはやっぱり強力やなぁ。

622 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/07(火) 23:52:46 ]
ショパン最強

623 名前:名無しさん@お腹いっぱい。 mailto:sage [2005/06/08(水) 12:51:36 ]
Vim7はこんな風にluaやjavascriptみたいなクラスが書けるのもおもしろい

let counter = {}
let counter.count = 0
function counter.next() dict
  let self.count += 1
  return self.count
endfunction

echo counter.next()

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連打が通用しないとパニくります。






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

前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