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

397 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/18 01:28]
>>395
ご苦労様です。
早速試してみたところ、なんかエラーが出ましたが翻訳出来ました。

出てきたエラーはこんな奴:
E177: 未知の関数 AL_echo
33 call AL_echo('Translating...', 'WarningMsg')

良く分からなかったのでコメントアウトしちゃいました。

多分、うちの設定が悪いかなんかのせいだと思うのですが、
一応使ってる奴のバージョンをご報告しておきます。
香り屋版 Windows用y gvim V6.1
適用済みパッチ: 1-474

398 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/18 01:46]
>>397
chaliceに同梱されてるalice.vimが無い模様。
  www.kaoriya.net/dist/chalice-1.8.019.tar.bz2
これを取ってきなされ。

chaliceがインスコされてないということはcurlとかも無さそうだな。
  www.kaoriya.net/dist/curl-7.10.4-win32-ssl.tar.bz2
たぶんこれも取ってくることになるだろう。

399 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/18 02:05]
>>398 訳が出てくるということはcurlは入っていると思われ

400 名前:397 mailto:sage [03/06/18 02:07]
>>398
ありがとうございます。
ご指摘通り、chaliceのバージョンが古いせいでした。
v1.7を使用していたのですが、
v1.8に上げたところ、エラーが出なくなりました。

お騒がせ致しました。

いや、それにしても、このプラグインは便利ですね。
感謝感謝です。

401 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/18 17:25]
calendar.vim : Calendar
calendar.vim 1.3t 2003-06-17
vim.sourceforge.net/scripts/script.php?script_id=52
更新されてます。

402 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/20 12:35]
VimTweak : The tweaking dll for GVim.exe.
vim.sourceforge.net/scripts/script.php?script_id=687
Initial upload
またまた、「まっつん」さんです。

403 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:koron at tka.att.ne.jp [03/06/20 12:56]
前からtweakが公開されれば、KaoriYa版からキャプション機能を削除しても良いかなぁって考えていたんです。
でもtweakでキャプションを消すとテキストエリアのウィンドウがズレることが発覚。どうしよ。

404 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/20 22:38]
ウィンドウがズレるのは、ちょっとやだなぁ。
てか、キャプションってなんですか?
Windows版で、透明度がうんたらっちゅーやつですか?

405 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/06/20 23:00]
>>404
Windowsではタイトルバーというのが分かりやすいでしょうか?。
香り屋版を使っているならば :set guioptions+=C してみれば一発でわかります。
なお戻すには :set guioptions-=C



406 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/21 22:18]
.gvimrcに、

syntax match Trailing "\s\+$"
highlight link Trailing Error

と書いたのですが、うまく反映されません。
なんかfiletypeとかsyntaxかがないときだけうまくいく感じです。

いつでも反映されるようにしたいのですが、
どこが間違っているんでしょうか。

407 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/06/21 22:45]
>>406
Vimの基本的な動作に対する理解が足りない、のが原因です。syntaxはその型のファ
イルを開いた際に毎回設定され、その設定開始前に必ず:syntax resetかそれ相当の
処理が行なわれています。そのため起動時に1度だけ実行される.gvimrcの設定はその
時点で上書されてしまい、効力を発揮することはありません。

そんなわけなのでsyntaxの設定が終わった後に、それらの設定が追加されるように
autocmdにSyntax等々を組み合わせてみるのが良いでしょう。以下はその例です。た
ぶんこのままでは思い通りに動かないので適当に修正してみてください。

function! s:TrailingError()
  syntax match Trailing "\s\+$"
  highlight link Trailing Error
endfunction
autocmd Syntax * call s:TrailingError()

408 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/21 23:30]
まぁそういうおまいも vi に対する理解があるとはとても
おもえんのだが。いいかげんやめたら?

409 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/21 23:42]
タイミングだからゆうぞ。はっきりあんた臭い。コードの占有意識高すぎ。
やることがいちいち SHIFT-JIS 臭い。 architecutre dependentily.
抱える人間としては最悪に近い。

