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

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でメール送信。ウマー


259 名前:KANO_Dai@Vim%Chalice ◆EONKKhcc mailto:age [02/08/16 11:43]
標準プラグイン netrw.vim を使って
    :e ftp://ftp.hoge/hage
とやるとエラーになってしまいました。
    :Nread ftp://ftp.hoge/hage 
だとうまくいくのに。
'verbose' を設定してメッセージを出させ、それに従って netrw.vim を見てみると、
FTPを扱っているところで
    exec "norm! mzoopen " ファイル...
となっています。
"mz" は後の操作のためにマークをつけているんだろうけど、
まず "o" が分かりません。新しい行を開いている?
そして "open" って何でしょう? :open なら obsolete なコマンドだとヘルプにありました。
どなたかお助け。

ちなみに、netrw.vim ではHTTPを持ってくるときにwget.exeを使う仕組みになっていますが、
Chaliceのために手に入れたcurl.exeを使うように手を加えてあります。
それがいけないのかな?しかしFTPにはftp.exeを使うので影響ないはず。



260 名前:あぼーん mailto:あぼーん [あぼーん]
あぼーん

261 名前:名無しさん@お腹いっぱい。 mailto:sage [02/08/16 18:23]
>>259
> "open" って何でしょう?

直接解決にはならないですけど、こういうことをやってるみたいです。

open servername port
username passwd
mode
get remote-filename local-filename

↑のようなコマンド行を生成し、その部分をftpに渡して実行、と。

なぜエラーになるかはちょっとわかんないっす。

262 名前:KANO_Dai@Vim%Chalice ◆EONKKhcc mailto:sage [02/08/17 11:43]
ああ、"open" はFTPのコマンドでしたか。少し分かってきたような気がします。
完全に修正できたら報告します。
少し分かったのは、netrw.vimの

" which the following blots out.  Does Win-NT/98/2000 do the same???
exe "'y-3,'yd"

というところでexeをコメントアウトするとよいことにはすでに気づきました。
何でもWin95のFTPには空行を勝手にくっつける癖があるそうで、
それを消そうとしているのですが、私のWin98のFTPではそんな癖がないのでいらないんです。
でもVimスクリプトではWin95とWin98の区別ができませんから、おかしくなっていました。

263 名前:KANO_Dai@Vim%Chalice ◆EONKKhcc mailto:sage [02/08/22 10:07]
訂正っす。
.vimrc で let netrw_win95ftp = 0 とすると、
上記のコメントアウトは必要ありませんでした。
なんでこういう変数を Options: で説明しないで、
ずっと下の方の Variables: なんて項目に載せておくんだ?

netrw で FTP が使えないのは、BufReadCmd 内で >>261 さんのおっしゃるような
コマンド文字列の生成ができていないためだ、という気がしてきました。
exe "'z+1,.!ftp -i -n" とすることで、
コマンド文字列を ftp.exe をフィルタ扱いにすることで送っているらしいですが、その前に
exe "'z+1,.w c:/windows/temp/cmdtmp"
exe "'z+1,.d"
を付け加えても、空行2行しか保存されません。この辺りが鍵?
こうした後に :r ftp://hoge/hage としたときはちゃんとftp.exeに対するコマンドが
ファイルに保存されるんですよ。こちらでは FileReadCmd を使っているので動作するのかな。

264 名前:名無しさん@お腹いっぱい。 mailto:sage [02/08/28 18:25]
保守さげ

265 名前:KANO_Dai@Vim%Chalice ◆EONKKhcc mailto:age [02/09/17 05:11]
相変わらずわからんちんです。
学校始まって忙しいのであまりハックできない...鬱
Chaliceスレではw3m.vimネタがまた出たみたい。

266 名前:名無しさん@お腹いっぱい。 mailto:sage [02/10/19 04:10]
vimスクリプトなんて書いたことないけど、し、質問があります。
ぼ、僕は正規表現厨房なので、

:% s/hoge11/moge
:% s/hoge2232/moge
:% s/hoge_3_3/moge
   ・
   ・
   ・
と連続して実行するのに、
上の文字列をどっかに記憶させて、それを読み込んで実行するって出来ますか?


267 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [02/10/19 10:39]
>>266
先頭のコロンを削除して

