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

361 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/30 21:45]
Chalceで学んだことですが、スクリプトでバッファを変更する時に、一時的に
undolevelsを-1にするのは非常にナイスなアイデアですよね。一回のundo分でも
無制限にメモリを消費できてしまうわけですからね。vim標準のgzip.vimとか、
いろんなスクリプトでこれをやってほしいなぁ

362 名前:名無しさん@お腹いっぱい。 mailto:sage [03/04/30 21:46]
x Chalce
o Chalice

363 名前:名無しさん@お腹いっぱい。 [03/05/15 11:54]
emacsであるような、ChangeLogの作成を支援してくれるような
vimスクリプトってありませんか??

364 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/15 12:22]
こんなんがあるが…
ttp://www3.kobedenshi.ac.jp/~s1009790/vim/index.html

ちょっと修正すりゃそれなりになるんじゃない?

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

366 名前:363 [03/05/15 13:32]
自分もこんなの見付けました。
ttp://apollo.u-gakugei.ac.jp/~yoshiki/cltips.php

367 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/17 09:21]
+,-などの記号を入力したときに両側にスペースを入れたいです。
そのときすでにスペースが入っていたらスペースを入れないようにします。
それで次のような関数を作ったのですがうまくいきません。
というかvimスクリプトがぜんぜんわかりません。
直してください。
inoremap <buffer> ( <c-o>:call InsertSpace()<cr>(
inoremap <buffer> , <c-o>:call InsertSpace()<cr>,<space>
inoremap <buffer> + <c-o>:call InsertSpace()<cr>+<space>
inoremap <buffer> - <c-o>:call InsertSpace()<cr>-<space>
inoremap <buffer> * <c-o>:call InsertSpace()<cr>*<space>
inoremap <buffer> / <c-o>:call InsertSpace()<cr>/<space>
inoremap <buffer> = <c-o>:call InsertSpace()<cr>=<space>
function! InsertSpace()
if strlen(getline(".")) == col(".")
if strpart(getline("."), col(".")-1, 1) != " "
normal a
endif
else
if strpart(getline("."), col(".")-2, 1) != " "
normal a
endif
endif
endfunction

368 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/17 19:09]
>>367
まず、
getline(".")[col(".")-1]
みたいに、配列を使ってみたら。

369 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/17 19:57]
>>367
とりあえず、それっぽく動くのができたよ。

inoremap <buffer> + <C-O>:call InsertSpace('+')<CR>
function! InsertSpace(chr)
  let left = getline(".")[col(".")-2]
  let right = getline(".")[col(".")-1]
 
  if left == ' ' && right == ' '
    execute "normal i\<C-V>".a:chr."\<Right>"
  elseif left != ' ' && right != ' '
    execute "normal i \<C-V>".a:chr." \<Right>"
  elseif left != ' '
    execute "normal i \<C-V>".a:chr."\<Right>\<Right>"
  elseif right != ' '
    execute "normal i\<C-V>".a:chr." \<Right>"
  endif
endfunction



370 名前:367 mailto:sage [03/05/17 22:00]
>>369
ありがとうございました。すごく勉強になります。
しかし、行の最後にいるときにうまくいきません。
場合分けしたのですが、最後の\<Right>がうまく機能しません。
function! InsertSpace(chr)
let left = getline(".")[col(".")-2]
let right = getline(".")[col(".")-1]
if strlen(getline(".")) == col(".")
if right == ' '
execute "normal a\<C-V>".a:chr." \<Right>"
else
execute "normal a \<C-V>".a:chr." \<Right>"
endif
else
if left == ' ' && right == ' '
execute "normal i\<C-V>".a:chr."\<Right>"
elseif left != ' ' && right != ' '
execute "normal i \<C-V>".a:chr." \<Right>"
elseif left != ' '
execute "normal i \<C-V>".a:chr."\<Right>\<Right>"
elseif right != ' '
execute "normal i\<C-V>".a:chr." \<Right>"
endif
endif
endfunction

