トップページunix
986コメント327KB

Vim6 Part10

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@w3mNGNG
Vim 6.xに関する話題、Part10です。
http://www.vim.org/

前スレ
http://pc5.2ch.net/test/read.cgi/unix/1086135625/

関連情報は>>2-7あたり。
0402名無しさん@お腹いっぱい。NGNG
>>399
:%s/foo\n\(.*\n\)*bar/\=substitute(submatch(0), "\\n", "", "g")/
0403399NGNG
>>401
それだとできないんですよ
私のがおかしいのかな??
0404399NGNG
>>402
ありがとうございます
それやったら 5分くらいかかって まだできないんですけど・・
どうなんですかね。。
0405名無しさん@お腹いっぱい。NGNG
multiline の正規表現は重かったような。
止まってたきもする。しらんけん。
0406399NGNG
まだできない。。
Celeron-667MHzだけど・・・
0407399NGNG
まだおわらん・・
おとそうかな・・
でも編集中だったし・・
泣きそう・・
0408 ◆Vim6/xykh2 NGNG
Vim で改行を大量に削除するのは、危険です。
激遅になります。止めた方がいいです。
C-c で停止させて、 :q! で終了してください。

(1) SED の場合、改行削除。( sed 詳しくないけど )
[prompt]$ cat a.sed
:loop
$!{
N
s/\n//
b loop
}

[prompt]$ sed -f a.sed in.txt > out.txt

(2) Ruby の場合
ruby -e 'print(ARGF.read.gsub(/\n/,""))' in.txt > out.txt
0409 ◆Vim6/xykh2 NGNG
それに、syntax が有効だと遅くなりますね。

あと、vim の行の連結は、通常 J または gJ を使います。
:h gJ
単なる改行の削除なので、gJ を使います。
これも、広範囲の場合は使えません。
0410 ◆Vim6/xykh2 NGNG
これの方が安全かも。
ruby -ne 'print $_.chomp' in.txt > out.txt
0411名無しさん@お腹いっぱい。NGNG
>>408
そういうのもいいと思うんだけど
彼のやりたいことは、ファイルの中のまっちした部分にだから
それだと、都合が悪いのでは?
0412名無しさん@お腹いっぱい。NGNG
あれかね、vim は multi-line regex はあまり考えてない?
0413名無しさん@お腹いっぱい。NGNG
つーか、複数行の正規表現をお手軽に使える utility ってなんかある?
0414399NGNG
皆さんありがとうございます
私のやりたいことは

<table border="1" bordercolor="black" width="640">
<tr><td colspan="2">hoge</td></tr>
<tr><td><center>./hoge.gif</center></td><td>
A:<br>
B:<br>
<br></tr>
<tr><td colspan="2">hoge</td></tr>
</table>

<table border="1" bordercolor="black" width="640">
<tr><td colspan="2">huge</td></tr>
<tr><td><center>./huge.gif</center></td><td>
A:<br>
B:<br>
C:<br>
<br></tr>
<tr><td colspan="2">huge</td></tr>
</table>

等と数百個(上記のようなtableが)記述されているファイルがあり
それを 一つのテーブルごとに1行にしたいのです
すいませんがお力を貸していただきたいです
よろしくお願いします
0415KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>412
Vimにとってはマッチそのものより、連結後に1行が長くなることのほうがボトルネッ
クっぽいです。

>>413
Perl

>>414
特定のキーワードで良いのならば
:/<table>/,/<\/table>/join
みたいな形の方が良さそうです。402の正規表現は.*が*で囲まれるという、バックト
ラックが多発する典型的パターンに近いので、時間がかかっても当然という印象です。
0416名無しさん@お腹いっぱい。NGNG
>>415
ありがとうございます
joinなんていうものがあるのですね
しらなかったです

ですが それだと1つしか連結されないです
%s///
みたく すべての行をするようなことはできないのでしょうか?
0417名無しさん@お腹いっぱい。NGNG
じゃあこんなんどうよ。
perl -p -e 's/\n//g' hoge.html | sed -e 's/\(table>\)/\1\n/g'
0418名無しさん@お腹いっぱい。NGNG
これは遅い?
:%s@<table\>.\{-}>\_.\{-}</table>@\=substitute(submatch(0), "\\n", "", "g")@
0419KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>416
:help multi-repeat
> To repeat a non-Ex command, you can use the ":normal" command:
このあたりを参照してください。