%s/hoge11/moge
%s/hoge2232/moge
%s/hoge_3_3/moge
   ・
   ・
   ・

というテキストを作成しtest.vimとして保存します。
あとは :source test.vim とすれば実行できます。
詳細は :help :source を参照してください。

268 名前:・・・うまく行くかな? mailto:sage [02/10/20 22:20]
>>266
:%s/hoge11/moge^M^[:%s/hoge11/moge^M^[:%s/hoge_3_3/moge^M^[
と書いて、その行の上で、
例えば、
"aY
と入力する。

その後、実行したい時には、
@a
とする。


269 名前:名無しさん@お腹いっぱい。 mailto:sage [02/10/20 22:28]
独り言ですが、
hywr.kuciv.kyoto-u.ac.jp/~shiiba/documents/unix/openmemo.html#3
の説明にあるtable.el重宝しそうなんだけど、今ダウンロードできないです。

こういったスクリプト向けにvimスクリプトは向いていますか?
かなり欲しい機能なので、この際、table.vim書きながら
vimスクリプト勉強してみよっかなー。



270 名前:名無しさん@お腹いっぱい。 mailto:sage [02/10/20 22:48]
ぜんぜん関係無いけど、>>269みたいに今現在アクセスできない所も、
Googleの検索窓にURLを入れて検索すると、キャッシュでは見ることが出来ます。
(キャッシュがあればね)

>>269のは、本人の説明はないが、
+---+----+-----+
| a | g  | hig |
+---+----+-----+
| a | ss |  s |
| b | s  |  i |
+---+----+-----+
こういうのを作るスクリプトのようです。


271 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:koron at tka.att.ne.jp [02/10/20 23:24]
>>269
> こういったスクリプト向けにvimスクリプトは向いていますか?
向いているか向いてないか、という問なら間違いなく向いていません。配列やデータ
構造とかそういう高級な機能は一切ありませんから、ちょっと複雑なことをしようと
すれば作成側の知恵が試されることになります。そこが面白いところではあります。

望みの処理を行なってくれる既成の外部ツールがあるのなら、フィルタとしてそちら
を使うようにしたほうが利口なのは確実です。でもテーブル用スクリプトは既にどこ
かにあったような気もします。

272 名前:269 mailto:sage [02/10/21 00:55]
>>271
>でもテーブル用スクリプトは既にどこかにあったような気もします。
これのことでしょうか?
table.sourceforge.net/



273 名前:269 mailto:sage [02/10/21 00:58]
さっき見つけた。
www.psyc.nott.ac.uk/staff/ritter/papers/dismal/dismal.html
は古いけど高機能。表計算も出来るとか。


274 名前:269 mailto:sage [02/10/21 00:59]
ここはvimだった……
すみません。すれ違いでした。

275 名前:名無しさん@お腹いっぱい。 [02/11/13 21:13]
age

276 名前:名無しさん@お腹いっぱい。 mailto:sage [02/11/19 06:54]
Vim scriptって便利そうですね。
今までキーレコーディングで満足してたから…。

277 名前:名無しさん@お腹いっぱい。 mailto:sage [02/11/24 23:24]
debug.vim : Simple utility to assist in debugging vim scripts
vim.sourceforge.net/script.php?script_id=491

debug.vim 1.0.0
22-Nov-2002
6.0
kam onn siew
Initial upload

278 名前:名無しさん@お腹いっぱい。 mailto:sage [02/11/27 17:25]
>277 便利なの?

279 名前:名無しさん@お腹いっぱい。 [02/12/02 23:20]
vim初心者ですが、vim上でメール見れますか?



280 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/02 23:51]
>>279
スクリプトは色々あるみたい。
入れてみて報告きぼんぬ
vim.sourceforge.net/script_search.php?keywords=mail&script_type=&order_by=rating&direction=descending&search=search

281 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/03 22:24]
Windowsで香り屋gVimを使わせて頂いております。

起動するたびにcolorsディレクトリ以下にあるcolor schemeを
ランダムに呼ぶVimスクリプトを作ろうかと考えています。

質問1)そんなスクリプト、すでにありますか?あるなら、どこにあるか教えて下さい。
質問2)俺には、そんなスクリプトを作るのは無理ですか?
質問3)もしかしてVimスクリプトに乱数って無いんですか?