あんたが vim を手放せば一年の停滞はあってもトータルでみな
幸せになると思う。そうおもったことはない?

410 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/22 00:08]
>>408
>>409
まぁまぁ、vimに貢献しているのは間違いないんだから。
ただ、KoRoNさんもこのスレだけじゃないんだけど、発言にトゲ
があることを自覚してないんだろうな。

411 名前:404 mailto:sage [03/06/22 00:09]
>>405
タイトルバー 消えたーー
なるほど、よう分かりました。
これで更に1行多く表示できる。 新たな発見だわぁ…

412 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/22 21:21]
KoRoN氏は別に嘘ついたりはしてないだろ。
時々ずばっと言った真実に、自分が痛いヤツだって
ことを指摘されたくせに、それを認めたくない厨ども
には嫌な人に見えるかもしれんが、それだけのこと。

現実を見ずに出る杭を打ちたいだけの馬鹿は氏んでいいよ。

413 名前:410 mailto:sage [03/06/23 01:48]
>>412
自分より頭のいい人間に、「おまえ馬鹿だな」と言われて
その人間をやな奴と思うのは普通だと思うが。
そのやりとりを聞いている周りの人間もイヤな気分になるのも
普通だと思うが。
そもそも、たかが掲示板で人を否定する必要はないはずだが。
いや、匿名の掲示板だからこそ否定することができるのか。
ここは、厨房お断りのスレなのか?
だったら、「vim用のくだ質」みたいなものを作らなきゃダメかな。

まぁ、そういう感情を理解せずに、論理的に肯定しようとする
お前こそいい人ぶろうとしているだけだろう。
自分ができるから当然ほかの奴もできるだろみたいに思っている
奴ほど最低なものはないからな。

414 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/23 01:50]
>>413
ちょっとやめて頂けませんか。見苦しい。

415 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/23 02:56]
>>413
どこが間違ってるか聞いたら、間違ってる箇所を指摘してくれただけでしょ。
言い方が気にくわない人がいるのはわかるけど、気にくわなくない人まで
否定する姿勢は見苦しいよ。

> そもそも、たかが掲示板で人を否定する必要はないはずだが。
そうですねぇ、本当に。



416 名前:名無しさん@お腹いっぱい。 [03/06/24 01:25]
>>408
なぜにvi?
KoRoNさんは、viに対する理解といってないが。。

417 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/27 18:29]
保存してないバッファでZoomWinを使うと、
バッファが/tmp/v012345/0になってしまう。

418 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/27 20:42]
VimSpeak : Speak selected text with MS Agent
vim.sourceforge.net/scripts/script.php?script_id=692
また新しいのが登録されました。

419 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/28 02:22]
>>407
もう一つ
応用的な(略
があれば原因は100%特定出来そうだなw

420 名前:名無しさん@Vim%Chalice mailto:sage [03/07/07 22:08]
同じキーに2つ以上mappingされている時に
片方だけをunmapすることは出来ますか?

421 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/07/07 22:16]
>>420
何を聞きたいのかイマイチわからないので想像で答えます。
:map <C-D> somestring1
:map <C-D> somestring2
このように続けて登録した時は後者が優先されるので、そもそも同じキーにマップす
るという概念が成り立ちません。次に
:map <C-D>1 somestring1
:map <C-D>2 somestring2
とした時には、これは別のマッピングとして登録されるのでそれぞれ
:unmap <C-D>1
:unmap <C-D>2
で別々に解除できます。但し「<C-D>で始まるマッピング全てを解除する」という方
法はちょっと思いつきません。

422 名前:420 mailto:sage [03/07/08 00:05]
>>421
分かりにくくてすいません。
ちゃんと具体例を書けば良かったですね。

<buffer> 有りでmappingされているものと、
<buffer> 無しで登録されているものの2つがダブって見えてただけでした。

