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

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:もあるね。
コマンドラインの履歴を編集してそのままスクリプトに出来る。

498 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/18 13:06]
ストローク数だけで言うなら Y:<C-R>"<C-H>

499 名前:493 mailto:sage [04/02/19 09:16]
>>497
ときどき :q と間違えて q: を押すと出てきてたのはこれだったのか…
vi初心者なもので…
これで望みどおりのことができそうです。ありがとうございます!


500 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/19 09:55]
そう言えば、ストローク数だけで言うなら Yq:P の方が短いな

501 名前:名無しさん@お腹いっぱい mailto:sage [04/02/20 21:20]
起動したスクリプトのディレクトリを取得しようとしています。
Chalice.vimをみると、
let s:scriptdir = expand('<sfile>:p:h')
というのがあったので、

let s:name = 'ScriptDir'
if exists("ScriptDir")
finish
endif

command -nargs=0 ScriptDir :call s:ScriptDir()

function! s:ScriptDir()
let s:scriptdir = ''
let s:scriptdir = expand('<sfile>:p:h')
echo "This script is here.: \"" . s:scriptdir ."\""
endfunction

などというのをでっち上げ、gvimを立ち上げて:ScriptDirしてみたのですが、ホームディレクトリが表示されます。
なんか大きく勘違いしていると思うのですが、どこで勘違いしているのかわかりません。
ご教示いただければ幸甚です。
よろしくお願いいたします。



502 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [04/02/20 21:45]
>>501
let s:scriptdir = expand('<sfile>:p:h')
command! -nargs=0 ScriptDir :call s:ScriptDir()
function! s:ScriptDir()
  echo "This script is here.: \"" . s:scriptdir ."\""
endfunction

expand('<sfile>:p:h') が評価されるタイミングが問題です。動作だけから判断する
と<sfile>はsource中にしか定義されないようなので、source時に確実に評価される
ように気をつける必要があります。

503 名前:名無しさん@お腹いっぱい mailto:sage [04/02/21 01:33]
なるほど。ありがとうございます。
思ったような動作をするようになりました。

504 名前:初心者 [04/02/26 07:50]
platexをですね、
:platex %
なんて打ったら、コンパイルしてくれるわ
dvioutを起動してくれるわ
なんていうふうにするには
どんなスクリプトをかけばよいのですか?

505 名前:名無しさん@お腹いっぱい。 mailto:sage [04/02/26 08:15]
>>504
ちょっと違うが。
nnoremap <buffer> <c-m> :!platex %<cr>:sil !xdvi %<.dvi >/dev/null 2>&1 &<cr>