当方、シロウトに縮れ毛が生えた程度の似非プログラマです。

282 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/03 22:31]
秒数の1桁目を取得して擬似的に乱数をつくればいいんじゃなかろか。

283 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:koron at tka.att.ne.jp [02/12/03 22:37]
>>281
> 質問1)そんなスクリプト、すでにありますか?あるなら、どこにあるか教えて下さい。
vim.sf.netを見る限りなさそうです。

> 質問2)俺には、そんなスクリプトを作るのは無理ですか?
それは自分で決めてください。できないと思ってしまえばどんな些細なことであって
も絶対にできません。逆にできると思えば大概のことはできるものです。あとはやる
かやらないか。

> 質問3)もしかしてVimスクリプトに乱数って無いんですか?
無いです。線形合同法等を使って擬似乱数生成関数を書くなり、もしくは外部ライブ
ラリを利用する必要があります。線形合同法についてはこちらを参照:
    www.ysr.net.it-chiba.ac.jp/data/rand/node5.html

284 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/03 22:44]
ヒントはtetris.vimにあり

285 名前: mailto:sage [02/12/03 22:48]
【中学生?】YAHOO祭り♪【高校生?】
ヤフーの音声チャットでお祭り騒ぎ!
こ、これマジっすか?と耳を疑うような
乱交ぶり!ただいま順番待ち殺到!
あと、3時間待ちか?w
↓↓↓↓↓↓実況スレ↓↓↓↓↓↓↓
choco.2ch.net/test/read.cgi/bobby/1038742045/

286 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/03 22:50]
たまにageると早速↑こういう目にあう。トホホ