例えば、
  nnoremap <C-N> somestring1
  nnoremap <buffer> <C-N> somestring2
の違いでした。ここで:nmapをすると、
    n <C-N> * :somestring1
    n <C-N> *@:somestring2
となります。@はbuffer localの印ですよね。

やりたいことは「どちらか片方を指定してunmapしたい」ということなのですが、
ヘルプを読んでunmapにも<buffer>を指定できることが分かりました。

<buffer>付きでmapしたら<buffer>付きでunmap、
そうでなければ<buffer>を付けずにunmapということで落ち着きました。

というわけで結局、自己解決しました。お騒がせしました。

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

424 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/26 00:24]
vim-scriptでTimer(event)は無いのでしょうか?
無い場合、何か代替案はありますか?

425 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/07/26 00:28]
>>424
:help CursorHold
くらいでしょうか。単にウェイトさせるだけなら
:help :sleep
を参照してください。



426 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/26 01:14]
>>425
ありがとうございます。
どちらも知っている内容でした。

ということは定期的にTimerEventを発生させる方法は無いのですね...
perlなどのI/Fを使うしかないのかな?

427 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/07/26 10:41]
>>426
いや、それも無理です。if_perl主導で何かコトを起こすことができないんです。Perl
のスレッドを回してVIM::DoCommand使うとか、出来なくは無いんですがいろいろ不具合
があります。また私が直接確認したわけではありませんが、純粋にPerlスレッドとVim
の相性の問題も最近報告されました。

あとは外部プロセスからvim --remote-*を定期的に起動する、という方法も考えられま
すけど、これだと頻度の問題があるでしょう。

なんにしても用途に応じて別の解決法を模索した方が良いかもしれません。ユーザの操
作に割込んで、タイマーを含む何らかのイベントを起こすということはできません。そ
のようなことをしたければ半無限ループ内でgetchar()を使って、完全に入力をコント
ロールするしかないでしょう。

428 名前:名無しさん@お腹いっぱい。 mailto:sage [03/07/26 11:01]
>>427
> if_perl主導で何かコトを起こすことができないんです。
そうだったんですか...

> Perlのスレッドを回してVIM::DoCommand使うとか、出来なくは無いんですがいろいろ不具合
> があります。また私が直接確認したわけではありませんが、純粋にPerlスレッドとVim
> の相性の問題も最近報告されました。
ちなみにどのような不具合/相性問題なんでしょうか?

> ユーザの操作に割込んで、タイマーを含む何らかのイベントを起こすということはできません。
なるほど勉強になります。

> そのようなことをしたければ半無限ループ内でgetchar()を使って、完全に入力をコント
> ロールするしかないでしょう。
残念ながらキー入力等を受け取った時にしかできそうにないんですね。
放っておいても定期的にEventが来る。ということはできないのか...

429 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/07/26 11:12]
>>428
> ちなみにどのような不具合/相性問題なんでしょうか?
完全に再現条件を把握してないのですが、私が試した際にはVimを巻き込んでロック
したり落ちたりしました。

> 残念ながらキー入力等を受け取った時にしかできそうにないんですね。
getchar(0)とかすれば、キーが無くても即帰ってきます。

> 放っておいても定期的にEventが来る。ということはできないのか...
それができないからIRC on Vimとか諦めました。

430 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/08/01 20:24]
Headline更新しました。
www.kaoriya.net/testdir/headline-20030801.tar.bz2

431 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/01 21:23]
>>430
取扱説明書イイ!

432 名前:331 mailto:sage [03/08/01 22:00]
>>348
s/330/331/

まぁ、それはともかく。
別にどこにばれようと問題なしです。
でなきゃURL晒さないですってば。

433 名前:331 mailto:sage [03/08/01 22:00]
>>432
誤爆。スマソ

434 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/08/01 23:57]
>>431 取扱説明書、というより各ヘッドラインの寸評ですね。

私はZDNetとAsahiとYomiuriにZDNet、それにSlashdotJapanを主に見てます。