371 名前:369 mailto:sage [03/05/17 22:51]
>しかし、行の最後にいるときにうまくいきません。
ほんとだ。σ(^◇^;)

>場合分けしたのですが、最後の\<Right>がうまく機能しません。
ほんとだ。(?_?)
これはちょっとわからないな。ちょっと調べてみるけど、
あてにはしないでね。なんか仕様っぽい気もするし。

372 名前:MiMi@Vim%Chalice ◆fI1wYbzaMQ mailto:sage [03/05/18 00:20]
違うアプローチで作ってみました.
挿入モードで演算子を入力するとスペースを挿入します.
# コマンドモードに戻る必要はありません.

●注意事項
  プログラミング言語の仕様に+と++のような同じ文字を使った
  二種類の演算子がある場合は両方をmapして下さい.
  第2引数でスペースを入れるかどうかを指定します.
  これにより,++の時はスペースを入れない,==の時はスペースを入れる
  といった使い分けが出来ます.
  スペースを入れない仕様は意味が無さそうですが,+をmapして++をmapしないと,
  ++が入力できなくなってしまうので仕方なくこういう仕様にしました.

●1点だけごめんなさい項目があります.
  行頭ではmapした記号を入力できません.
  ただし,一般的にはインデントを入れるので気にならないでしょう.

" 両側にスペースを入れたい演算子をmappingする
inoremap <buffer> <silent> + <Esc>:call InsertSpaceOnBothSides('+', 1)<CR>a
inoremap <buffer> <silent> - <Esc>:call InsertSpaceOnBothSides('-', 1)<CR>a
inoremap <buffer> <silent> * <Esc>:call InsertSpaceOnBothSides('*', 1)<CR>a
inoremap <buffer> <silent> / <Esc>:call InsertSpaceOnBothSides('/', 1)<CR>a
inoremap <buffer> <silent> % <Esc>:call InsertSpaceOnBothSides('%', 1)<CR>a
inoremap <buffer> <silent> = <Esc>:call InsertSpaceOnBothSides('=', 1)<CR>a

inoremap <buffer> <silent> ++ <Esc>:call InsertSpaceOnBothSides('++', 0)<CR>a
inoremap <buffer> <silent> -- <Esc>:call InsertSpaceOnBothSides('--', 0)<CR>a
inoremap <buffer> <silent> == <Esc>:call InsertSpaceOnBothSides('==', 1)<CR>a

373 名前:MiMi@Vim%Chalice ◆fI1wYbzaMQ mailto:sage [03/05/18 00:20]
" 演算子の両側にスペースを入れる
function! InsertSpaceOnBothSides(operator, isspace)
  let pre_str  = strpart(getline("."), 0, col(".")) " 行の前半
  let post_str = strpart(getline("."), col("."))    " 行の後半

  if a:isspace == 1
    if strpart(pre_str, strlen(pre_str)-1, 1) != ' '
      let pre_str = pre_str . ' '       " 前半最後にスペース挿入
    endif
    if strpart(post_str, 0, 1) != ' '
      let post_str = ' ' . post_str     " 後半最初にスペース挿入
    endif
  endif

  " 前半と後半の間に演算子を挿入
  call setline(".", pre_str . a:operator . post_str)

  " 次の挿入位置へ移動
  if post_str == matchstr(post_str, '\s*$', 0)  " 演算子挿入位置が行末の時
    let motion_cmd = 'normal $'     " 行末へ
  else
    let motion_cmd = 'normal 2wh'   " 演算子を飛ばして次の単語の1文字前へ
  endif
  execute motion_cmd
endfunction

374 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/18 00:27]
歩野?

375 名前:367 mailto:sage [03/05/18 15:16]
>>372-373
ありがとうございます。
後半ちょこっと変えてみました。
function! InsertSpaceOnBothSides(operator, isspace)
let pre_str = strpart(getline("."), 0, col(".")) " 行の前半
let post_str = strpart(getline("."), col(".")) " 行の後半
let move = 2