>>418
\=も遅くなる1つの要因です。あと.\{-}>\_.\{-}の部分がホトンド意味無いかも。最
短マッチ\{-}を使いたくなる気持ちはわかるんですが、なるべく[^>]のような否定パ
ターンを使うほうが、マッチ自体は高速になります。
0420 ◆Vim6/xykh2 NGNG
sed で、できた。

[prompt]$ cat a.sed
/^ *<table\>/,/^ *<\/table>/{
H
/<\/table>/!d
g
s/\n//g
}

[prompt]$ sed -f a.sed in.html > out.html
0421名無しさん@お腹いっぱい。NGNG
--remote-silentをつけて起動すると、カーソル位置を指定出来ないんでしょうか?
gvim +70 --remote-silent hoge.txt
とやってるんですが上手くいきません。
0422KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>421
:help --remote-silent
> --remote-silent [+{cmd}] {file} ...
0423名無しさん@お腹いっぱい。NGNG
今開いているバッファすべてを対象に文字列を検索したいのですが,
いい方法はないでしょうか?
0424名無しさん@お腹いっぱい。NGNG
:bufdo は〜
0425名無しさん@お腹いっぱい。NGNG
bufdo g/hoge
という感じでしょうか.
/みたいに1個1個まわっていくのは無理ですかね?
0426名無しさん@お腹いっぱい。NGNG
.でノーマルモードの前回コマンドを繰り返せるけど
コマンドモードの前回コマンドを繰り返す方法ってある?

それがあれば425の要求も満たせそうな気ガス
0427名無しさん@お腹いっぱい。NGNG
>>426
@:
0428名無しさん@お腹いっぱい。NGNG
>>341(KoRoNさん)

uim-fepの開発者です。
uim側を修正して、0が直接入力で1がひらがなになるようにしまし
たので、KaoriYa版のuim-fepのサポートを継続してくださるようお
願いいたします。
0429名無しさん@お腹いっぱい。NGNG
windows 版のvim6で、
あるアプリケーション(mozexというmozilla拡張機能--textareaを外部エディタで編集できる)
から、vimを起動するときに、fencをutf-8にしたいので、
\path\to\gvim.exe -c "set fenc=utf-8" %t
としているのですが、
ファイルが空の場合、fencが設定されません。
ファイルが空の場合でもfencを設定するにはどうすればよいかご教授ください。

fencs=ucs-bom,ucs-21e,iso-2022-jp-3,utf-8,euc-jisx0213,euc-jp
をvimrcでは設定しています。
0430KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>428
AnthyとVimとの間で板ばさみにしてしまって申し訳ありません。サポート継続の件は了
解しました。理由さえしっかりしているのならAPIが変わってしまうのは仕方が無いと
いうスタンスなので、Anthyのほうで変わってしまった経緯が気になるところです。も
しもその辺を調べられそうなポインタがありましたら教えてください。
# 万が一作者さんのキマグレだったりしたら、付き合うのはツライところですね(苦笑

>>429
enc=utf8にするとか、--cmdでautocmd BunNewなんかを設定するのはどうでしょう。
0431名無しさん@お腹いっぱい。NGNG
教えて!
http://05xx.sub.jp/ttssh/
0432名無しさん@お腹いっぱい。NGNG
>>422
gvim --remote-silent ++70 hoge.txt
で上手くいきました。ありがとうございました。
0433名無しさん@お腹いっぱい。NGNG
>>425
:bufdo grepadd! something %
:cn :cn :cn ... :@ :@ :@ ...
0434名無しさん@お腹いっぱい。NGNG
わからないことがあったので教えてくだされば幸いです

<p align="left" class="aaa"><a name="1">hoge</a> - sato<a href="a.html#a" target="_blank"></a></p>
<p align="left" class="aaa"><a name="1">hoge</a> - sato</p>
上記のような記述が複数あるファイルで
両方のhogeと言うリンクの名前をを取り出そうと思い
:%s/.*<a\ name=.*>\{-}>\(.*\)<\{-}<\/a>.*/\1/
とすると、2行目の例の方はうまくhogeが取り出せるのですが
1行目のほうは取り出せません
いろいろと考えてみたのですが 私的にはこれでもうまく行くと思います
すいませんが どこが悪いのか訂正していただけないでしょうか?
よろしくお願いします
0435名無しさん@お腹いっぱい。NGNG
[^]の使い方教えなかったっけ。
0436434NGNG
>>435
私に言っているのでしょうか?
[^]と言うと否定ですよね?
それも 私なりにやってみましたけど それだと
2行目の hogeすら正しく表示されないんですよ
:%s/.*<a\ name=.*[^>]>\(.*\)[^<]<\/a>.*/\1/
とやってみました。
これもおかしいのでしょうか?
0437名無しさん@お腹いっぱい。NGNG
もう正直、どっかで正規表現を勉強しなおしてきてホスイ
0438 ◆Vim6/xykh2 NGNG
434 == 399 ?
0439KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>436
こんな感じでしょう。