435 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/02 18:31]
plugin/headline/1101com.vim~
チルダがついてますが。



436 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/08/02 20:43]
作ろうかなぁと考えて、結局止めたからです。

437 名前:名無しさん@お腹いっぱい。 [03/08/06 14:08]
現在編集中のバッファ(ファイル)が未保存かどうかを
取得する関数などはありませんか??

438 名前:名無しさん@Vim%Chalice mailto:sage [03/08/06 14:12]
getbufvar()

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

440 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/06 14:34]
:echo &modified

441 名前:437 [03/08/06 14:58]
&modifiedで状態を取得することが出来ました。
どうもありがとうございました。

442 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/08/07 20:42]
某スレで「foldはアウトラインとしては使いにくい」という至極納得な意見が出され
ていたので、なんとかしてみるスクリプトを書いてみました。
    www.kaoriya.net/testdir/folddigest.vim
foldが有効になっているテキストバッファで :call FoldDigest() を実行すると、
foldのダイジェストツリーが表示された新バッファができます。そのバッファの方で
注目したい項目の行で<CR>すると、テキストバッファの該当箇所へカーソルが飛びま
す。これで少し使いやすくなるでしょうか?。

443 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/08 00:04]
>>442
某スレから参りました。
はぁ、便利。

あのスレの影響で使い始めたんですけど良いエディタですね。
使っていて気持ちが良いというか、リズムがあるというか。
スクリプトはだいぶ先になると思いますがちょこちょこ勉強していこうと思います。

444 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/08/08 00:19]
>>443
動くようになったばかりなのでα版と考えてください。自動かそれに順ずる方法で
call FoldDigest()する仕組みとか、行がズレた時の処理とか、ウィンドウの取り回
しとか考えていますんで、もうちょっと使えるものになるでしょう。

ま、Vimに限りませんがイッペンにイロイロ覚えようとはせず、その時に必要なもの
を必要なだけ覚えていくのが良いんじゃないでしょうか。

445 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/08/08 23:31]
folddigest.vimをアップデートしました。
    www.kaoriya.net/testdir/folddigest.vim
使い方は>>442と一緒ですが…

> 行がズレた時の処理
主にコレについて修正しました。
    :let folddigest_options = "quickfix"
とすることで+quickfixを利用し、編集してズレたり消えたりしてもちゃんと飛べる
ようになります。ただし:makeや:grepと併用できなくなるので注意してください。

    :let folddigest_options = "flexnumwidth"
とすると、行番号の桁数が必要最小限になるので画面幅が狭いときには有効です。

オプションはカンマで接続して複数指定することができます。例:
    :let folddigest_options = "quickfix,flexnumwidth"
この場合、行番号は一切表示されません。スッキリです。



446 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/11 05:51]
>>418
うまく動かなかった・・
喋る前に消えたな・・


447 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/13 13:05]
>>412
ずばっと言った真実て…(激藁

448 名前:名無しさん@お腹いっぱい。 mailto:sage [03/08/14 09:07]
>>445
vim.sf.netではVim versionが6.0になっていましたが、6.1で試したらgetregがな
いとエラーが出ました。
vim.sourceforge.net/scripts/download_script.php?src_id=2230

449 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/08/14 09:15]
>>448
ありがとうございます。descriptionに追記しておきました。vim.orgに登録する時に
は5.0か6.0しか選べません。そのため6.2でも6.0としか表示できないのです。

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

451 名前:名無しさん@お腹いっぱい。 [03/09/16 19:42]
Vine Linuxでgvim(日本語版)を使っていますが、
起動時に検索など全ての文字入力が日本語になっており、
いちいち日本語をオフにしなくてはいけません。

初期設定は日本語(IME)をオフにする方法をどなたか御存じでしょうか?

452 名前:名無しさん@お腹いっぱい。 mailto:sage [03/09/16 20:08]
>>451
h 'imi'
h 'ims'
スレ違い。
pc.2ch.net/test/read.cgi/unix/1058706125/

