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

158 名前:151 mailto:sage [02/02/03 01:29]
> 1さん
おつかれさまです。

159 名前:1 [02/02/05 01:38]
これこそVimの醍醐味!? シンタックスハイライト設定のお勉強その1
とりあえず独自の設定を作ってみる。

まず :set filetype=memo と設定した時には runtime/syntax/memo.vim というファイル
を vim は開こうとするようなので runtime/syntax/memo.vim を作ってみる。
中には↓これを書いてみる。

highlight MemoHead guifg=#00FFFF
syntax match MemoHead display "^■.*"

水色設定を MemoHead って名前にして正規表現 ^■.* にマッチする部分を
MemoHead の設定色にするという意味。
んで適当なファイルを開いて行頭から ■なんとか と書く。
んで :set filetype=memo を実行。「■なんとか」 の行が水色になったら成功と。

もうちょっと調べたいけど、もう寝ないとやべぇ。

160 名前:名無しさん@お腹いっぱい。 mailto:sage [02/02/06 00:23]
スクリプト実行してるとき例えば

exe "normal i\<C-D>"

ってなってると i_CTRL-D が実行されるけど、
これってユーザー毎に Mapping を変更していたら違う結果が返ってくるよね?
これを Mapping に依存せずに本来の動作をさせたいんだけど
どうすればよいの?

161 名前:160 [02/02/06 00:24]
sage が残ってた。
age

162 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:koron@tka.att.ne.jp [02/02/06 00:27]
>>160
「!」を使ってこうします。
  :exe "normal! i\<C-D>"

163 名前:名無しさん@お腹いっぱい。 [02/02/06 00:41]
>>162
おお、ありがとう
テトリス落としてやってたんだけどなんか表示が変だなって思って調べてたら・・・

案外こういうのっていいかげんに思われてるんですかねえ。
まあこういう(どんな環境でも動作させようという)意識の差っていうのは個人差があるんでしょうけど。

164 名前:名無しさん@お腹いっぱい。 mailto:sage [02/02/06 00:46]
>163
テトリスって?検索したけどわからなかった。
vim でテトリス?

165 名前:160 mailto:sage [02/02/06 00:57]
vim.sourceforge.net/
の Recent Script Updates にあったんで試してみた

166 名前:名無しさん@お腹いっぱい。 mailto:sage [02/02/06 01:15]
ありがとう、おもしろい。
こんなこともできるんですね。



167 名前:名無しさん@お腹いっぱい。 [02/02/06 01:22]
> Source it! To start the game, press <Leader>te.

の <Leader> って何?

168 名前:名無しさん@お腹いっぱい。 mailto:sage [02/02/06 01:23]
:h <leader>

設定してなければ\らしい

169 名前:160 mailto:sage [02/02/06 01:24]
オレもよう分からんけどとりあえずノーマルモードで
\te
ってやったらできるぞ

170 名前:167 mailto:sage [02/02/06 01:46]
>168,169
thanx!

171 名前:名無しさん@お腹いっぱい。 [02/02/10 22:36]
emacsの〜-modeみたいに、新しい言語のモードを作ろうと思った場合、
vimではどうやるんですか?

172 名前:名無しさん@お腹いっぱい。 [02/02/10 23:02]
>>171
:help ftplugin
:help mysyntaxfile