506 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/03 09:56]
IRC (;´Д`)ハァハァ

507 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/07 15:29]
VimIRC.vim : An IRC client script
vim.sourceforge.net/scripts/script.php?script_id=931


508 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/08 13:50]
だれか #Vim つくって...

509 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/08 16:04]
>>508
splitしてるでしょ。確かグローバルには#vimがあったはず。

510 名前:名無しさん@お腹いっぱい。 mailto:sage [04/03/08 21:03]
>>508
どこのネットワークだよ。
WIDE系?freenode?2ch?

511 名前:名無しさん@お腹いっぱい。 [04/04/17 20:53]
age



512 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/11 13:26]
>>507
なんもかんがえずにとりあえず立ち上げてみたら、
いきなりsegmentation fault...

うーむ。

513 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/11 13:30]
>>512
segfはvimのバグじゃねーか?

514 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/16 15:19]
nomagicのときに
/.
と同様にハイライトさせたいのですが
let @/='.'
とやってもうまくいきません

何か良い方法はありませんか?

515 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/16 21:13]
>>514
よくわからないけど
/\.
じゃなくて?
let @/='.'
でもうまくいくけど、一回検索しないと反転しないね。そゆこと?


516 名前:514 mailto:sage [04/05/16 23:24]
>>515
set nomagicのときlet @/='.'だと全部が反転しませんか?
.と言う文字を反転させたいんです

やりたいことはノーマルモードの*と同じようなことを
ビジュアルモードで選択した部分のみをやらせたいんです

現状はこんなコードです
function! s:vsearch()
  if line("'<")!=line("'>")
    execute "normal! *"
  else
    let bkupreg=@@
    silent normal gvy
    if @@=~'.*\n'
      let @@=strpart(@@,0,strlen(@@)-1)
    end
    if &magic
      let @@=escape(@@,'^$.*~[]\')
    else
      let @@=escape(@@,'^$\')
    end
    exe "normal /".@@
    let @/=@@
    exe "normal n"
    let @@=bkupreg
  end
endfunction
vmap * :call <sid>vsearch()<cr>

>一回検索しないと反転しないね。そゆこと?
それも悩み所です

517 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [04/05/16 23:49]
>>516 こんな感じで
let @/ = '\V'.escape(@@, '\')

518 名前:514 mailto:sage [04/05/18 22:48]
>>517
お礼が遅くなってすみません

おかげさまで友人に見せても
文句の出ない(出ても一蹴できる)程度の
物になりました。

519 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/25 23:17]
format.vimにenc=utf8でも禁則処理をして欲しいのでこんな感じにしてみた。

begin 644 format.vim.diff.gz
M'XL("/%1LT``"V9O<FUA="YV:6TN9&EF9@#-5-NJTT`4?3Z%_L-JD--K2A+M
M%2OHHR(^>`1!I*3IM!E))R69E!XY+Y-7+^`7B(CX'7Z*B&^^^`?.9)KT<EJ?
M/.!0FLE>:Z\]>\_.;C0:F(71PN7M%5VTPXC.SRX2@L?N)9P.''MH]X>6W%C6
MG7+)-,T=]A[1&7;Z\K<A-O979D#/:O4ZT.]*2;[W'<B=62Y!KH!PS(=:?TS9
ME#`^C@F+*:<K@A$L12-L2F=J4RXU861_,#8^@<OFB3LG1H'1&2ID36,>UXQ"
MNJ#5%>4@;@[*>,8K=^DR$FN]3>`F5'##_'<KTSN3"WB:3/!DR6G(XLQZHI"#
M;LNVG$TE,YI.(A[&[HJ,"?/"*65SF<)YOL\IYSM@-<NO6BY55)UVD-&ATO9^
M6#B>*-?J-5/V:,,0'R#>0,P@?(C?$&\AWD&\A[@/\0#B.40$P2%6$&N(UQ"!
M3N"H6/H1Z2>DGY%^0?H5Z3>DWY'^0/H3Z2^(AQ"/("X@GBD-U5.V=5O69E!T
MU<W7!E=7Q[HGEY#M<[U6_V7YCK9:M]]I=0>=HM<VQ>21C#(G/*",U(RV^I)R
MC$[7$O/"(+-#7LD6\WP)2><7DO12U1:JNI[O1@Z+:IY?Q[T1;*>O(2`B/(F8
M\EBZ$:_)9TOIM^#4-84$,='R!=GSM:$8%'(S2YBGOBH]-Y`W2W?@M'JV?3""
M;BZYNSJWOQVW"3V3#"R2@-/))2?:P%2#!14$VYDEXXS9M>/LDOTM.2"*JEU,
F]=20/&&&9-.U">RQ,^%;6GC7Z>"L)V])JM1/W\`?NMXJ$GL&```M
`
end

520 名前:519 mailto:sage [04/05/26 00:34]
訂正。一文字とるなら
" multibyte
let str = strpart(str, idx)
let len = strlen(nr2char(char2nr(str)))
return strpart(str, 0, len)
のがカッコええか

521 名前:519 mailto:sage [04/05/26 00:38]
すまそ
" multibyte
return nr2char(char2nr(strpart(str, idx)))
これでええやん



522 名前:KoRoN@Vim%Chalice ◆8XALICEsdk mailto:sage [04/05/26 01:34]
>>519 ありがとうございます。次のファイルをテストしてみてください。
www.kaoriya.net/testdir/patches-vim/format.vim

ちなみにスクリプトで単体の文字を扱う技術はChalice等の開発により無茶苦茶発達
してまして
  matchstr(getline("."), ".", col(".") - 1)
こんな感じでmatchstrを使うのが定石です。近い将来format.vimも全面的に見直さな
ければいけませんな。

523 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/26 08:00]
>>522
pc5.2ch.net/test/read.cgi/unix/1073825479/755の修正も
お願いします。

524 名前:519 mailto:sage [04/05/26 13:20]
>>522
バッチリっス。サンクスコ

525 名前:名無しさん@お腹いっぱい。 [04/05/27 12:30]
タブ押したら半角スペースが4つ分になるようにしたい

526 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/27 13:17]
>>525 (・∀・)カエレ!!

527 名前:525 [04/05/27 14:53]
>>526
帰る

528 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/27 15:26]
>>527


529 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/28 07:53]
>>525
se expandtab tabstop=4

530 名前:525 mailto:sage [04/05/29 04:58]
>>529
帰らなくて良かった

531 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/30 04:40]
hoge.texを編集してるときに
:!xdvi % &
としたら
%はhoge.texを指してしまうわけですが、拡張子を除いた(hogeの)部分だけを表すには
どうすればよいでしょうか?



532 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/30 08:03]
>>531
%<

533 名前:531 mailto:sage [04/05/30 13:28]
>>532
ありがとうございました。

534 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/30 16:53]
起動するときにウインドウを希望の位置に希望の大きさで立ち上げたい

535 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/30 17:25]
>>534
:winp[os] {X} {Y}
:win[size] {width} {height}

536 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/30 19:24]
>>535
Thx
胃に空いた穴が塞がりそうです

537 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/30 19:30]
オートインデントは一切半角スペースで構成されるものでお願いしたい

538 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/30 20:56]
>>537
誰に言っているのですか?

539 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/30 21:02]
あなたですよ、m9(・∀・)あなた!

540 名前:538 mailto:sage [04/05/30 21:12]
私は半角スペースでインデントしています。

541 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/30 23:25]
>>537
:se expandtab



542 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/31 00:26]
スクリプトと関係ない話はvim6本スレでよろしこ

543 名前:名無しさん@お腹いっぱい。 mailto:sage [04/06/03 22:21]
カーソルの下にある文字列の長さを取得する関数を書いてみた。

function! UnderCursorStringLength()
let line = getline(".")
let cur = col(".")-1
let l = strlen(line)
let backward = strpart(line, 0, cur)
let forward = strpart(line, cur, l)
let b = strlen(matchstr(backward, ".*\""))-1
let e = cur + match(forward, "\"")
echo e-b-1
endfunction







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

前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