453 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/05 05:25]
昔は、は〜 むずかしそ〜だね〜と見ていたが、
今日からちょっとやってみた。
役に立ちそうな関数って何気にたくさんあるのね。

454 名前:名無しさん@お腹いっぱい。 [03/10/12 02:12]
すみません、前スレでfoldexprの連番処理についてカキコされたかたいらっしゃいますでしょうか?
もう一度functionを書いてくれるとありがたいのですが・・・。

1
1.1
1.1.1
2
2.2
2.2.2

みたいなのを
function! MyFoldFunc()
 let line = getline(v:lnum)
  if line =~ '\m^\s*[1234567890]'
   return '>1'
  elseif line =~ '\m^\s*[1-9]'
   return '>2'
  elseif line =~ '\m^\s*■'
   return '>3'
  else
   return '='
  endif
endfunction
set foldmethod=expr foldexpr=MyFoldFunc()

で処理したい!

455 名前:名無しさん@Vim%Chalice mailto:sage [03/10/12 11:50]
>>454
そのスクリプトが書き込まれたのはVim6スレのPart5ですね。書かれたのはまっつんさんですが、
    www.kaoriya.net/testdir/orderedlist_fold.vim
ココにコピーを置いておきました。細かいところはご自分で修正してください。



456 名前:名無しさん@Vim%Chalice ◆8XALICEsdk mailto:sage [03/10/12 11:51]
>>455 間違えて名無しさん+トリップ無しで書き込んでしまいました。

457 名前:名無しさん@お腹いっぱい。 [03/10/12 12:17]
>>455
ありがとうございます。

何度も甘えてすみませんが、連番が入ったテストテキストファイルをvimでオープンしてもfoldされません。
何か呪文があるのでしょうか?

458 名前:名無しさん@お腹いっぱい。 [03/10/12 12:26]
>>457
すみません、できました。逝ってきます。。

459 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/10/12 12:26]
>>457
オープンした後に :source orderedlist_fold.vim してもダメですか?

460 名前:名無しさん@お腹いっぱい。 [03/10/12 16:43]
>>459
あ、いえ、出来ました。とってもいい具合です。
ありがとうございます。今まで楽してきましたが、徐々にVimスクリプト勉強してみたいと思います。
ところで、このfoldはtaglistみたいに、vsplitしたwindowに表示とかはできないのでしょうか?

461 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/10/13 00:50]
>>460 >>442を参照してください。

462 名前:名無しさん@お腹いっぱい。 [03/10/13 11:17]
>>461
あ、どもです。
ところで、>>455のfoldexpr=の後には、複数の関数つけても駄目でしょうか?


463 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/10/13 13:56]
>>462 ダメです。

464 名前:名無しさん@お腹いっぱい。 [03/10/13 16:11]

すみません。>>454を質問したものですが、
以下のように、連番の下にさらに■が先頭にあったら、カレントの階層から一つもぐるようにするにはどうすればいいでしょうか。。
どうか初心者にお恵みを(-人-)。。


1. 折り畳み1
これは折り畳み1のテキスト

これは折り畳み1■のテキスト
2. 折り畳み2
これは折り畳み2のテキスト
2.1. 折り畳み2.1
これは折り畳み2.1のテキスト
これは折り畳み2.1のテキスト

これは折り畳み2.1■のテキスト
2.1.1. 折り畳み2.1.1
これは折り畳み2.1.1のテキスト
これは折り畳み2.1.1のテキスト

これは折り畳み2.1.1■のテキスト
2.1.2. 折り畳み2.1.2