287 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [02/12/03 23:01]
(´・ω・`)…ゴメンなさい。

288 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/03 23:22]
>>287
悪いのは>>285ですよぉ、いやだなあ

289 名前:281 mailto:sage [02/12/03 23:39]
>>283
ありがと。

いきなり壁に突き当たってしまった。
let color = "evening"
colorscheme color
→カラースキームcolorが見つかりません

let color = "evening"
echo ":colorscheme " color
→:colorscheme evening(と下に表示されるだけ)

なんかヒント欲しいです・・・



290 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/03 23:57]
>>289
:help :execute なんてどうでしょ。

291 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [02/12/03 23:58]
>>289
let color = "evening"
execute "colorscheme ".color

:help :execute

292 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/04 00:51]
vim.sourceforge.net/tip_view.php?tip_id=358

293 名前:281 mailto:sage [02/12/04 21:26]
>>290-291
ご教授ありがとうございます。
またVimスクリプトを書こうかなって思ったら、
またこのスレに来ますんでよろしくお願いします。

>>292
あらら、あったのね。どうもです。
早速使わせて頂きました。希望通りの動きでとっても幸せです。

294 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/04 21:33]
>>293
おいしいスクリプトが出来たらvim.orgにうpしてね♪

295 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/08 21:22]
現在のバッファの情報を外部アプリケーションに渡すには、一時ファイルを作ってそれを渡す
というのが、Vim スクリプトの作法なのでしょうか?
cvscommand.vimスクリプトってのを見てたら、そう思いました。

296 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [02/12/08 21:26]
>>295
パイプで繋いでどうこうということは残念ながらできないので、
そういう情報が必要ならば一時ファイルを作ることになります。
引数だけで済む場面では勿論引数で済ませます。

297 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [02/12/08 21:34]
>>296
あ、フィルタ使う方法はありますね。前書き込みのパイプ云々は外部コマンドと
動的にインタラクションするということを頭の片隅に置いた上での発言と読んでください。
まぁ、最終的にどれを使うかは個人の裁量です。作法とかそういったものは気にせず、
その時一番efficientだと思えた方法を使うのが吉でしょう。

298 名前:295 mailto:sage [02/12/08 21:35]
いろいろ調べてみましたが、そのようですね。
とりあえず、現行の編集ファイル (バッファではない) に対して、
やりたいことができるようになってから考えます。

299 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/13 23:56]
Printer Dialog : vim onlineより。
vim.sourceforge.net/script.php?script_id=512

このスクリプトのソースコード、むちゃ見やすい。綺麗。
vimスクリプトのコーディング規則とか考えちまった。



300 名前:300 mailto:age [02/12/16 13:04]

300

301 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/19 01:46]
>>225
vim.sourceforge.net/script.php?script_id=483
これいいですよ。

302 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/19 02:04]
>>301
225じゃないけど、土日に試して見る。

303 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/19 17:41]
すれ違いですが
vim.sourceforge.netにあるスクリプトを全部おとすのはどうすればいいですか?
wget 'vim.sourceforge.net/script_download.php?src_id=1423'
とやるとscript_download.php?src_id=1423って名前になります。

304 名前:名無しさん@お腹いっぱい。 mailto:sage [02/12/21 03:01]
sokoban.vimはxsokobanと同じだった。

305 名前:sage [02/12/24 00:59]
vimスクリプトに配列ってありますか?

306 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [02/12/24 01:19]
>>305
配列そのものは無いです。が、ダミーバッファに対してsetline()/getline()を使っ
たり、{}記法を使うことで代用品を仕立てることはできます。後者は次のような感じ
で使います。
    :let index = 2
    :let array_{index} = "some string";
    :let index = 3
    :let array_{index} = "another string";
    :echo array_2
    some string
    :echo array_{index}
    another string
あと、これはVimに閉じないのですがif_perlやif_rubyを使う方法も考えられます。

307 名前:名無しさん@お腹いっぱい。 [02/12/26 00:21]
emacsでいうところの vc-mode のようなことをvimスクリプトで実現した
例はあるのでしょうか。


308 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [02/12/26 00:36]
>>307
> emacsでいうところの vc-mode のようなことをvimスクリプトで実現した
> 例はあるのでしょうか。
emacs使わないのでvc-modeがどんなモノか知らないのですが、
例えばこんなのでしょうか?
    www.vim.org/script.php?script_id=90

309 名前:307 mailto:sage [02/12/26 11:31]
>>308
searchの使い方が分かりました :)
どちらかというと欲しいのはRCSに対するものです。emacsのものだと、

- RCSのファイルが転がっていると自動的にRCSモードの表示に
- C-x C-q で write-protectedを解除 → co -l foo
- 修正後 c-x c-q で write-protectedに → commitメッセージを聞いてきて
  C-c C-c で ci -u -m"メッセージ" foo

てなことをやってくれるようなんです。
vimで
- ファイルオープン時に実行されるフック
- set readonly状態の時に何かバッファを修正したら実行されるフック
- set readonly状態を変更したら実行されるフック

があればなんとかできそうかなと思います。




310 名前: [02/12/30 00:17]
HTML で困るものをエスケープするスクリプトを書いたんですが、
範囲選択の後に :'<,'>call HtmlEscape と入力しなければならないです。
そうじゃなくて、:'<,'>HtmlEscape にするにはどうすればいいの?
# command あたりがあやしかったがわからなかった...

if exists("loaded_html_escape")
finish
endif
let loaded_html_escape = 1
function HtmlEscape() range
let index = a:firstline
while index <= a:lastline
let line = getline(index)
let line = substitute(line, "&", "\\&", "g")
let line = substitute(line, "<", "\\<", "g")
let line = substitute(line, ">", "\\>", "g")
call setline(index, line)
let index = index + 1
endwhile
endfunction

311 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:koron at tka.att.ne.jp [02/12/30 00:44]
>>310
:command! -range HtmlEscape <line1>,<line2>call HtmlEscape()
多分こんな感じです。
:help E177

312 名前: [02/12/30 01:55]
E177 のヘルプ見たのにー!
そうか。 <line1>と<line2>はそうやって使えばいいのか。

これで年が越せます。ありがとう!>KoRoN 氏

313 名前:301 mailto:sage [03/01/01 16:59]
>>301>>226氏の言うwimmanagerに付属のやつでしたか。すみませぬ。

314 名前:226 mailto:sage [03/01/03 16:06]
別もんですよん

315 名前:名無しさん@お腹いっぱい。 [03/01/05 15:23]
なかなか便利だ。

A vim plugin for browsing tarfiles
vim.sourceforge.net/script.php?script_id=522

316 名前:名無しさん@お腹いっぱい。 mailto:sage [03/01/06 07:57]
>>315
そういえばデフォルトでgzip.vimってのがはいってるね。

317 名前:名無しさん@お腹いっぱい。 mailto:sage [03/01/07 02:02]
vim素人の私は最近、zcatってコマンドライン覚えたよ。
こういうのがエディタ上から、呼び出せるのはvimのいいところね。

318 名前:名無しさん@お腹いっぱい。 mailto:sage [03/01/07 22:39]
vim.sourceforge.net/script.php?script_id=52
calendar.vim 1.3o 06-Jan-2003

otu-

319 名前:山崎渉 mailto:(^^)sage [03/01/15 13:02]
(^^)



320 名前:名無しさん@お腹いっぱい。 mailto:sage [03/01/17 14:19]
alias Info="vim -c 'source hoge/info.vim|Info'"
便利です

321 名前:名無しさん@お腹いっぱい。 mailto:sage [03/01/26 07:03]
激しく禿同

322 名前:名無しさん@お腹いっぱい。 mailto:sage [03/01/26 13:23]
最近スクリプトを覚えようと思って、この板にやってきました。
mattnさんの >>128 を試しているんですが、
      silent argdo! rewind
のラインを
      silent argdo! rewind!
にしないとE37が出たり gvim ~/vimrc が開けず、でもrewind!にすると
after/ftplugin/ 以下が読みこまれないという症状に悩まされています。
上記スクリプトを.vimrcのどの位置で定義するのかにも関係するんですかね?

:h rewind しても良くわからなかったのでカキコしてみました。

323 名前:322 mailto:sage [03/01/27 01:57]
自己レス。
cyg-wrapper.shでウマー 
    hermitte.free.fr/cygwin
でした。

324 名前:名無しさん@お腹いっぱい。 mailto:sage [03/01/29 06:57]
KaoriYa タンのは FreeBSD PORTS には入らんの?

325 名前:324 mailto:sage [03/01/29 06:59]
微妙に誤爆。スマソ

326 名前:名無しさん@お腹いっぱい。 [03/02/10 00:32]
file(*.vim)はどこに置くの?


327 名前:名無しさん@お腹いっぱい。 mailto:sage [03/02/10 00:38]
>>326
OSによって違う。UNIXっぽいシステムだったら、
~/.vim/plugin/
あたり。システムグローバルは :echo $VIMRUNTIME あたりに。

328 名前:名無しさん@お腹いっぱい。 [03/02/10 00:42]
linuxだけど、好きなところには置けないですか?


329 名前:名無しさん@お腹いっぱい。 mailto:sage [03/02/10 00:47]
>>328
.vimrcでその「好きな所」を
set runtimepath+=好きな所
すれば好きな所に置けるけど、~/.vim/plugin で問題ある?



330 名前:329 mailto:sage [03/02/10 00:48]
嘘。runtimepath+=hoge だったら、hoge/plugin/ だな。

331 名前:名無しさん@Vim%Chalice mailto:sage [03/02/10 04:12]
正規表現で制御文字そのものを表すatomって無いんでしょうか?
<Esc>, <Tab>, <CR>, <BS>は既に存在する(\e, \t, \r, \b)んですが、
^Jなどは表現できないですよねぇ…?

例えば、レジスタaに入ってる文字列から<Ctrl-J>を削除しようとした時に
   substitute(@a, '^@', '', 'g')
のように、関数内で<Ctrl-V><Ctrl-J>して直接char codeを入れちゃうと
実行時にエラーになってしまうので…
# ^@の部分が<Ctrl-V><Ctrl-J>です。
# ^@は改行を意味するのでsubstitute()の呼び出しが無効になります。
<Ctrl-V><Ctrl-J>の代わりに\rや[:cntrl:]で置換しようとしてもできませんでした。

文字を直接ascii codeで指定できたりすると良いんですけどね…
\0x0a (← ctrl-J)みたいな感じで (\0x61なら'a'になるみたいな)

332 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/02/10 04:44]
>>331
Chalice内のplugin/alice.vimにあるAL_firstline()とかが参考になるかもしれませ
ん。レジスタ内の改行記号^Jには"\<NL>"が対応します。このあたりはVimが文字列を
どのように扱っているかを知っていれば至極当然なのですが、知らないとかなりメン
ドイので以下のように慣用句として覚えてしまうのが良いでしょう。
   substitute(@a, "\<NL>", '', 'g')

333 名前:名無しさん@Vim%Chalice mailto:sage [03/02/11 03:03]
331です。

>>332
KoRoNさん、解説どうもありがとうございました。

とりあえず納得はしたのですが、"至極当然"とか言われちゃうと
どうしても文字列をどのように扱ってるかが気になってしもたので、
vimのsource codeを見てみましたが、漏れには解析追いつかずでした… (´Д⊂グスン

しかし!
trans_special()が定義されているmisc2.c内で偶然<Char->の存在を知り、
   :help <Char->
を見ると、なんと!ロトのつるぎを見つけた! …じゃなくて、
漏れが >>331
> > 文字を直接ascii codeで指定できたりすると良いんですけどね…
> > \0x0a (← ctrl-J)みたいな感じで (\0x61なら'a'になるみたいな)
と言っていた機能が既に有るではないですかぁ!

てことで、
   substitute(@a, "\<Char-0x0a>", '', 'g')
と書いても
>   substitute(@a, "\<NL>", '', 'g')
これと同じ動作になることが確認できますた。 ヽ(´▽`)ノ