173 名前:名無しさん@お腹いっぱい。 mailto:sage [02/02/12 18:59]
Tetrisに続いてSokobanなるゲームが(w まだ試してないけど。

174 名前:1 [02/02/12 23:00]
>>173
遊んでみました。
j と k のマッピングが逆になってたから直さないとやり辛いよ(w
Tetirsと違ってソースは解り易く書かれててうれしいね

175 名前:名無しさん@お腹いっぱい。 mailto:sage [02/02/13 19:17]
>>174
マッピングは明らかなミスですよね。まだアップデートされてないみたい
だけど。そんなことよりレベル1で258歩も歩いてしもた…。鬱打。

176 名前:名無しさん@お腹いっぱい。 [02/02/17 23:29]
age



177 名前:名無しさん@お腹いっぱい。 mailto:sage [02/02/18 00:42]
カーソル行のフォールドが開いてるか閉じてるかを調べる関数、乃至
変数なんて無いですよね。今後実装されるかは別として。
何で聞くかというと、それで困ってる人がいるんですよ。winmanagerの
作者さんなんだけど。

178 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:koron@tka.att.ne.jp [02/02/18 00:49]
>>177
See :help foldclosed() and its families.

179 名前:177 mailto:sage [02/02/18 00:50]
スレ違いかな? ま、マルチポストは控えときます。

180 名前:177 mailto:sage [02/02/18 00:51]
>>178
うわ、見ずに投稿しちった。スマソ

181 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:sage [02/02/18 01:09]
>>177 天気予報みたいだね

182 名前:177 mailto:sage [02/02/18 01:19]
>>178
改めて、有難うございます。言い訳ですが、作者さんは、foldlevel という
関数はご存知でしたし、ずいぶん長いこと悩んでる様だったので、
てっきり調べ尽くしてるものと思っちゃいました。あと、今yahooのvim-ml
のアーカイブを見たんですが、すでにそこで回答を得られてたようです。
二重に失礼。
# もっとヘルプ読もう。

183 名前:177 mailto:sage [02/02/18 01:21]
>>181
あ、今気付いた。なんか嬉しい。てか、また見ずに投稿(以下略

184 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:sage [02/02/18 01:30]
>>183 (>177)
刑法177条は(以下略)。昔、そういうゲームも(以下略)

185 名前:177 mailto:sage [02/02/18 18:23]
>>184
> 刑法177条は
ガ━━(゚Д゚;)━━ン!せっかく気に入ってたのに…。
# 開き直ってコテハンにでもするか。

186 名前:名無しさん@お腹いっぱい。 [02/02/19 00:11]
Linux版のVIMの日本語判定をどうにかするスクリプト作って〜♥



187 名前:名無しさん@お腹いっぱい。 mailto:sage [02/02/19 00:33]
>>186
「どうにかする」は「無効にする」もしくは「決め打ちする」と
解釈してよろしいでしょうか?

188 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:koron@tka.att.ne.jp [02/02/19 08:56]
>>185(177)
> # 開き直ってコテハンにでもするか。
漢を感じちゃった。カコ(・∀・)イイ!!

>>186
187の言う通り、どうして欲しいのかを具体的にハッキリさせてくれたら書く可能性
が高いです。というよりも、既に書いてある可能性も高いけど。

189 名前:名無しさん@お腹いっぱい。 [02/02/19 22:06]
>>186 >>187
正しく判定するようにして〜♥

190 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:koron@tka.att.ne.jp [02/02/19 23:10]
>>188
私の環境では判定について特に問題はないので、
具体的にどういうときに誤判定するのか教えてくれないと
修正のしようがありません。

またeuc-jpの文がcp932の半角カナ文として認識されてしまうことがあるのは、
それは基本的には仕方のないことでしょう。

191 名前:名無しさん@お腹いっぱい。 [02/02/19 23:17]
Linux版だと確実にcp932とeuc-jpの判定に失敗する。
fileencodingsで先に書いてる方になっちゃう。

192 名前:名無しさん@お腹いっぱい。 mailto:sage [02/02/19 23:47]
テキストの最初の方の行に「焼肉定食」と入れておくと吉かも
漏れはそうしてる(藁

193 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:koron@tka.att.ne.jp [02/02/20 02:14]
>>191
2つおかしい点が。
  1. encをeuc-jpにしている場合にはfencsにeuc-jpを含めるべきではない。
  2. 「確実に」は疑わしい。

「euc-jpのファイルをcp932として誤読することがある」というならば納得します。

194 名前:名無しさん@お腹いっぱい。 [02/02/23 00:46]

             ∩
                 | |
                 | |
                 | |
                 | |
        ∧_∧   | |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       ( ´Д`)/ /  < 先生!忙しいんですか?
      /      /     \________________
     / /|    /
  __| | .|    |
  \   ̄ ̄ ̄ ̄ ̄ ̄ ̄\
  ||\             \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     .||              ||



195 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:sage [02/02/23 03:09]
>>194
25日までは死ねます。

196 名前:名無しさん@お腹いっぱい。 [02/03/02 01:50]
空揚げ



197 名前:オコジョさん mailto:sage [02/03/02 02:32]
ん?カラアゲ?.....どこだ?


198 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/06 02:48]
ほとんど(全部に近い) KoRoN さんのおかげですが、現在行の URL を開くスクリプト。
chalice.vim から、OpenURL と DoExternalCommand を借りてくれば動くのでは?
win では動きました。

"
" 現在行に URL 文字列があるとき、それを取得しOpenURLへ渡す
" URL 文字列がない場合素の <CR> を実行
"
function! s:CheckURL()
 let url = matchstr(getline("."), '\([-#%&+,./0-9:;=?@A-Za-z_~]\+\)')
 if url != ''
  call <SID>OpenURL(url)
 else
  :exe "normal! \<CR>"
 endif
endfunction

"map 定義
nnoremap <silent> <buffer> <CR> :call <SID>CheckURL()<CR>

既にありそうですね。

199 名前:良スレ救済 [02/03/11 00:32]
age

200 名前:名無しさん@お腹いっぱい。 [02/03/16 21:24]
1さん & ヘッポコ訳者さん
降臨希望age

201 名前:名無しさん@お腹いっぱい。 [02/03/21 17:39]
保全age

202 名前:名無しさん@お腹いっぱい。 [02/03/22 00:38]
指定した単語の個数を数える関数ってないですか?
:g/pattern/let n=n+1
だと同じ行にふたつ以上あってもひとつとしか数えないので。

203 名前:Vim6スレからお引っ越し mailto:sage [02/03/23 01:19]
com! Test call <SID>VimTest()

let s:foo = 'foo'

fun! s:VimTest()
python << EOF
from vim import *

foo = eval('s:foo')
print foo

hoge = 'hoge'
buf = '"'+hoge+'"'
command('let s:test='+buf)

command('call s:Show()')

EOF
endfun

fun! s:Show()
    execute 'echo s:test'
endfun

こうすれば、変数を渡せました。
出来たのでまとめとしてここに書いておきます。
KoRoN さんありがとうございました。

204 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:koron@tka.att.ne.jp [02/03/24 13:23]
最近、漫画「ヒカルの碁」の影響を受けて碁を始めたので(苦笑)、碁盤スクリプトを
作ってみました。
  www.kaoriya.net/dist/goban_vim-1.0.tar.bz2
:sourceして:GobanSplitで碁盤ができます。bで黒、wで白、xで石を消せます。誰か
棋譜を作成できるように拡張してみませんか?。

205 名前:名無しさん@お腹いっぱい。 [02/03/31 00:46]
age

206 名前:名無しさん@お腹いっぱい。 mailto:sage [02/03/31 14:46]
>>204
せっかくだから趙治勲を倒せるvim scriptきぼんぬ




207 名前:mattn@Vim%Chalice mailto:sage [02/04/10 09:15]
Calendarちとだけ機能追加...

let g:calendar_erafmt = '平成,-1988'
let g:calendar_mruler =
 \'睦月,如月,弥生,卯月,皐月,水無月'.
 \',文月,葉月,長月,神無月,霜月,師走'
let g:calendar_wruler = '日 月 火 水 木 金 土'



    平成14/4(卯月)
 日 月 火 水 木 金 土
     1  2  3  4  5  6
  7  8  9*10 11 12 13
 14 15 16 17 18 19 20
 21 22 23 24 25 26 27
 28 29 30                

こんな風になります。
これがいっぱい設定できれば

>>114
> これに加えて「平成14年」とか「皇紀2662年」
> とかいう表記ができたらまさにパーフェクト(苦笑)

パーフェクトへ一歩近づけますか?(笑)

208 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:koron@tka.att.ne.jp [02/04/10 13:17]
>>207
let calendar_erafmt = '皇紀,660'
とかやってみました。最高です!

209 名前:名無しさん@お腹いっぱい。 mailto:sage [02/04/10 14:49]
('-`).oO○(ヒジュラ暦。。。

210 名前:名無しさん@お腹いっぱい。 [02/04/11 05:54]
以前ここで紹介されたテトリス、すごい人気になってますね。
vim.sourceforge.net/scripts/script.php?script_id=172

211 名前:名無しさん@お腹いっぱい。 [02/05/01 08:57]
保守上げ

212 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:koron at tka.att.ne.jp [02/05/06 10:01]
ネタ出し。普通の人が考えるいわゆるアウトライン機能。
- outlineMode.vim
    URL: vim.sourceforge.net/scripts/script.php?script_id=287
    必要軟件: ctags
    必要設定: let Flist_Ctags_Cmd = 'ctags' " $PATHが通ってない時はフルパスで指定
    使用方法: Cのソースを開いて<F2>で起動。起動キーはFlist_Keyで設定可能
- funclist.vim
    URL: vim.sourceforge.net/scripts/script.php?script_id=273
    解説: 上記outlineMode.vimのベースになったスクリプトらしい。

213 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/06 11:33]
>>212 outlineMode.vim(・∀・)イイ!
関数の中にカーソルを置いてると勝手にその関数がハイライトされる…。はじめ
てCursorHoldなんてイベントを知りましたよ。

214 名前:名無しさん@お腹いっぱい。 [02/05/08 06:55]
KoRoNさんのAutodate.vimがアップされてる。
autodate.vim : Custumizable auto update time stamp tool
vim.sourceforge.net/scripts/script.php?script_id=291

215 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/08 11:18]
>>214 こっちより高機能だということは明瞭なんだけどね…。
vim.sourceforge.net/scripts/script.php?script_id=259

え、英語を添削させてくれーっ!!

216 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/08 11:21]
>>215
> え、英語を添削させてくれーっ!!
KoRoN氏、確かどっかで英語のドキュメンタリスト募集してたから
more than welcomeと思われ



217 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/08 12:49]
This plugin inserts and updates a time stamp automatically.

Users can specify a format and position of the time stamp by options.
By default, autodate.vim searches a keyword "Last Change: ."
in the first 50 lines of the buffer, and inserts a time stamp. Example:
Last Change: 07-May-2002.

添削に挑戦してみる。(>>215 さんじゃないけど)

誰か英語力のある人が、とくにマルチバイト関連のやり取りで、バリバリドキュメントを
書いてくれるとうれしいかも。

218 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/08 12:52]
追加。
autodate.vim の副題
>Custumizable auto update time stamp tool.
Customizable