465 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/18 11:15]
>>464
(´・ω・`) ショボーン



466 名前:名無しさん@Vim%Chalice [03/10/19 23:52]
script内で/やGでジャンプしてもjumplistに
履歴が残らないようにする方法ってあるのでしょうか?

scriptユーザが<C-I><C-O>でびっくりしないようにしたいのです。
できれば:Explorerがjumplistを汚さないように修正したいな〜と思いまして。

よろしくおながいします

467 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/10/20 00:13]
>>466
> script内で/やGでジャンプしてもjumplistに
/の代わりにsearch()、Gの代わりにexecute linenum使ってみてください。

468 名前:466@Vim%Chalice [03/10/20 00:25]
>>467 おお!早速のお返事ありがとうございます。

あと、もとの場所に戻りたいときhjklで何とかしようと思って↓みたいにしてます。
気分はma, `aなんですが。。。
もっとうまい方法は無いでしょうか?

function! s:Mark() "{{{2        jumplistを汚さないMark&Jump
    return s:Cons(line('.'), col('.'))
endfunction

function! s:Jump(marker) "{{{2  jumplistを汚さないMark&Jump
    let l:ml = s:Car(a:marker)
    let l:mc = s:Car(Cdr(a:marker))
    let l:cl = line('.')
    if l:ml < l:cl
        let l:vmotion = (l:cl - l:ml) . 'k'
    elseif
        let l:vmotion = (l:ml - l:cl) . 'j'
    else
        let l:vmotion = ''
    end
    exe 'norm 0' . l:vmotion . (l:mc-1) . 'l'
endfunction

469 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/10/20 00:56]
>>468 :help cursor()

470 名前:パパパッチ466@Vim%Chalice mailto:sage [03/10/20 01:19]
>>467 おおおお!またまたお返事ありがとうございます。一行になりますた。

    function! s:Jump(marker) "{{{2  jumplistを汚さないMark&Jump
        call cursor(s:Car(a:marker), s:Car(Cdr(a:marker)))
    endfunction

てゆーか、漏れの真の要求が分かりますた。
scriptの副作用をユーザに与えたくないのです。
具体的には、こいつらを一発で退避・復帰したいな〜と思ってるのです。
    :registers
    :jumps
    :marks
    undobuffer
undolevels=-1だとバッファが丸ごと消えちゃうから厳しいです。
:reと:marksはスクリプトで出来そうだけど、:juとundobufferは
VIM本体に機能を追加するしかないのかな。。。
:juやundobufferについては
    call これよりundobufferに追加しない()
    "バッファを編集
    call これよりundobufferに追加する()
みたいな機能でも充分なんだけど。
「よ〜し、パパパッチ当てちゃうぞー」とか思う人、居ません?
ちなみに、漏れは「よ〜し、パパC開発環境作っちゃうぞー」レベルだす。

#質問乱発で失礼しました >KoRoNさん

471 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/10/24 11:45]
>>470
> scriptの副作用をユーザに与えたくないのです。
Chaliceとかイロイロ作っている経験から言いますと…「独立したアプリケーション」
じゃなくて「エディタのスクリプト」なんですから、そういうことに神経使う手間と時
間で別の仕事に取り掛かったほうが良いでしょう。

472 名前:名無しさん@Vim%Chalice [03/10/31 01:02]
class ●● {
    ...

};
をfoldingしたい。
何か良い方法はありますか?

以下試したこと

fdm=markerは正規表現使えなさそうだし,
# class定義毎に予め {{{ }}} で囲んであればいいけどそんなのはまず有り得ないので
fdm=exprはregion指定ができない?(できるのか?)

fdm=syntax で syntax region start="^class" end="^};" しようとしたら
$VIMRUNTIME/syntax/cpp.vim の keyword cppStructure に含まれる"class"の方が優先度高くて
region の方で class が引っかかってくれなかった

cppStructure を clear するか、clear 後にcontains付きで再定義すればOKだったが…
# containedの場合は、region側で contains=cppStructure が必要

うーむ。一筋縄で行きそうにない…
foldtextとか使えば出来るのかなぁ?(使ったことないから分からない…)

473 名前:472@Vim%Chalice mailto:sage [03/10/31 01:03]
× clear 後にcontains付き
○ clear 後にcontained付き