if a:isspace == 1
if strpart(pre_str, strlen(pre_str)-1, 1) != ' '
let pre_str = pre_str . ' ' " 前半最後にスペース挿入
let move = 3
endif
if strpart(post_str, 0, 1) != ' '
let post_str = ' ' . post_str " 後半最初にスペース挿入
endif
endif

call setline(".", pre_str . a:operator . post_str)

exec "normal " . move . "l"
endfunction

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

377 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:koron at tka.att.ne.jp [03/05/25 00:08]
大手4紙のサイトにアクセスして、ヘッドラインをだけ抜き出し表示するスクリプトを
作りました。
www.kaoriya.net/testdir/headline.vim
curl, alice.vim, +iconvが必須です。つまりChaliceを使っている人ならば、プラグ
インのディレクトリにスクリプトを置くだけで簡単に導入できるでしょう。導入後は
:Headline Asahi
:Headline Yomiuri
:Headline Sankei
:Headline Mainichi
とすることで各紙のヘッドラインが表示されます。指定する名前はasaやyomiのように、
多少の揺らぎがあっても大丈夫です。今は4紙のみの対応ですが、拡張性を考慮して設
計したので、少しの労力で他のサイトにも応用できるでしょう。興味がある方は試して
ください。

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

379 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/25 19:13]
うう、KoRoNさんに「Vimから出ない人」にされちゃうよー

nikkei.co.jpは「宿題」?



380 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/05/25 21:03]
>>379
是非書いてください。<nikkei.co.jp
日経はコメント使ってマーキングされているから
やりやすそうですねぇ。

381 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/05/26 17:20]
>>377
www.kaoriya.net/testdir/headline-20030526.tar.bz2
アップデートしました。更新点は以下のとおりです。
- プラグイン方式を導入して対応サイトの追加を行ない易く
- まっつんさんの協力によりスラッシュドットジャパンとYAHOO JAPANに対応

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

383 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/30 14:04]
:%!lynx -dump www.nikkei.co.jp/

384 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/30 14:32]
www.kaoriya.net/testdir/headline-20030530.tar.bz2
日経とかいろいろ追加されている。

385 名前:名無しさん@お腹いっぱい。 mailto:sage [03/05/30 15:13]
scriptencoding cp932を headline/以下にも書いてほしいんだけど。

386 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/05/30 15:46]
>>385 了解。忘れてた。

387 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/05/31 00:18]
直しました。
www.kaoriya.net/testdir/headline-20030531.tar.bz2
scriptencoding cp932の追加とasahiのURL変更に対応

388 名前:名無しさん@お腹いっぱい。 [03/06/01 11:23]
info.vimでinfoをみてるときにhおすとヘルプ(?)がでてしまうんですが…

389 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/01 13:04]
>>388
hでは出ないぞ。c-hじゃないのか?



390 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/01 14:17]
>>388 でるけど、何か困るのか?

391 名前:名無しさん@お腹いっぱい。 mailto:sage [03/06/01 16:02]
hで左に移動できないじゃん。

392 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/06/02 11:27]
Headline更新
www.kaoriya.net/testdir/headline-20030602.tar.bz2
Slashdotが6月になっておかしくなったのを修正

393 名前:名無しさん@Vim%Chalice mailto:sage [03/06/03 02:11]
そろそろg:chalice_curl_optionsみたいなcurlオプションキボーン
防火壁ナノネン. . .

394 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/06/04 11:37]
>>393
www.kaoriya.net/testdir/headline-20030603.tar.bz2
対応しました。

395 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:koron at tka.att.ne.jp [03/06/17 19:39]
まっつんさんとのコラボーレーション。Exciteを使った日英翻訳です。
  www.kaoriya.net/testdir/excitetranslate.vim
範囲選択して:ExciteTranslation。なお翻訳結果は保証されません。

396 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [03/06/17 19:42]
>>395
> KORABORESHON with Mr. まっつん. It is Japanese-English translation using Excite.
コラボーレーションは無いよなぁ…(´・ω・`)

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を参照してください。






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

前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