219 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/08 13:32]
>>216
ここかな?
pc.2ch.net/test/read.cgi/unix/1019011083/165

220 名前:215 mailto:sage [02/05/08 14:00]
>>217-218 ここでやるのはどうかと。

221 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/08 16:16]
>>220
おっしゃるとおりでした。

222 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:koron at tka.att.ne.jp [02/05/08 20:02]
>>214-221
ありがとうございます。まずは>>217に差し替え、加筆します。続きを行なう場合は
こちらの掲示板を使ってください。
    www.kaoriya.net/bbs/bbs.cgi?article=1586

223 名前:名無しさん@お腹いっぱい。 [02/05/15 15:45]
taglist.vimあげ。>>212 のfunclist.vimに置き換わるものです。ちなみに
outlineMode.vimは引退されたようです。
vim.sourceforge.net/scripts/script.php?script_id=273

224 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/15 16:30]
すばらしい。

225 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/17 11:03]
>>223
これはこれで便利だとは思うけど、ある程度大きいプログラムを扱う時は
そのファイルだけじゃなくて全てのファイルのタグが入ってないとあまり
意味がないような気も…

参照したい関数が編集中のファイル内にあることの方が珍しいので。

226 名前:  mailto:sage [02/05/17 13:15]
>>225 winmanagerに付属のタグ・エクスプローラってのはどう?