474 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/31 08:16]
おれはそういうのはexprでやった。
www.vim.org/tips/tip.php?tip_id=523
setl foldexpr=FoldBrace()      
setl foldmethod=expr              
function! FoldBrace()          
    if getline(v:lnum) =~ '^class .*{$
    return '>1'                    
    endif                            
    if getline(v:lnum) =~ '^};$'      
    return '<1'                    
    endif                            
    return foldlevel(v:lnum-1)      
endfunction                        
~                                  

475 名前:名無しさん@お腹いっぱい。 [03/10/31 20:24]
検索をすると、次に起動したときに、その検索語が色づけされます。
これをキャンセルする、または色づけしないようにするにはどうしたらいいですか?



476 名前:名無しさん@お腹いっぱい。 mailto:sage [03/10/31 20:47]
>>475
pc.2ch.net/test/read.cgi/unix/1058706125/531-533
スレ違い?

477 名前:475 mailto:sage [03/10/31 22:25]
>>476
アリガトン

478 名前:472 mailto:sage [03/10/31 23:37]
>>474
d!
vim online に tips があったんだね

479 名前:472 mailto:sage [03/11/04 03:13]
>>474
試してみたんですが、returnする時に'<1'表記するとバグりません?
foldlevelが1のまま0に減らないんですよ…
'>1'の方は正しく1になっているようですが…

これらを'a1'と's1'に変えるとより分かり易く再現されます。
最初のs1の部分で減らないので、2回目にa1が実行される所でfoldlevelが更に増えて2になります。
ですが、2回目のs1の所まで来ると、一気に0まで戻ります。

vimのfold関係のバグかな?

480 名前:474 mailto:sage [03/11/04 07:55]
>>479
最後の
return foldlevel(v:lnum-1)      

return '='
にするとうまくいくかも。
helpにはfoldlevel(v:lnum-1)を使えって書いてあるけど、実際には
-1にしかならない。
シングルクウォートがぬけてました。
if getline(v:lnum) =~ '^class .*{$'

481 名前:名無しさん@お腹いっぱい。 mailto:age [03/11/13 21:19]
ChangeLogMemoをVimでお手軽に作れるようにとスクリプトに挑戦してみたけど
どーもうまくいかん。normalが未定義と言われ無効な表現と怒られる。
:Changelogでmemo.changelogってーファイルを開いて先頭に整形した
日付とかを入れたい。
どこがどう間違ってるか教えて。以下の関数とかは全部_vimrcに記述している。
ttp://apollo.u-gakugei.ac.jp/~yoshiki/clmemo/cltips.php
ここのは試したけど動かせなかった。

command! Changelog :call Chlog()