:%s/.*<a name=[^>]*>\(.\{-}\)<\/a>.*/\1/

根本的に * や \{-} 、いわゆる量指定子の使い方を勘違いされているようです。正規
表現の動作する仕組みを知っていれば、その辺りでつまづくことはなくなるものです。
437ではありませんが、Webサイトや書籍で正規表現について理解を深めると良いでしょ
う。書籍ではオライリーの詳説正規表現をオススメしておきます。
0440名無しさん@お腹いっぱい。NGNG
\=substitute(submatch(0), "\\n", "", "g")

\(.\{-}\)
ってどういう意味?
0441名無しさん@お腹いっぱい。NGNG
:h /\=
:h substitute()
:h submatch()
:h /\{-
まずこれを見てくれ
0442名無しさん@お腹いっぱい。NGNG
>>433
希望通りの動作です.ありがとうございます.
0443名無しさん@お腹いっぱい。NGNG
ここはvimスレだから、聞かれればvimでなんとかしちゃおうって思うんだろうし、vimにそれだけの力が
あるのは分かっているけれどさ、awk(場合によってはsed)使った方がいいとアドバイスするのも、
やさしさじゃないかなと、ここんとこの質問書き込みをみておもたよ。

と、チラシの裏のかわりに書いてみるテスト。
0444428NGNG
>>430
>Anthyのほうで変わってしまった経緯が気になるところです。
>もしもその辺を調べられそうなポインタがありましたら教えてください。
詳しい経緯はわかりませんが、これが参考になるかもしれません。
http://lists.sourceforge.jp/mailman/archives/anthy-dev/2004-December/001522.html
0445名無しさん@Vim%ChaliceNGNG
Windows版gvimで
set shell=c:\cygwin\bin\bash.exe
set shellcmdflag=--login\ -c
としていて、一応これで!コマンドが使えるのですが、
bashのカレントディレクトリが常に$HOMEになってしまいます。
gvimのカレントディレクトリ下でコマンドを実行させる方法はないでしょうか?
0446名無しさん@お腹いっぱい。NGNG
--login
0447おみくじは 【大吉】 お年玉は 【639円】 NGNG
あけおめ
0448 【大吉】 【1377円】 NGNG
どないじゃい
0449 【凶】 【868円】 NGNG
そういうのは雑談スレでやるんだよもん
0450名無しさん@Vim%ChaliceNGNG
>>446
--loginをとると~/.bash*が読み込まれず、パスも通らない
ようなのですが。
0451名無しさん@お腹いっぱい。NGNG
--loginつけるから $HOME になるんだろ
vimじゃなくてbaseの問題だよ
0452名無しさん@お腹いっぱい。NGNG
>>450
--login付けなくても~/.bashrcは読むけど。
0453名無しさん@お腹いっぱい。NGNG
PHPの開発にWin板のvim使ってるのですが、『まるごとPHP!』を参考にしてphpdoc.vimを
使いたいのですが、なかなか動いてくれません。
やってみたことは"C:\vim\runtime\ftplugin\"にphpdoc.vimを入れて
:runtime! ftplugin/phpdoc.vim
を行いました。
この状態で class Hoge { と入力しても何も起きず、同様にfunction hoge() { としても何も起きません。
うまく動いている方、設定の仕方等間違いがありましたら教えてください。
0454名無しさん@お腹いっぱい。NGNG
その本はしらないがそれがファイルタイププラグインなら
set filetype=phpdoc
それから
help ftplugin-overrule
それよりphpdoc.vimを読んでみれ
書籍のおまけならコメントなりなんなり書いてあるだろし
ていうか本当に使い方書いてないんかいその本
0455453NGNG
>>454
すみません、聞き方がまずかったようです。
本には使い方が書いてあるのですが、UN*X用の説明らしく
${HOME}/.vim/plugin/
に置けば良いと書いてあります。特に他の説明はなく設置するだけであとはクラスや関数
を定義すれば勝手に動くと書いてあります。

また、このスクリプト自体は書籍のおまけではなく、www.vim.orgから落としたものです。
ttp://www.vim.org/scripts/script.php?script_id=520
スクリプト内部には機能の説明のみで特に設置方法についての言及は無いようです。

help ftplugin-overruleは読んでみます。
#そもそも本当にファイルタイププラグインなのか分からないのですが・・・
0456名無しさん@お腹いっぱい。NGNG
>>455
スクリプト嫁
読んだらわかる
0457名無しさん@Vim%ChaliceNGNG
set iminsert=2
let a = input(":")
とやろうとしたんだけど、input()のときは自動的に
IMEオフにされちゃうんだな。
0458名無しさん@お腹いっぱい。NGNG
vim歴1年半にして
:b filename
でバッファ切り替えできることを知りましたよ。
今までずっと:bn,:bpだけでやってた…
0459名無しさん@お腹いっぱい。NGNG
bm
sb
vert sb
も便利
0460名無しさん@お腹いっぱい。NGNG
vim users guideみたいな感じでtipsを書いていくwiki
があったらいいと思うんだけどどうだろう。
ここ、同じ質問が出ることもしょっちゅうあるし。
0461名無しさん@お腹いっぱい。NGNG
>>460
wikiあったって一緒
聞くやつは聞くんだよ
0462名無しさん@お腹いっぱい。NGNG
>>460
ああ、欲しいかも…
家の野良鯖にPukiWikiでも突っ込んでおいたらみんな書き込むかなぁ…
0463名無しさん@お腹いっぱい。NGNG
でもあった方がいいな。ということで>>460ヨロシク
0464名無しさん@お腹いっぱい。NGNG
バッファ切り替えって CTRL+^ も使わない?
プレフィックスなしで直前のバッファ、数字でバッファ指定。
0465名無しさん@お腹いっぱい。NGNG
:ls してから :b [N] するのがめんどかったので、
バッファエクスプローラを使ってます。
vim.org から良さそげなスクリプトを落っことしてきて。
0466名無しさん@お腹いっぱい。NGNG
バッファ一覧を表示してjkで選択できるスクリプト
http://vim.sourceforge.net/scripts/script.php?script_id=42
0467名無しさん@お腹いっぱい。NGNG
>466
微妙にChaliceとの相性が悪いので
Chaliceと併用するときは要注意、と。
0468名無しさん@お腹いっぱい。NGNG
>>462
よろしく。
0469名無しさん@お腹いっぱい。NGNG
Chaliceで書き込む(Ctrl-Enter)となぜかFirefoxが起動して
書き込みエラーになる場合がある(実際は書き込まれている)
Win2000 + vim6.3 + Chalice 1.8.062 です
たぶんこのカキコもエラーに・・・
0470名無しさん@お腹いっぱい。NGNG
1.9にあげろ
0471名無しさん@お腹いっぱい。NGNG
>>460
sourceforge でプロジェクト申請ってできるかな?
0472名無しさん@お腹いっぱい。NGNG
WikiFarmで作ったら?
ttp://wiki.fdiary.net/
0473462NGNG
とりあえず、PukiWiki入れてみた。
http://vim.mydns.jp/
中身はまだ何も書いてないのでみんなで編集しませう。
今日はもう寝る。
0474名無しさん@お腹いっぱい。NGNG
グッジョブ!!!
0475名無しさん@お腹いっぱい。NGNG
悪いことはいわん
個人のとこはやめとけ いつ閉じるかもわからんし
広告入れたりして暴挙に出ることがある
0476名無しさん@お腹いっぱい。NGNG
確かに自鯖っぽいし
やめといたほうが無難だな
0477名無しさん@お腹いっぱい。NGNG
>>475
んじゃ代わりに立ててよ。
0478名無しさん@お腹いっぱい。NGNG
foo to the
とあって、foo から theの一つ前まで削除
foo to the => the
としたい場合どうすればいいですか?
dtt
だと、
foo to the => to the
となって、期待通りにはならないです。

よろしくお願いします。
0479名無しさん@お腹いっぱい。NGNG
>>478
d2w
0480名無しさん@お腹いっぱい。NGNG
wikiちょっと書いてみた。
勝手に項目も作っちゃったけど、まずかった変えてね>>462
0481名無しさん@お腹いっぱい。NGNG
>>480
GJ
0482名無しさん@お腹いっぱい。NGNG
>>480
GI Joe
0483462NGNG
>>480
gj
まずは、中身が無いと始まらないからじゃんじゃんどうぞ。
ある程度増えてきたらページ分割、振り分け、カテゴライズを考えています。
0484名無しさん@お腹いっぱい。NGNG
>>479
上の例だと d2w でもできるのだけど、どこまで削除したいのかを文字で指定して削除したいのです。

to と the で先頭の文字が重なっている(わざと)のはそのためです。
0485名無しさん@お腹いっぱい。NGNG
d2tt
0486名無しさん@お腹いっぱい。NGNG
vim tips でググると色んなのが出て来るなあ。
最初に出てきたこれからして面白かった。
/joe/e : cursor set to End of match
/joe/e+1 : cursor set to End of match plus 1
/joe/s-2 : cursor set to Start of match minus 2
http://www.rayninfo.co.uk/vimtips.html
0487名無しさん@お腹いっぱい。NGNG
FreeBSDで$LANG,$LC_ALLをja_JP.UTF-8にして使ってるんですが、
:set enc=japan するとencがeuc-jpになってしまいます。
実用上困らないけどなんか気持ち悪いです。
なんか必要なコンパイルオプションとかあるんでしょうか。
0488名無しさん@お腹いっぱい。NGNG
utf-8 は日本専用エンコーディングではない
0489名無しさん@お腹いっぱい。NGNG
488様が何を仰りたいのか理解できません(気持ちはわかります)が
マニュアルを読んで納得することができました。
すれ汚しごめんなさい。
0490名無しさん@お腹いっぱい。NGNG
煽りでもなんでもないんじゃないの?
0491名無しさん@お腹いっぱい。NGNG
うむ
言ってるとおりだからな
0492名無しさん@お腹いっぱい。NGNG
vim wikiいい感じですね
0493名無しさん@お腹いっぱい。NGNG
そこそこ栄えてるみたいだね。
0494名無しさん@お腹いっぱい。NGNG
wikiだとやはり新着が分かりづらいのと,1件1件に対してコメントが書きづらいな.
その点vim onlineはいいけど, あれもrateトップが
super starでがっくり来るから,古いのはrate打ちどめにするとか
した方がいいんでないかと思う.
分類が目的別になってるのはいいね.
0495462NGNG
>>494
>wikiだとやはり新着が分かりづらいのと,1件1件に対してコメントが書きづらいな.
そうそう、そこでTrackerプラグインを使って見ようかと模索中で
http://vim.mydns.jp/?tipstest
vim online風味で出来たらいいなぁ…とか妄想中
細かくページが分割されればRSSで新着が確認できるので改善されるでしょう。

>その点vim onlineはいいけど, あれもrateトップが
>super starでがっくり来るから,古いのはrate打ちどめにするとか
>した方がいいんでないかと思う.
rateとかkarmaとかは考えていないけど全てのページに
カウンターを仕込んであるのでそのページの参照数で
ソートとか考えています。

>分類が目的別になってるのはいいね.
tipstestのページのTrackerプラグインではモードで
カテゴリー分けしちゃってますが、やはり目的別のほうが
よさげですねぇ…

って、vim wikiに関する話題はここで良いのかなぁ…とか
思ったりしますが、どうなんでしょう?
まぁ、ここから出たwikiだから良いような気もしますが、
メニューに雑談ページへのリンクも付けたので良かったら
そっちでもどうぞ。
0496名無しさん@お腹いっぱい。NGNG
.vimrcいじっているのだが、なんか納得いかない。
あなたの.vimrc見せて下さい・・・。
0497名無しさん@お腹いっぱい。NGNG
vim でカーソルがタブ文字の上にあるとき、
カーソルは右端に表示されますが、
これを左端に表示するようにできませんか?
0498名無しさん@お腹いっぱい。NGNG
:set listchars=\ \ 
2つめのバックスラッシュの後にも空白が必要
:set list
0499298NGNG
なんで>>298みたいな変なことになったかが分かった。
cygwin上から起動したからだ。変なことしたなあ;;

>>498
  :set listchars=tab:\ \
でない?
0500498NGNG
>>497 >>499

嘘書いてごめんなさい. 
今確認してみましたが, >>499 さんの言われる通りです.
0501名無しさん@お腹いっぱい。NGNG
>>498,499,500
できました。どうもありがとうございます。
■ このスレッドは過去ログ倉庫に格納されています