227 名前:名無しさん@お腹いっぱい。 [02/05/19 04:35]
Vim-Improved eMACS: Emacs emulation for Vim
vim.sourceforge.net/scripts/script.php?script_id=300
ワラタ

228 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/19 05:20]
Vimacs utility -1 1 Vim-Improved eMACS: Emacs emulation for Vim
emacs.vim color scheme -9 553 Emacs like colors

229 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:sage [02/05/19 11:02]
>>227 いきなりマイナスに点数がつくんですよね(^-^;;;

230 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/19 13:23]
>>227
メーリングリストまであるがな

231 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/24 16:17]
vimacs では <M-x> は使えないんですか?

232 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/26 17:11]
>>231
しらんけど、elisp動いてるわけでもないのに<M-x>使う意味あるのかなあ?
なんなら<M-x>を:にmapするとか

233 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/27 10:31]
>>232
nmap <M-x> :
としてますが、動きません。

234 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/27 10:38]
>>233
nmap <Esc>x :

235 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/27 11:13]
素早いレス thanx です。
emacs のように meta(alt) キーを使っての1ストローク
は使えないということでしょうか?

236 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:sage [02/05/27 11:53]
>>235
完全に把握しているわけではないですが、端末の種類や設定などによって違ってきま
す。経験則ではterm経由だと<M->はEscなんとかにと記述してやる必要があります。