function Chlog()
execute ":e c:\Program Files\Vim\memo.changelog"
execute "normal gg0"
map ,d ggi<CR><CR><ESC>kki<C-R>=strftime(\"%c\")<CR>
\ nanasisan <nanasi@2ch.net><ESC>o<CR><TAB>*
endfunction

482 名前:481 mailto:age [03/11/14 21:13]
いろいろ調べてよーやく望む動作ができるようになったぞい
多分とても原始的な方法。ま、せっかく作ったんで書いとくよ。

" ,d : 時刻と署名を先頭に挿入
" ,n : エントリを追加
" どちらもChangeLogMemo用
map ,d ggi<CR><CR><ESC>kki<C-R>=strftime("%Y-%m-%d(%a) %X")<CR> nanashisan <nanashi@3ch.net><ESC>o<CR><TAB>*
map ,n ggo<CR><TAB>*

" :Changelog : clmemo.changelogファイルを開くコマンド
command! Changelog :call Changelog()

function Changelog()
let clmemo = $VIM . "\\clmemo.changelog"
execute ":e " . clmemo
let timestamp = getline("$")
let now = strftime("%Y-%m-%d")
if (timestamp ==? now)
execute "normal " . ",n"
else
execute "normal " . ",d"
endif
endfunction

483 名前:名無しさん@お腹いっぱい。 mailto:sage [03/11/27 16:47]
viつかいだして2年ぐらいになるし,
そろそろスクリプトも書けなあかんなぁと思ってこのスレを読んでみると,
簡単なことでも四苦八苦する様を見てemacsに移行しようかと
思ってしまった. lispは応用効くし.

484 名前:名無しさん@お腹いっぱい。 mailto:sage [03/11/27 17:13]
その程度の動機でemacsに移行できるならしとけ

485 名前:名無しさん@お腹いっぱい。 [03/12/02 21:58]
機能多すぎてさ。迷っちゃうわけよ。どの編集方法がもっとも最速か?少ないキータッチで実現できるか?
入力補完を使用した方が早いのか、画面ないの単語まで移動してコピって作成した方が早いのか?
迷ってるうちにマウスとキーボードでコピってるヤツの方がサクサクッと仕上げちゃってるわけよ。
編集そのものよりいかにエディタを使いこなすか?にずれちゃってるわけよ。ある程度学習すればリターン
の方が大きくなるであろうとは思うのだけれど、なかなかその道が見えてこないわけよ。半年以上はvi
使ってると思われるんだけど、いまだにその辺のエディタと対してスピード変わってねーんじゃねー?
っていう疑いをぬぐい切れぬわけよ。



486 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/02 22:04]
とりあえず、ここはvim6の、それもスクリプトを専門に扱うスレなので
ここはスレ違い。

vi 2nd
ttp://pc.2ch.net/test/read.cgi/unix/1020611467/
EmacsとViはどっちが★腐れたエディタ★か
ttp://pc.2ch.net/test/read.cgi/unix/987839931/
Vim vs Emacs (Editor War)
ttp://pc.2ch.net/test/read.cgi/unix/983911547/

487 名前:名無しさん@お腹いっぱい。 [03/12/03 13:03]
485 には vi 使いこなす能力がないっつーことだ

488 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/08 17:49]
初めて vim スクリプトを勉強するなら、 eval.txt と usr_41.txt のどっちの方を先に
読んだ方がいいですか?

行数が eval は 41 のほうの 3 倍もあるので、どんな感じなのかと。

489 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/12/08 18:19]
>>488
他のプログラミング言語に慣れているのであれば、リファレンスマニュアルである
eval.txtを必要なところだけかいつまんで読み、差分を理解するようにしたほうが近道
です。そうでないならusr_41.txtを読みながら1つ1つ順番に試した方が早く習得できる
でしょう。

490 名前:名無しさん@お腹いっぱい。 mailto:sage [03/12/08 20:42]
>>489
eval を斜め読みしてみます。

491 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/07 15:30]
このスレとか:help augroupとか色々なスクリプトとか読んでみたんだけど、
未だにaugroupが何の為にあるのか分からない。
これ使うとどんな嬉しい事があるの?

492 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/07 15:38]
スクリプトが自分でインスコしたautocmdだけを綺麗に消せる

493 名前:491 mailto:sage [04/02/07 18:52]
なるほど、そういう用途の為にあるのか。
教えてくれてどうもありがとう、>>492さん。

494 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/18 09:08]
vimスクリプト開発に便利なコマンドってどんなのがありますか?
とりあえず :source ってのは使えそうだけど、Emacs の
eval-last-sexp みたいな、カーソル行をコマンドとして解釈して
実行、みたいなのがあると便利なんですが。これ自体スクリプトで
書けそうだけど…。


495 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/18 09:21]
>>494 yy:<C-R>"



496 名前:493 mailto:sage [04/02/18 11:15]
>>495
おおっ、こりゃ便利です!! ありがとうございます。
ストローク数多くなるけど、^y$:<C-R>" でもイケますね。
(行末の ^M を省くため)


497 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/18 11:29]
お気軽スクリプト生成コマンドとしてはq:もあるね。
コマンドラインの履歴を編集してそのままスクリプトに出来る。






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

前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