<Char->は元々multi-byteを扱うのに便利な機能として用意されていたらしいですが、
これなら\e, \t, \r, \b以外の制御文字も(知ってればですが)扱えますね。
あまり綺麗じゃありませんし、素人にはお勧めできない諸刃の剣かもしれませんが…
# もしかして反則技ですか?

あ! ASCIIじゃなくてEBCDICの時に使えないですね…
# 早くもダメケースをハケーンしてしまった…  ΣΣ(゚д゚lll)ガーン!!

334 名前:331@Vim%Chalice mailto:sage [03/02/11 03:05]
もっかい331です。

>>332
ついでに…
余談ですがregexp.cのbackslash_trans()で
\r, \t, \e, \b の振る舞いが書かれてますね。
あくまで仮の話になりますが、
   static char_u REGEXP_ABBR[] = "nrtebj";
というように、jを加えて
   case 'j':   return NL;
のようなcaseを1個追加するだけで、正規表現として
   \j が <NL> にマッチする
といった動作になったりするんですかね…?
# 考えが浅はかかな?…


んー。なんかスレ違いになってきちゃったかな? ^^;
これぢゃVim6ソースコードお勉強スレですな(w

335 名前:名無しさん@お腹いっぱい。 [03/02/20 19:42]
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
vimrc_exampleのこの部分ですが、2行目と3行目の最後の|はなんですか?
それと g`\"のgはなんのためにあるのですか?

336 名前:名無しさん@お腹いっぱい。 mailto:sage [03/02/20 19:47]
| はコマンドの連結
g を前置するのはジャンプリストを変更しないようにジャンプする

337 名前:335 mailto:sage [03/02/20 20:26]
>>336
autocmdだから1行にする必要があるのですね。
gの方は:h g'にありましたね。ありがとうございます。

338 名前:名無しさん@お腹いっぱい。 mailto:sage [03/02/22 10:53]
vim.sourceforge.net/scripts/script.php?script_id=575
gnu-c : A filetype plugin to encourage the GNU C style.

これっていままでup されていなかったけど、多くのひとが自分用に作っていそう。

339 名前:名無しさん@お腹いっぱい。 mailto:sage [03/02/27 11:13]
>>337
1行にするのは行頭の '\' の働き.
'|' は,本来autocmdで実行するのは単一のコマンドだから,
複数のコマンドを実行するために連結が必要になっているということ.



340 名前:名無しさん@お腹いっぱい。 mailto:sage [03/03/01 02:34]
質問があります。
vimのevalはかなり高機能なので、スクリプトインタプリタとして
使用してみようと思い、いろいろ試行錯誤してみたのですが、
そもそも、echoが標準出力に出力できないです。
どうすればできるのでしょうか?

341 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/03/01 02:46]
多分標準出力には出せないと思われます。
一時ファイルを使うのが良いでしょう。






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

前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