237 名前:mattn@Vim%Chalice mailto:sage [02/05/27 12:09]
>>235
ソースをみましたが、
おそらく、<m-x> がマルチバイト文字のリードバイトと判断されて
いるため、トレイルバイトの入力を要求されているかと思います。
2回入力してませんか?

238 名前:mattn@Vim%Chalice mailto:sage [02/05/27 12:26]
追記・・・
もし開発環境をお持ちならば以下のパッチを試してもらえますか?

*** getchar.c~ Mon May 27 12:23:48 2002
--- getchar.c Mon May 27 12:23:38 2002
***************
*** 1843,1849 ****
    * multi-byte char.  Happens when mapping
    * <M-a> and then changing 'encoding'. */
   if (has_mbyte && MB_BYTE2LEN(c1)
!      > (*mb_ptr2len_check)(mp->m_keys))
       mlen = 0;
  #endif
   /*
--- 1843,1849 ----
    * multi-byte char.  Happens when mapping
    * <M-a> and then changing 'encoding'. */
   if (has_mbyte && MB_BYTE2LEN(c1)
!      > (*mb_ptr2len_check)(mp->m_keys) && mp->m_keylen > 1)
       mlen = 0;
  #endif
   /*

239 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/27 12:42]
>>238
当方、cygwin ですが、vimacs で m-x が使えました V(^_^)V パチパチ

240 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/27 14:05]
>>238
開発環境がないのでリリースされるのを待ちます。m(_ _)m

241 名前:名無しさん@お腹いっぱい。 mailto:sage [02/05/28 00:18]
>>240
されるのか!?

242 名前:mattn@Vim%Chalice mailto:sage [02/05/28 09:52]
>>240,>>241
vim-dev には送ったんですが、bram 氏は今週カンファレンスらしくて
来週以降にみると返事が来てます。
よって来週になって、「ダメ」と言われるかもしれません。(^_^;)
リリースされるのはパッチですので、win32 ならば KoRoN 氏の NetupVim で
更新、それ以外のプラットフォームならば開発環境を用意して頂くことに
なります。

243 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:sage [02/05/29 12:52]
>>242
> リリースされるのはパッチですので、win32 ならば KoRoN 氏の NetupVim で
暫定的にまっつんさんのパッチを取込ませてもらいました。

244 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:sage [02/06/04 17:48]
う〜ん…まっつんさんのパッチあてたんだけど、たとえば
:nmap <M-X> :
がうまく出来ませんね。環境は香り屋版W2Kです。
:help map-multibyte
にあるようにencをlatin1に設定してmapしてみたりもしたんですけど。
う〜ん…なんでだろ?

245 名前:mattn@Vim%Chalice [02/06/04 18:59]
>>244
Alt + Shift + x もしくは
:nmap <M-x> :
で動きませんか?

246 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:sage [02/06/04 19:53]
>>244 あ、動きました。失礼しました。



247 名前:名無しさん@お腹いっぱい。 mailto:sage [02/06/05 19:52]
>>226
超亀レスですみませんが、ありがとうございました。

しかし、これ、ちょっと遅すぎるような。。。(褪

248 名前:名無しさん@お腹いっぱい。 [02/06/07 14:09]
現在分割しているウインドウの数を返す命令って何になりますか?

249 名前:名無しさん@お腹いっぱい。 mailto:sage [02/06/07 14:47]
bufwinnr('$')

250 名前:226 mailto:sage [02/06/07 14:50]
>>247 そうですねぇ。かなり欠点は多いかもしれませんが。逆に改善の余地は大
いにあるかもね。パッチ送ると喜ばれますよ。

>>248 一番ボトムのウィンドウに行って :echo winnr() ぐらいかなぁ。。
>>249 それは違うと思います。

251 名前:名無しさん@お腹いっぱい。 [02/06/08 15:13]
>249
>250
bufwinnr('$')では駄目でしたが、一番下のウィンドウでwinnr()は巧くいきました。
ただし、一番下に行く方法ってありますか?
安直かもしれないけど、ループさせて一番大きかった値が分割ウィンドウの数って
判定も出来るかもしれないけど…。

252 名前:名無しさん@お腹いっぱい。 mailto:sage [02/06/08 19:49]
>>251
Ex command であれば、:wincmd b です。(元に戻るには :wincmd p)
詳しくは :h windows を読みませう。

253 名前:名無しさん@お腹いっぱい。 [02/06/09 01:23]
>252
ありがとうございます。 確認できました!

254 名前:名無しさん@お腹いっぱい。 [02/06/21 19:36]
保守。

255 名前:名無しさん@お腹いっぱい。 mailto:sage [02/06/22 23:21]
自由。

256 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:koron at tka.att.ne.jp [02/07/08 00:02]
高度なテクニックの紹介: コールバックの実装

2つのファイルを作りこのようなコマンドを実行する
:so manager.vim
:so callback.vim
:call DoCallback()

----ファイル: manager.vim
" コールバック関数登録用変数と関数
let s:procs = ''
function! RegistFunc(proc)
  let s:procs = s:procs . a:proc . ';'
endfunction
" ダミーコールバック
function! s:Dummy1()
  echo "Dummy1"
endfunction
" ダミーコールバックを登録
call RegistFunc('s:Dummy1')
" コールバックを実行する関数
function! DoCallback()
  let mx = '^\([^;]\+\);\(.*\)$'
  let procs = s:procs
  while procs != ''
    let proc = substitute(procs, mx, '\1', '')
    let procs = substitute(procs, mx, '\2', '')
    if proc != '' && exists('*'.proc)
      call {proc}()
    endif
  endwhile
endfunction

----ファイル: callback.vim
" スクリプトIDを取得
map <SID>xx <SID>xx
let s:_id = substitute(maparg('<SID>xx'), 'xx$', '', '')
unmap <SID>xx
" コールバック関数
function! s:Proc()
  echo 'callback.vim:Proc()'
endfunction
" コールバック関数を登録
call RegistFunc(s:_id.'Proc')



257 名前:KoRoN@Vim%Chalice ◆ALICEsdk mailto:koron at tka.att.ne.jp [02/07/29 12:11]
VimでAAアニメを作るためのライブラリとサンプルアニメーションを作ってみました。

    ライブラリ: www.kaoriya.net/testdir/animate.vim
    サンプル1: www.kaoriya.net/testdir/gikozuza.vim
    サンプル2: www.kaoriya.net/testdir/moukoneyo.vim

ライブラリとサンプルファイルを同じディレクトリにダウンロードして、Vim上で
    :source gikozuza.vim
    :source moukoneyo.vim
とタイプしてください。なおアニメーションの実行には+clientserverが正しく動作
する環境が必要です。Windows版のgvim,vimおよびLinux + GTKのgvimでは動作確認し
ました。

なにか面白い作品ができたら是非公開してください。スプライト風に実装しているの
でゲームなども作れるかもしれません。

258 名前:名無しさん@お腹いっぱい。 [02/08/14 01:55]
winのみですが、vimからCMAIL WRITERでメール送信。ウマー







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

前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