Vim7ってどんなになるか聞いた人いる?
モロボシ隊員でてくるの?
いや、きっと vimmy ちゃんが・・・
vim7ってどこで入手できるの?
公式でVim7についてのカンファレンスでの話し合いが
mp3でアップされてる
さすがに30MB/43分の内容を聞き取るのはなぁ…
2つバグっぽいものを見つけたので報告します。
:cnoremap <esc> <esc>
とマップしたあと
:ls<esc>
と入力すると、lsを実行せずにコマンドラインを抜けてほしいので
すが、lsを実行してしまいます。
:cnoremap <cr> <cr>:aaa
とマップしたあと
:hoge<cr>
と入力すると、
E492: エディタのコマンドではありません: hoge
と表示され、aaaが入力されません。
>エラーが起きた場合は(エラーメッセージが出ます)、その後のマッ
>ピングは実行されないということに注意してください。これは Vi
>コンパチブルです。
2つめはこれでした。
>>18 1つ目も help に
*c_<Esc>*
<Esc> When typed and 'x' not present in 'cpoptions', quit
Command-line mode without executing. In macros or when 'x'
present in 'cpoptions', start entered command.
とあり、macro ってのはどうも Key mapping のことみたいだからいいんじゃない?
でも何でこうなってるんだろ。
>>20 ありがとうございます。
cmap <esc> <c-c>
を使うことにします。
前スレの最後の方にある format.vim の件。
どなたかデバッグお願いします。
重宝している機能なので。
再現パスは?
うちのformat.vim子ちゃんは賢く働いてくれてますが。
>>25 ありがとうございます。
直っているみたいです。
よく考えたら、どうすればバグになるか言っていませんでしたね ^^;
お察しのとおり、tw を設定したあとで、整形しています。
どうもありがとうございました。
Vim7って早い話がKVimのマージみたいな感じなのかな?
これ以上重くなるのは勘弁
python 用 FoldMethod
runtime/ftplugin/python.vim にはっ付ける
-- ここから
function! FoldLevel(lnum)
let line = getline(a:lnum)
let re = '^\(\s*\)\(\S*\).*'
let sps = substitute(line, re, '\1', '')
let mrk = substitute(line, re, '\2', '')
let lvl = strlen(sps)/4
if mrk==#'class' || mrk==#'def' || mrk==#'for' || mrk==#'while' ||
mrk==#'if' || mrk==#'else' || mrk==#'elif' || mrk==#'try' || mrk==#'except' || mrk==#'finally'
return '>' . (lvl+1)
elseif !strlen(line)
return '='
else
return lvl
endif
endfunction
execute 'setlocal foldexpr=FoldLevel(v:lnum)'
setlocal foldmethod=expr
--ここまで
書き込みエラーがでたので if 文のところで改行してます。
Pythonはfoldmethod=indentだけで充分幸せになれると思ってるのだけども、
これはそれ以上のなにかがあるん?
つーか runtime/ftplugin/python.vim を直接編集するのはやめろよ
>>30 ごめんなさいね。
>>29 def foo():
a = 10
b = 20
が fdm=indent だと
def foo():
+-- 2 行:a = 10----------
>>28 だと
+-- 3 行:def foo():----------
ちょっと、幸せ。
直接 runtime/ftplugin/python.vim を直接編集しないですむやり方と、
if 文を途中で改行するやり方、
let lvl = strlen(sps)/4 ← の 4 を softtabspace? から値を取得するには
どうしたらいいのかしら?
暇な人、ぼそっと教えてくれると嬉しいわ。
>>31 なるほど。
漏れはdocstringの一行目が表示されるんでindentで
満足してた(適切に書かれている場合限定)。
>>32 > 直接 runtime/ftplugin/python.vim を直接編集しないですむやり方と、
vimfilesにコピーしてそれ編集すれば良いんじゃね
>>32 softtabstop なら &softtabstop
>>33 そうか。そういう考えもあるか。
>>34 .vimrc とかに書くってこと?
>>35 出来た!ありんがとん!
iconv を使って
'\(.\)\(.\)', '\1', '')
をsjisに変換しようとすると、
iconv: filename: cannot convert
'
のように失敗するのですが、何か理由でもあるのでしょうか?
失敗したコマンドをちゃんと書けよ
メッセージだけ見るとクォーテーションが間違ってる
>>40 コマンド
$ iconv -t sjis filename
上の行を含む日本語ファイルを開いたときに文字化けを起こしたから、
どこでおかしくなってるか調べてたんですよ。
YZisに期待するか…
モダンなC++のスタイルなら割とコードは理解し易いはずだし
kvimとyzisの簡単な特徴を教えてください
>>42 コロンは阿呆だからemacsも使えないんだってw
>>41 調べてるというならどの文字かぐらいとっとと確定すりゃいいのに…
理由は、sjisならJISX0201なんでまあそれでおかしくないんだろう、
というだけかと。誰も困ってないのは別の(ry
Vim: 致命的シグナル SEGV を検知しました
Vim: 終了しました.
Vim: 2重のシグナルのため, 終了します
Segmentation fault
仕上げ段階だったんで、かなりビビったよ。
:h foo で検索したときに、'foo' のようなオプションも候補に出るようにするには
どうすればいいですか?
>>48 :h foo まで打ったときに <CTRL-D> してみてください。
T-CODEと言うのが解らなかったので香り屋のBBSを覗いてみた
なにこのKoRoNの受け答え
これでまともに人間関係構築出来ているのかこの人?
漏れ vim 使ってるけど香り屋にはお世話になってないなぁ・・・
>>52 禿同
だがそれを匿名で愚痴ってる50の人間関係も激しく気になる
あそこで恐縮してしまうのがダメだと思う
ましてや反省する必要もない
ああいう受け答えされたんなら「あーそーかもね」で
最新Keymapのリファレンス貼ればすむ話
つーかT-CodeなんてVimが人間的に思えるくらい
気違いじみた入力方法だわ
まぁ、KoRoNの言っている事はもっともな事なんだよ
ただあの言い様がなぁ・・・
KoRoN て埼玉大院生だろ?(w
57 :
名無しさん@お腹いっぱい。:04/10/19 18:53:06
aaa " comment
bbbbbb " hoge
ccc " huga
eeeee " var
を
aaa " comment
bbbbbb " hoge
ccc " huga
eeeee " var
のように整形したいのですが、
vimで簡単にできる方法ってありますか?
タブの設定等を必要に応じてした上で
:%s/^\([^ ]\+\) \+"/\1^I"/
などいかが。
すげぇな。
あもしろそうだwana
62 :
名無しさん@お腹いっぱい。:04/10/20 00:54:14
なんだかんだ言ってシェルくらいはvim内で使いたいしな
しかし、これってスクリプトじゃないのね
試すのマンドイなぁ
mattnさんも草葉の陰で
64 :
名無しさん@お腹いっぱい。:04/10/20 01:22:23
KoRoNさんってだれなの?
Vimの開発者さん?
vimshell紹介乙です。
Debianで6.3.030にパッチして15分くらい使ってみたけれど、んー
どうだろう。
スクリーンショットにあるようにウィンドウを自由に分割できるみたい
なのはちょっといいかもしれないけれど、常用しているscreen(1)で
上下には分割できるし、今のところはビビッとは来ないかな。
>>65 > スクリーンショットにあるようにウィンドウを自由に分割できるみたい
> なのはちょっといいかもしれないけれど、常用しているscreen(1)で
> 上下には分割できるし、今のところはビビッとは来ないかな。
それと同じツッコミが本家のMLでもあったよ。
「だけど、gvim はscreenが使えないでしょ?」とか(w
67 :
名無しさん@お腹いっぱい。:04/10/20 03:02:48
オレはwinでgvimだから嬉しいなぁ
> I don't think the Windows-VIM needs such a patch, because I think the
> command line there isn't really popular.
だって。
69 :
名無しさん@お腹いっぱい。:04/10/20 03:45:31
orz
70 :
名無しさん@お腹いっぱい。:04/10/20 04:11:04
71 :
名無しさん@お腹いっぱい。:04/10/20 04:18:29
windowsじゃそんなもの必要ねぇよウンコ!!
ってこと
>>66 そりゃgvimでscreenはできないよなー w。
X使えるほど裕福なハードじゃないんで、gvimには思いが至らなかったです。
偏ったショートインプレでスマソ。たしかにgvim使っている人にはvimshellで
ウィンドウを割れるのは便利だと思う。
というわけで、gvim使いのインプレ街。
> X使えるほど裕福なハードじゃない
vim6 は重くないの?
>>73 PenII 333とかPen 133なんですが、vimは快適に動きますよ。
fdm=marker指定してfoldしているファイル開く時はもっさり
するけれど、vim無しには生活できません。プラグインは、
追加で二つ三つしか入れていないし、ローマンアルファベット
しか扱わないからかもしれませんけれど。
vimは最近どうですか?
|
| mattn です...
|((((〜〜、
|((((((_ ).
|\)/^~ヽ|
| 《 _ |
|)-(_//_)-|)
|厶、 |
||||||||| /
|~~~_/
| )
|/
|
|
すまんな mattn。skk.vim 試してねぇわ。半年間も放置してる。
たぶん年内にはソース読めると思う。いまは別のソースに嵌まってて
>>70 WindowsユーザはUnix/Linux系の人と違って、シェル(コマンドプロンプト etc)が
あまり使われていないということ。
プログラマーの人はさすがに違うだろうけど。
けど、vimだしなぁ、、、
vimshell、使ってみたけど微妙過ぎ。
何がうれしいのか正直わからん。
vimならvim+screenのほうが断然便利だし、
gvimにしてもちょこっとしたシェル作業は:!で十分だし
長いシェル作業はmlterm+screenでやった方がいい。
だいたいvimshell上で出力された文字列を、
他のバッファでc-n c-p補完できないし、
かといってvimshellのバッファで編集作業できないみたいだし、
結局はvim+screenでいいや、と。
>>81 SHIFT-JISはJISという厳格に定義されたコードを、8ビットを使って表現できるように
したものであって、CP932はそれをベースにMSが改変したコードですから、厳密には異
なっています。また、コード変換時にどれをどこにマッピングするかは、実は完全に定
義されているわけではありません。そのため細部はiconvの実装によって異なってきま
す。
libiconvでは過去にcp932とsjisが微妙に違いました。sjis指定時には0x7eのチルダや
0x5cの円記号等が全角にコンバートされてしまうという、Windows環境では致命的な問
題がありました。現在はわかりませんが、Vimへのlibiconv導入当時はそういう事情
で、cp932にせざるを得なかったのです。またWindowsで使うということから考えても、
cp932を選択することにはvim-devへの提案として説得力がありました。
GNU libcのiconvでは、私が今までに目にした変換にまつわるトラブルを総合してみる
と、むしろcp932よりもsjisを恒常的に使ったほうが良いような感想を抱いています。
設定方法としてはfencs内のcp932をsjisに置換すればよいでしょう。
KaoriYa配布のvimrcでは、より多くのプラットホームで利用可能なlibiconvを基準とし
ていますから、cp932を使い続けているというわけです。もっとも一番良いのは既に
行っているiso-2022-jp-3の選択のように、ランタイムで判断することなのですが、手
元にGNU libc iconvが動いている環境と、テストしている時間がないのでそのままに
なってます。
>>82 詳細な解説、ありがとうございました。
勉強になります。
> GNU libcのiconvでは、私が今までに目にした変換にまつわるトラブルを総合してみる
> と、むしろcp932よりもsjisを恒常的に使ったほうが良いような感想を抱いています。
> 設定方法としてはfencs内のcp932をsjisに置換すればよいでしょう。
fencsにcp932とsjisを両方指定するのはダメなのでしょうか?
前述のheadlineの例では、fencsを
fileencodings=ucs-bom,ucs-2le,ucs-2,iso-2022-jp-3,utf-8,cp932,shift-jis
とすることで回避できています。
なにか他の理由でこれがマズいとしても、
> KaoriYa配布のvimrcでは、より多くのプラットホームで利用可能なlibiconvを基準とし
> ていますから、cp932を使い続けているというわけです。もっとも一番良いのは既に
> 行っているiso-2022-jp-3の選択のように、ランタイムで判断することなのですが、手
> 元にGNU libc iconvが動いている環境と、テストしている時間がないのでそのままに
> なってます。
私の手元にはlibiconv環境(NetBSD)とlibc iconv環境(Linux)があるので、
テスト方法のヒントぐらい示して頂ければ協力できると思います。
>>83 両方試すというのは間違っていませんが、なんか気持ち悪いですね。
# cp932とsjisどちらでも変換できるが、微妙に結果が違ってcp932のほうは好ましくな
# い。そんな例があったら、なかなか問題が判別しにくいかもしれません。もっともそ
# んなことあるのかさえ不明ですが。
> 私の手元にはlibiconv環境(NetBSD)とlibc iconv環境(Linux)があるので、
> テスト方法のヒントぐらい示して頂ければ協力できると思います。
KaoriYa付属のvimrcでiso-2022-jp-3を判定している箇所を参考にしてください。その
例ではdjがeuc-jpに変換できるかどうかで、対応の可否を判断していたと記憶してい
ます。このように特定の変換が成功するかどうかをチェックすることで、どちらを使う
か決定できます。なにかiconvの実装によって特徴的な変換パターンを見つけて貰える
と助かります。
そもそも、ちゃんとしたコード判定ルーチンと変換ルーチンをセットで作ったらどうな
んだ、という話なんですが… orz
選択した範囲を行番号をつけてコピーするのに
いい方法はないでしょうか?
>>85 cat -n で(ry とかではダメなの?
あとは、行の先頭に行番号を挿入するようなスクリプトを書くとか、、、
>>85 :%s/^/\=line(".")." "/
:%!nl
とかもある
それだと
%!cat -n
選択
コピー
アンドゥ
のような順になりますよね。
これだとコマンド作りにくいし、選択→コマンド実行
の順の方が操作しやすいなーと思ったんですが。
あるテキストファイルのうちで、
ある正規表現にマッチする部分のみを取り出すにはどうすればよいだろう?
取り出すと言っても曖昧だけど、例えば別バッファに集めるとか、
マッチしない部分を全部消去するとか(元の内容を保たなくてもよいとしよう)
例えばHTMLソース内の <a .\{-}>.\{-}</a> のみを抜き出す、とか。
なんかスレ違いすぎる話題を振っている人がいるんですが
>>89 一回検索した直後に、新規バッファに全体をコピペしてから、こんなコマンドで。
:%s//\r&\r/g
:v//d
vimですることなんだろうか
まぁKoRoN氏が答えているのでスレ違いではないという事なんだろうが
いつもはフィルターつかえとかエディタでやる事じゃないとか説教垂れるのに
どういう風の吹き回しやら・・・
vim の正規表現をつかいたいんだよ、きっと
>>92 Vimで出来る事 → 親切に教える
Vimで出来ない事 → Vimではそう言う事はしないとキレる
ま、いつもの事
> :[range]g[lobal]!/{pattern}/[cmd]
> Execute the Ex command [cmd] (default ":p") on the
> lines within [range] where {pattern} does NOT match.
なるほど... "where {pattern} does NOT match" に対する動作は
(行単位とはいえ)ちゃんと用意されてたのか。 Thx > KoRonさん
# 直接 :%s/regex/\r&\r/g → :v//d にしときます
Vimでできるんならそれでいいじゃん
>>90 >>92 別にApacheのログ集計をしようってんじゃない。
この方法が私の知りうる限りで一番手軽だからです。外部フィルタを使っても、この
要件をこれ以上手軽に満たせるならば、逆に教えていただきたいです。おねがいしま
す m(_ _)m
97 :
名無しさん@お腹いっぱい。:04/10/27 08:19:57
aaaaaaa
|
|
-aa.c
|
|
-bb.c
aa.cとbb.cが参照関係にあった場合、タグ作成して各ソースからタグジャンプって
出来ないですよね??
やる方法合ったら教えてください・・。
(タグファイルの中身見ると相対パスで記録されているようですが、絶対パスのタグを作る方法って
あるんでしょうか・・?)
>>97 --tag-relative=yes
で絶対パスのタグは作れるけど、そんなの使わなくてもできるじゃん
100 :
99:04/10/27 23:19:44
ちがう、
--tag-relative=no
だ。
vimは甘酸っぱい
grepの名前の元ネタがviって言うのは本当ですか?
Get REgular expression and Print
g/re/p
Globally Regular Expression and Print
ぶどうの中から甘い粒を検索するから
>>102 g/re/pなのは
>>104が書いてある通り。
viじゃなくてed(1)のコマンドだよ。
で、ここはvimスレだ。
くだ質スレか「viが元ネタ」だと思うならviスレで質問汁。
108 :
名無しさん@お腹いっぱい。:04/10/28 14:22:48
Shift+SpaceやCtrl+Shift+キーに機能を割り当てたいんですが、
どういうふうに記述すればいいのでしょうか?
>>108 <S-Space> とか <C-Space> って書いてください。ただしCUI端末などの、そもそも
Vimにキーコード自体が飛んでこない環境下では機能しないので注意してください。
置換で行を指定するにはどうするのですか?
次の行(n行目)から3行にわたって(n+2まで)、s/foo/bar とか。
:h :range
>>109 どうもありがとうございます。
環境がCUI(mlterm+vim)でした。
なるほど、<S-Space>で指定してもうまくいかなかったのは、
キーコードが飛んでこなかったからなのですね。
ちょっと質問させてください。
statuslineを書き換えていたのですが
%Bの部分がfencがS-JISだろうがEUCだろうがUTF-8だろうが関係なく
S-JISのキャラクタコードを返すのに気づきました。(ちなみにgaも一緒でした)
これってfencに従ったコードで返してくれる方法はないのでしょうか?教えてください。
ちなみには書き換えたものは以下の通りです。
statusline=%<%F%h%r%w%m%=%([%{&fileencoding}]%)%([%{&fileformat=='dos'?'DOS':''}]%) [%B] %c%V,%l/%L
そこはencによるコードが返ってるんで、どうしてもってゆーならiconv()とか
使ってできなくはない…のかな?
>>113 それ俺も気になってた。
是非知りたいです。>賢者
function! GetB()
let c = matchstr(getline('.'), '.', col('.') - 1)
let c = iconv(c, &enc, &fenc)
return String2Hex(c)
endfunction
" :help eval-examples
" The function Nr2Hex() returns the Hex string of a number.
func! Nr2Hex(nr)
let n = a:nr
let r = ""
while n
let r = '0123456789ABCDEF'[n % 16] . r
let n = n / 16
endwhile
return r
endfunc
" The function String2Hex() converts each character in a string to a two
" character Hex string.
func! String2Hex(str)
let out = ''
let ix = 0
while ix < strlen(a:str)
let out = out . Nr2Hex(char2nr(a:str[ix]))
let ix = ix + 1
endwhile
return out
endfunc
set statusline=%{GetB()}
>>116さん
関数まで書いていただいてありがとうございます。
%Bと入れ替えて見事にfencに応じて表示されるようになりますた!
愛用させていただきます〜
118 :
名無しさん@お腹いっぱい。:04/11/01 20:23:39
vimでC言語書いているときに、ステータスバーにカーソルの位置の関数名を
表示できますか?
taglist.vimプラグインは少し邪魔なのでステータスバーに表示させたいです。
>>118 カーソル位置の関数名を返す関数を書けばいい。
120 :
名無しさん@お腹いっぱい。:04/11/02 00:05:33
>>119 なるほどねー
で、どんなん書くんですか?
121 :
名無しさん@お腹いっぱい。:04/11/02 00:25:09
それは言わない約束でしょ。
垂直方向の f みたいなんってありますかね。
>120
taglist.vim持ってるんなら中覗いてみりゃわかるだろ
>122
/ との違いがわからんぞ
>>123 :exe '/\%' . virtcol(".") . 'v何か一文字'
みたいな。virtcol 縛り。
vimにはemacs見たいなバイトコンパイルは無いの?
プラグインちょっと入れたら遅くなってきたもので
>>120 >taglist.vim持ってるんなら中覗いてみりゃわかるだろ
わかるならここに書き込まないと思うが。
>>127 まぁでもCを書けるんだから、vimスクリプトだってやってみりゃできると言いたかったんでしょ
バイトコンパイルってどんだけ速くなるんだ?
>>126 a.vim
alice.vim
ambsearch.vim
bufexplorer.vim
calendar.vim
DirDiff.vim
genutils.vim
greputils.vim
headline.vim
movewin.vim
mru.vim
multvals.vim
openurl.vim
taglist.vim
TogFullscreen.vim
ZoomWin.vim
このほかにも環境が無いから覚えていないけどdb関係のプラグインを入れてある
あとsyntaxやindentもかなりいじっていたり
>>129 体感で10倍くらい違うかも
ちょっとちゃうやんw
>>131 この位ふつうじゃないの?
スマソ感覚がつかめんので
で、バイトコンパイル調べてみた範囲だと対応していないみたい
バージョンアップで対応する予定はないのかなぁ
かなりの部分がスクリプトで動いているから結構変わってくると思うんだけど
バイトコンパイルは 7.0 のtodoリストに入ってますね。優先順位は「7 as soon as
possible」になってるので可能性は高そうですけど、実際に盛り込まれるかどうかは
わかりません。
# もっとも7がいつリリースされるのかさえ不透明ですが
>>133 7なんて出るんですね
バイトコンパイルも実装されそうな流れだしもう少し待ってみますか
最近vim-dev読んでないけど、
やっぱりmattnさんが推してたsocket系APIは
7になっても実装されないんだろうな・・・
Windows版のVimってKoRonNさんが1人で作ってるの?
W版のvimは本家が作ってまつ。
日本語環境向けに改造してビルドして配布してるのがKoRoN氏。
ん〜yzisがqtじゃなくwxWidgetsでも使ってくれれば
Windows版も期待できたんだがなぁ
一応yzis on Windowsは予告?されてるがqtって時点で期待薄…
yzisに期待してただけにvim7待つのも複雑な気分だわ
:redir @a
:dig
:redir end
:se nowrap
"ap$jjjjjjjjjjjjjjjjjjjjjjjjjjjjj
とかすると所々改行されていない部分が出てくるんだけど
何か間違ってる?
>>139 関係ないけど
:redir END
ENDは大文字
>>130 :scriptnames でどれくらい出ますか?
もしどうしても遅いということならば、遅延ロードも効果的かとおもいます。
以下 chalice の遅延ロード方法です。
※以下は chalice に導入される可能性がありますので、もし導入された際には
ご自分で元に戻せる方、内容がわかる方しかやらないほうが良いかもしれません。
let g:chalice_path = globpath(&runtimepath, 'chalice')
let g:alice_preload = 1
function! LoadChalice(path)
exec 'set runtimepath+='.escape(a:path, ' ')
let list = glob(a:path . '/plugin/*.vim')
let list = "so " . substitute(list, "\n", "|so ", "g")
exec list
endfunction
let alice_path = chalice_path . "/plugin/alice.vim"
if g:alice_preload && filereadable(alice_path)
exec "so " . alice_path
endif
command! -nargs=0 Chalice call LoadChalice(g:chalice_path)|delfunction LoadChalice|Chalice
>>135 おそらく今後もないと思います。
vim -> なんらかのインタラプタ -> ソケット
で実現するしかありません。
この他、process 関連の API もパッチを作って送ったことは
ありますが、Bram 氏の腰は動きませんでした。w
>>141 なんかすごくトリッキーなことをしてるように見えるんですが、
単純に
command! -nargs=0 Chalice set runtimepath+=<path to chalice> | runtime! plugin/*.vim | Chalice
ぐらいで済みませんか?
>>130 遅延ロードという点ではmattnさんに賛成です。
私はこんなことしています。
command! -nargs=0 Macros :call <SID>Macros()
function! s:Macros()
let bakz=@z
let baksb=&sb
let @z=globpath(&rtp, 'macros/*.vim')
set splitbelow
new
exec "normal! i\<c-r>=@z\<Enter>\<Esc>gg"
let @z=bakz
if baksb==0
set nosb
endif
setlocal buftype=nofile
setlocal nobuflisted
setlocal bufhidden=delete
setlocal nomodifiable
nnoremap <buffer> <cr> :let f=getline(".")<bar>close<bar>exec 'source ' . f<cr>
nnoremap <buffer> <esc> :close<cr>
endfunction
なんでsocket系駄目なんだろ
明確な理由ってあるのかなぁ
howm-mode.vim と併用すると、runtime! の瞬間に howm-mode.vim がわんさか
エラーを出したので、こんな形になりました。
# runtime! の瞬間に howm-mode.vim にアクセスにいかないように...
この方法ですと、2重読み込みでエラーを出すようなスクリプトでもその配下の
plugin スクリプトのみ読んでくれます。
# まぁ silent! runtime! とすれば済む話なのですが...f(^-^;)
>>144 socket API のときは
Yasuhiro Matsumoto wrote:
> And Since libcall may break vim too, it is dangerous.
Indeed. And it's not portable. Using Python or Perl would be much more
useful.
> I think that it is required the process-communication which does not
> break a memory(etc) for vim.
> I made a patch for process_open().
> (This work on win32 and unix)
> Bram, I think it is very usefull that the starting grep in background or
> communication to gdb from a script.
> (on unix, there is gdbvim or idevim..., but win32's not)
For getting the output of an external command you can use system().
Interactive communication with a program like gdb is very complicated,
especially when you need to handle asynchronous things. Look in the
code for cscope. I certainly want to leave this out of the Vim script
language. Using Python would be appropriate.
If you want to use gdb and Vim together, have a look at Agide:
http://www.agide.org. I know it still needs more work, but it is a good
setup for further development.
>>144 process API のときは
Yasuhiro Matsumoto wrote:
> This is a patch which can use socket function on vim.
> I don't hope that this patch is include the 6.2.
> If it is possible this will be include to 6.3, i'm happy.
> Enjoy!
I think this is not something that is directly related to text editing.
You can use the Python or Perl interface instead. Or even an external
program.
For obtaining a web page we certainly don't want to use sockets
directly. There are many tools that avoid having to do the low-level
work. You can even do ":e
http://www.yahoo.com", using the netrw plugin.
といわれました。
# 下手な英語ですみません。
翻訳こんにゃくキボンヌ
:e でファイルを開くときに、migemo スタイルで開くことはできますでしょうか?
:e g/houkoku # => 「報告」で始まるファイルが候補ででてくる
のようなスタイルで。
これを実現するのは無理がありますか?
>>149 やや無理があります。
:e .
して g/ したほうが早いし楽でしょう。
>>150 普段はそうやってます。
別の方法もできないものかなと(w
久しぶりにMLで投稿があったと思ったら、
Lotus Notes か
ちゃうちゃう。
化けてる側には X-Mailer: 無かった... orz
Chaliceがインストールされていれば00581をVimに読み込んで
:call AL_decode_entityreference_with_range('%')
よ、読めるよママン…orz
>>156 な、何も起きなかったよman&woman
でも、hage.htmlで保存してブラウザにdrag&dropしたら読めたよ
でも、COBOLer(ry
MFCプログラミングで使えるvim componentって無いもんかねぇ
CEditクラスの代わりにCVimクラスをnewすると、
エディットコントロール内の編集操作がvim likeになっているというw
>>158 昔に ActiveX 内で gvim を起動するコンポーネントを vim-dev に
送ったことがあります。
# そんなに反響なかったので作業やめちゃいましたけど...
# 出した日がエープリルフールだったからかなぁ...笑
[追記]
手元にはもうソースないんで ML のキャッシュなどから探してください。
kaoriya版vimの「g/でmigemo」機能は重宝でつが、
/hogehogeとタイプしてから「ああmigemoにしたかった」と涙する場合もあるので
\cみたいな機能も欲しいなあ、と思いますた。
と書いてから、一度/hogehoge<CR>してからg/<C-P>すれば良いことに気付いたので
独り言になってしまいますたとさ。まる。
:s/<ここでヤンクしたものをペースト>/何か
のペーストってどうやってやるんですか?
>>163 <C-R>" とタイプしてください。ダブルクォートの代わりに a-z や数字もしくは *
を指定すれば :regで示されるものを入力することができます。
>>163,
>>164 私はたまに、/ で検索しておいてヒットすることを確認してから、
:%s/ のあと、<C-R>=@/ として実行したりします。
# 私、臆病物ですから・・・w
>>165-166 自分の場合 * でカーソルの下を拾って :%s// で省略して置換って言うのを多用しま
す。複雑な置換の場合、/で正規表現を組み立ててから、やっぱり省略して
:%s//{置換パターン}/g
度胸を胸に一発勝負です。
# undoあるから度胸関係ないけど
私はファイルのバックアップをとります。
自分もまったくKoRoN氏と同じやり方だなぁ
* もしくは g* で拾うのが一番効率的
でいつでにクオートテキストオブジェクトで気付いた点を
vi"などで"で囲まれた文字列を選択するのは問題ないんだけど
vのあとある程度hlなどで動いてからi"で選択できることに気付いてi"をした時にちゃんと選択出来ない
ほかのテキストオブジェクト(bB[<)などは出来るのでこちらも対応して欲しいかな
あとよく使うテキストオブジェクトには ( が b、{ が B などタイプしやすいキーも使えるんで
出来れば、クオートテキストオブジェクトの " にも d など使いやすいキーを割り当てて貰いたかったり
>>169 > ほかのテキストオブジェクト(bB[<)などは出来るのでこちらも対応して欲しいかな
基本的に使いオブジェクトの判定ルーチンが使いまわされるようになっているはずな
ので、なんでできてないのか不明ですが、時間ができたら調べましょう。
> あとよく使うテキストオブジェクトには ( が b、{ が B などタイプしやすいキーも使えるんで
> 出来れば、クオートテキストオブジェクトの " にも d など使いやすいキーを割り当てて貰いたかったり
変えたり追加するのは簡単ですが不可。Vim7で正式に取り込まれる予定なので、その
時にキーバインドが変わって ヽ(`Д´)ノ ウワァァン っていうのを防ぐためです。
ところでmattnさん、im_customの開発もうやめちゃったんですか?
Debian3.1のvimをインストールしたら拡張子別の色分けとか:tutorialとかがさっぱりないんですが、
香り屋神謹製のWindows用vimについてるファイルをまるごとコピーしたらそのまま使えますか?
>>172 対象となるVimが必要なオプションでコンパイルされていて、正しいディレクトリへコ
ピーできれば動きますけど、ここで聞くってことは恐らくそういうことはご存じないの
でしょう。
# わかっているならば、聞く前にとっととコピーして動かせちゃいますから。
現在の状態からコピーする方法を説明したり習得するよりは、vim.orgからソースコー
ド一式を入手して、香り屋版のUNIX用差分ファイルを併用して、コンパイルしてしまう
のが一番手っ取り早い気がします。コンパイル方法は香り屋版同梱のREAME_j.txtに書
いてありますので参考にしてください。
>>170 うーん、キー割り当て駄目ですか
はやくVim7が出る事を祈りつつ、胡散臭いmapで逃げるとしますか
nnoremap cid ci" とかw
>>173 文法と色分けはシンタックス(S)からできて、設定のファイルはウィンドウズ版香り屋vimのruntime以下とだいたい同じ物が/usr/share/vim/vim63にありました。
localにコピーせずにうっかり上のディレクトリにwin版のを上書きしましたが:tutorialが使えるようになったので個人的には超満足です。
ABrowser バージョンアップしたみたいだけどあんなの要らないよ
それよりlessみたいにファイルの一部分だけ読むようにしてくれ
あと/でダイアログ出るのもタルイ
こんなショボさじゃ誰も使わんよ
これまた香ばしいですね。
koron乙
確かにあれならメモ帳でいいな
>>174 vnoremap id i"
onoremap id i"
とかじゃ駄目なんですか?
Abrowser編集できるようにしてくれ
キーバインドはvi風で
色分けだけはvim互換ならメモ帳リプレイスメント最強
編集(゚听)イラネ
それより操作をless互換にしてくれ
>>171 最近忙しくなかなか時間が取れていません。申し訳ないです。
vim 関連の作業としては、kvim の i18n まわりをやっているのですが、
この辺りが落ち着くまでは im_custom の作業はないと思います。
vim で年賀状書けますか?
185 :
viキーの功罪 ◆Vim6/xykh2 :04/11/15 19:20:18
vi に慣れるのは大変だ。しかし、いったん慣れてしまうと、
安楽なキー操作で、すばやい編集ができる。
ところが、vi キーに慣れすぎると弊害も出てくる。
他のソフトウェアでも、その vi キーマップを押し通そうとする。
テキストインターフェースのソフトウェアに出会うと、
vi 風のキーマップにするために、労力を使うことになる。
オレはつい最近、w3m のキー設定ファイルに、
># w3mのコマンドを実行します
>keymap : COMMAND
と、書いてみた。"超きもちいい" って思った。
そこで、w3m のキーマップを、根本から見直そうと思って悪戦苦闘した。
たいした満足感も得られずに、疲労感だけが残った。
このような徒労は、繰り返し行っている。_| ̄|○ トホホ
"他のソフトのキーマップを、完全に vi キー風にすることはできない"
と分かっているくせに、なるべく vi キーに近づけようと繰り返しムダ骨を折る。
もう病気だ。 "vi キー中毒" だ。
vi, mutt, w3m 等々を縦横無尽に使いこなすのは大変だなと思った。
vim 以外は、GUI ソフトにした方がストレスが少ないと思う。
あなたは、vi キーのために、どれだけの労力と時間を費やしましたか。
mutt の vi キーライクは私もやりました ... orz
>>187 でもサ、俺たちがviをイジるのってバイクいじりみたいでかわいいもんさ。
.emacsを一日中イジッテイル人たちはマンション購入して一生懸命快適に暮らそうとしているみたいな。
screen使いがGUIアプリでSelect Allを多発するのも結構深刻。
>>187 おれはマンションの中でバイク乗り回してるアホです。
>>185 ぜひmutt w3mのキーマップを公開してくだされ。
>>185 VS.NETのエディタをなんとかできないか、1時間近く格闘したことがあります orz
>>193 いまもVisVimNET2003使ってる?
>>192 muttのviライクなキーマップならmuttスレにリンクあるよん。
w3mはむしろlessライクな今のままのキーマップが好き。
別に何でもかんでもviのキーバインドにしようとは思わない。
# シェルだって bindkey -e だし、適材適所ってもんがある
im customnのSKK入力の際、SKK 辞書でコメント ; が書かれているエントリを入力すると
変換の際にそのコメントも一緒に入力されるバグは直ってますか?
結構昔のim custom を使っているから、もう直ってる可能性は非常に高いのですが。
.unannotated つーのを使うあるね
IMEがonの時だけ、こうimapする、みたいな設定はできますか?
>>183 応援しています。最近はググってもim_customが結構ひっかかるようになってきて
「有名になってきてる」と実感していマス。
201 :
名無しさん@お腹いっぱい。:04/11/18 14:38:34
vim のノーマルモードのコマンドの統計をとる方法ってないですか?
どのコマンドが使用頻度が高いのか調べるとおもしろいかなと思いまして。
やっとhjkl移動を覚えた vi 勉強中の後輩にアドバイスするのに、
使用頻度の高いものから覚えさせようと思いまして。
#結構ひとによって違うかな。
#やっぱり一番は 右移動 l ですか?
スクリプトじゃ無理ですよね?
ソースのこの変読めばいいよってのアドバイスください。
全コマンドに、カウント取るマップを貼り付けてみたらどう。
:nnoremap l :call <SNR>CountKey("l")<CR>l
>>195 >別に何でもかんでもviのキーバインドにしようとは思わない。
それは viキー中毒者ではない。
健全な精神の持ち主で、うらやましい。
気づいたときには、既に徒労を繰り返していた。
というのが vi キー中毒者。
「ちっ、またやっちまった」
>>201 _viminfoでコマンドラインモードはある程度わかると思うけど、ノーマルモードだと
vim本体に手を加えないと難しいのではないかと思う。
vi キー中毒者に癒しを。
emacs なら C-[ x viper-mode
eclipse なら eclipse --inputmode vi
標準で vi キーが用意されているソフトウェアの一覧ありますか。
>>201 > #結構ひとによって違うかな。
> #やっぱり一番は 右移動 l ですか?
俺は明らかにjが多い。ノートPCなんだが、jキーだけフニャフニャして
異様にツルツルしてる
プログラム書いてるときは/foo,?bar,*,#,w,e,b,0,$,G,ggを多用してます
移動というかジャンプですね
ところで、エキスプローラ(:Exp)はデフォルトなのになんで
バッファエキスプローラ(\be)はデフォルトじゃないんだろ?
207 :
名無しさん@お腹いっぱい。:04/11/19 00:55:36
最近、Texを始めました。そこで質問。
vi(vim)で日本語入力するには、初期設定ファイル( .exrc )
に何て書けばいいのでしょうか?
cygwin上で使用しています。
分かる方いれば、よろしくお願いします。
209 :
名無しさん@お腹いっぱい。:04/11/19 01:28:25
>>208 unix系のEditorは、vi(vim)しか使えません。
普段は、プログラム言語を書いているためです。
emacsじゃないと、日本語は入力できないのでしょうか?
>>206 % も結構使わないか? () だけじゃなく #if の上とかでも。
昔は >% なんてやってたが、いまじゃ =%。
>>210 それ本当に便利だよね。
runtime/indent/foo.vim が定義されていると、なんでも使えるし。
>>212 古い上に正しくない情報を広めるのはやめてもらえないか。
>>207 DOSプロンプトとコマンドプロンプトを捨てて、
cygterm/telnet/ssh + teraterm/putty のいずれかに
移行すべし。
>>205 eclipse --inputmode vi
はどのバージョンから使えるんですか?
2.1.2だとだめだった。
Vim ユーザーは、英和,和英,国語,漢和辞書を引くとき、
どうしているのでしょうか?
もちろん指でページをめくります。
紙でないのも引きたいしとには、
過去ログをあさるといろいろ出てるよ。
218 :
名無しさん@お腹いっぱい。:04/11/20 12:48:42
少しお力を貸していただきたいのですが
<td>Bj52樟</td>と記述してある箇所があるとして
これを<td><font color="blue">52樟</font></td>としたいのですが
方法はありますのでしょうか?
:1,$s/Bj/<font color="blue">/g 見たいな感じででいけるだろうという安易な考えでうってしまったため
数千にわたる箇所を修正しなくてはいけなくなってしまいました
すいませんが このようなことをする方法を教えていただけないでしょうか?
すいません よろしくお願いしたします
:からのコマンドをテキストファイルに書いといて
それをいっきに実行するってできる?
vim -s xxx
>>221 ごめん あんがと
そいうことじゃなくて
vimで編集中にやりたいんだよ
おしえちくり
>>222 スクリプトでは?
:source hoge.vim
>>222 コロンコマンドが描いてある行で(もちろん:も含めて描いてある)
"ayy@a
開いているファイル中の
1 改行コードCRLF を LFに置換
2 <br> など を <br>とLFに置換
ってどうやるんでしょうか。
:s//g で改行コードの指定法がわからん。
>>225 1 :set ff=unix
2 :%s/<br>/<br>\r/g
で、どう?
嘘つき
228 :
名無しさん@お腹いっぱい。:04/11/21 20:05:50
vimが終了しません。
コマンドモードでq!を打っても
wqと打っても
ZZと打っても
終了しません。
ヘルプミー
>>228 CapsLock が効いてる、に 20ガバス
つーか環境も一切書かないその質問じゃ誰もまともに答えないと思う
ざっくりkillか、プロセスの終了して、
また、その現象が起きるようなら、クリーンな環境にしちゃうのがいいと思う。
原因わかっちゃいました〜。
":"を打ち忘れてました。
自己解決したオレって天才なのかもしれません。
>>233 ZZで終了するのに:は不要と釣られてみるテスト
:%s/^M$//
^M は Ctrl-V Ctrl-M とタイプイン
239 :
名無しさん@お腹いっぱい。:04/11/22 02:03:34
選択範囲を印刷しようとして、
:'<,'>hardcopy
したら E613 エラーになりました。printfont がダメです。
gvimrc:174: set printfont=MS_Mincho:h12:cSHIFTJIS
昔は、
set printfont=MS_明朝:h12:cSHIFTJIS
だったのに。こっちにしたら印刷できました。
いったんクローズしたファイルをまたオープンしたときに、前回と同じ場所(行)で
開くようにするにはどうしたらいいのですか?
>>240 faq
vimrc_example.vim
Windows Me です。
>>219 すいません
ありがとうございました
たまに アクセス規制中だといわれて書き込めなくなるんですよ
遅くなってすいませんでした
ほんとにありがとうございました
あるファイルをvimで編集して、何回か:wしていると、最初のうちは問題ないが、後から、
既にこのファイルが書き換わってるけど本当に保存するのって
出るのですが、一人でしか作業してないのでどう考えても書き換わってるはずはないんですね。
このvimのファイルが書き換わっているかどうかはどこで判定しているのでしょうか?
最終変更時間でしょうか?
多分、原因というか一番怪しいのは、そのファイルが置いてある場所が他のマシンからsmbfsされているディレクトリなのです。
編集している環境はWindows上です。
予想するに、いったんファイルが書き込まれたらsmbfsが、そのファイルのatimeを更新するから
vimがそれに反応するのかなーとか適当に思ってるのですが、smbfsはnoatimeがきかないので
にっちもさっちもいかず・・・。
かなりマイナーな例ですが識者の方いたらアドヴァイスお願いします。
:w!
で解決ですよ!!
>>245 > 最終変更時間でしょうか?
stat->st_mtimeを見てますね。src/fileio.cのcheck_mtime()です。恐らくサーバの
時計がいくらか進んでいるのではないでしょうか?。
私ならntpを使って、sambaが動いている計算機の時計に、ローカルのそれをあわせる
ようにします。
winのgvim6.3を使ってます
Sambaで共有しているネットワークドライブ上のファイルを編集保存すると
4913みたいな数字のファイル名で空ファイルが同じディレクトリに読みとり専用で勝手に作られます
ローカルのファイルを編集保存してもそのような事は起こりません
Sambaでwritable=yesにしてあるので読み書きには問題ないはずなのですが…
ファイルを保存するときに丸文字を使っているので
fenc=euc-jp
を使用するとエラーになります。
fenc=euc-jisx0213
を使用すれば問題ないのですが、いちいちeuc-jisx0213って打つのが面倒です・・・。
以前(Vim6.2の頃までだったと思う)は、
fenc=euc-jp
で保存しても自動的に
fenc=euc-jisx0213
になったと思うのですが、最近のバージョンではそうしなくなったのでしょうか?6.3を使ってます。
また、ファイルエンコーディング名にエイリアスみたいなものは付けられるでしょうか?
たとえば、fenc=euc-jpでfenc=euc-jisx0213を意味するようにとか。
>>249 > fenc=euc-jpで保存しても自動的にfenc=euc-jisx0213になったと思うのですが、
過去にそのような動作だったことは一度もありません。何か別の機能と勘違いされて
いるのでしょう。またエンコード名にエイリアスを付けることはできません。キータ
イプが面倒ならば短い名前のコマンドを定義してしまうのが良いでしょう。
:command! AsEuc :setlocal fenc=euc-jisx0213
ft=cで
#include <stdio.h>
この行を>>でインデントできないのは何かの罠?
252 :
名無しさん@お腹いっぱい。:04/11/24 23:56:38
hoge.cとかでファイルを編集していると
int main( void){<RET>
ココ
↑ココにインデント?されてしまいます
1時的にインデントを無効にするにはどうしたらいいのでしょうか?
:set noautoindent
では できませんでした
:set nocindent
>>253 ありがとうございました
noc
と指定しなくてはいけないんですね
ddやx等の操作をヤンクに貯めないで行うことはできないのでしょうか?
xはviモードで<BS>で可能なのですが1文字削除するのにviモードに移動するのがめんどくさいです
ブラックホールに抛り込め
ありがとうございます
コマンドとしては用意されてないんですね
今までもブラックホールかちょっと間なに消したか保存したいときは
ラストサーチに入れたりしてたのです
どもでした
259 :
名無しさん@お腹いっぱい。:04/11/25 15:42:44
:dis で表示したレジスタ一覧からのペーストって簡単にできないのでしょうか?
:dis で表示し確認してEnter押して"xpとかするのは、
めんどくさく、またペースト時には表示が消えてしまうので、
ときたま間違ったレジスタの内容をペーストしてしまったりするので、、、
>>259 釣りか?
1文字も数秒間覚えてられないやつなんていないだろ
>>259 "1p した後に u と . を目的のが出るまで繰り返す
>>261 すっげ
なんでかわんの?
おしえちくり
すいません
レジスタの話になっているので便乗質問なのですが
レジスタの中身をはきしたい場合はどのようにすればいいのでしょうか?
例えば "/レジスタに入っていると強調表示されるので
たまに邪魔になります こういったときなどに破棄したいのです
すいませんが 教えてくださいお願いします
:noh
>>264 ありがとうございます
確かにハイライトを消せばいい話なのですけど・・
レジスタの中身を破棄することってできないんですかね?
終了するときに破棄するなら
:set viminfo='0,\"0,/0,:0
とか。
~/.viminfo に保存しないだけの話だが。
let @{a-zA-Z...} = ""
ex:
let @0=""
>>259 :disの後、:insertとかどう?
<c-r>xとかで結果を見ながら入力できる。
めんどくささは消えないが。
.oh
.ph
.qh
.rh
.sh
.th
.uh
.sh
.vh
一番上から'{'で移動するとなぜか.shで止まる。なぜ???
272 :
259:04/11/26 11:34:30
みなさんどうもありがとうございます。
>>270 でのやりかたがいちばん自分ではやりやすそうです。
しかしいろいろ試していたら
:disを押してからレジスターの内容一覧が表示されて
数秒固まってしまうようになってしまいました...
>>272 その固まるときの
解決策教えて欲しい?
やだ
solarisの/bin/viとnviとjvimでも.shで止まった。
.shはroffの節だから'{', '}'の移動で止まるようだ。
>>259 :dis|let @" = getreg(nr2char(getchar()))
279 :
名無しさん@お腹いっぱい。:04/11/27 20:37:16
Vimのコマンドにエイリアスってかけれないの?
例えば 3dd"+pとかをなんか別名つけたいのよ
mapで何か都合悪いの?
作るコマンドが頭大文字固定なのがムカつくな
そんな糞みたいなルール外してくれ
mapはだめ
285 :
名無しさん@お腹いっぱい。:04/11/28 02:43:03
286 :
名無しさん@お腹いっぱい。:04/11/29 23:08:14
やだよ〜ん
287 :
名無しさん@お腹いっぱい。:04/12/01 03:23:40
インデントなど全てのオプションを向こうにしたいのですが
どうしたらいいのでしょうか?
すいませんが教えてください
nvi でも使った方がいいと思う。
# rm -f ~/.vimrc ~/.gvimrc
# rm -rf /usr/share/vim
(´-`).。oO(面白いと思ってウキウキで書いているんだろうなぁ・・・
# rm -f 293
>>287 その「全てのオプションを向こう(無効)にしたい」というのがあまりに漠然とし過ぎ
ていて、どんな回答をしても条件を満たせそうにないのですが、とりあえず
vim -u NONE -U NONE --noplugin
で起動してください。これが素の状態です。あとは :help options を読みながらコ
ツコツ設定して行くのが良いでしょう。
foo bar
カーソルはfの上。
dwやywでは'b'の前のspace文字まで含むのに、cwだとspaceが含まれないのはナゼ?
wコマンドの定義(次の単語の先頭文字へ移動)と違う気が。
ceでこの上記のような動作になるなら納得できるんだが。
:h cw
なんかsystem関数の出力先の問題でfilterとかうまく動かないんですけど
だれかうまく動かす方法教えてもらえませんか?
:r!grep aho *
とかすると
grep aho * >c:\Documents and Settings\hoge\VIO.tmp 2>&1
を実行するみたいなんですけど、出力結果は
c:\Documents
に出力されて、VIO.tmpは空だとか言われます。
元々はDOCUME~1だったような気がするんだけど、なんで短い名前を使わなくなったんだろ。。。
>>298 環境変数 TMPかTEMPがc:\Documents and Settings\hoge\になってない?
たぶん ディレクトリ名にスペース使ってるからエラーになると思われ
>299
ありがとう
今日PC立ち上げてみたらTEMPもTMPもDOCUME~1表記になってて
grepも無事できました。
多分、TMPかTEMPがc:\Documents and Settings\hogeになってたんだろうけど
今となっては何故なのか不明です。。。
se wrapの状態で右に1カラム空いた状態でコントロール文字(例:^A)を打ち込むと
^とAが分かれて表示されてしまいます。
しかし、カーソル位置は^Aが全て次の行に表示されているかのような位置にいます。
これは仕様ですが?バグですか?ウチの環境のせいですか?
どうすればカレント行の色を変えたりアンダーラインを付けることが出来ますか?
>>301 バグだな。そのあとさらに続けて文字を入力するとカーソル位置が
1つ進んでしまう。
304 :
名無しさん@お腹いっぱい。:04/12/10 05:21:32
質問させてください
現在テキストファイルに
[hoge]
hogehoge
[hoge2]
hogehoge
と、言う記述が2000行くらいあるのですが見難い為、2行おきづつ改行したいのですがどうするのでしょうか?
[hoge]
hogehoge
[hoge2]
hogehoge
上の例で言うとこういうことをしたいです
おしえてくださいお願いします
説明に少し追記です
[hoge]
hogehoge
となっていると書きましたが
[]がないところもあるので
[^\[]じゃできません
ですので 2行おきに改行と言う方法しかないと思います
スイマセンがよろしくお願いします
Vimにキーボードマクロなどのマクロってないの?
perl とか awk とか sed でやるのが簡単だと思う。
スクリプト摺れで聞いてみな。
スクリプト(フィルタね)が完成したら、カレントディレクトリにおいといて、
%!./そのスクリプト
でできる。
>>307 ありがとうございます
やっぱりVimのコマンドではできないのですね
私は今 とりあえず応急的に
catで行番号をつけて それが2で割り切れる行末にマークをつけて
それをVimで改行に置き換えました
sedでそいうことってできるのかなぁ・・ 勉強が足りないな私は・・
awkは使えないのです・・
:%s/^\(.*\):/[\1]\ /
とかをやったとき
最後の":"に引っかかってしまうのですけど
1個目の":"に引っ掛けるにはどうしたらいいのですか?
:%s/^\([^:]*\):/[\1]\ /
>>308 2行置きに改行を入れる行動をレジスタに登録して、後は@で再生させればヨクネ?
>>304 いろいろ試してみたよ、
:%s/\n.*\n/&^M/
:g/\n^/s//^M^M/
結果、短かったのはこの2つ(うまいことに偶数切りと奇数切り)
なぜか
:%s/\n^/^M^M/
では、うまくいかなかった
gも奥が深いなー
^Mは制御文字でおねがい
>>309 最小マッチって手もある
:%s/^\(.\{-}\):/[\1]\ /
なんかAAみたいだな
>>304 :g/./+1 normal o
なんかどうでしょ?
ところでステータスラインにバッファリストを表示させて
Ctrl-Tabで移動させるのを考えてるんですけど
Ctrlを押したときにイベントを検知するような方法って
あるんでしょうか?(これでステータスラインの表示を切り替えたい)
:h auではなさそうなのでないのかなぁ
>>316 gvim ですか? vim じゃ無理だと思う。
>>316 :set wildmenu
:set wildmode=full
にして、
:b <TAB>
なんてどうだろう。それっぽい動きじゃない?
>>317 gvimです。
>>318 補完はフルパスでなくファイル名でしてくれるようなのでいいんですが、
ディレクトリが深すぎて表示しないこともあったりしてしまいます。
これだと、ほとんど一個ずつしか出ないのでリストした方がよさそうです。
スクリプト作ってみます。表示はステータスラインよりコマンドラインのがいいかなあ。。
これとは別に:eするときは、
:set wildmode=longest,list
がお気に入りになりました。情報Thx
:%s/[A-Z]/[a-z]/g
では、大文字を小文字に変えれません
どうすればいいのでしょうか?
321 :
名無しさん@お腹いっぱい。:04/12/12 20:50:22
:%s/[A-Z]/\L&/g
sedとかでいうyにあたる機能は標準で欲しいなあ。
325 :
名無しさん@お腹いっぱい。:04/12/13 14:09:05
Vimの画面を分割することはできたのですが
一旦分割した画面を上下の移動だけではなく 左右には移動できないのでしょうか?
また 画面を2x2の4等分にしたときに左の列を右側に増やす方法がわかりません
すいませんがおしえてください
:h usr_08.txt
現在のバッファ中から文字検索を開始して
現在のバッファを検索終了したら次のバッファと
全バッファ検索したいのですがどのようなコマンドを
使えばいいのでしょうか?
現在は以下のコマンドを使用しています。
:bufdo %s/test//gce
このコマンドだと途中でキャンセルするとまた最初から
検索が始まるのが不満です。
常に現在のバッファから次、次と検索してループしたら
終了するようなコマンドはないでしょうか?
while とかでなんとか
WindowsXPでgVim6.3を使ってみたのですが、まだまだ慣れないものの柔軟性が高くてなかなか面白くてはまってます。
そこで、VisualStudioやらC++Builder等では一般的な、WinHelpやHtmlHelpの状況依存ヘルプを
gVimでも使えるようにする設定やスクリプト等はすでにありますでしょうか?
ググってみたのですが全然当たらず・・・
>>330 コンソールでWinHelpを引けるプログラムがあれば 'keywordprg' に設定して、かな
りウハウハできるとは思うんですが、考えただけで探したことはありません。是非探
してみてください。
# 欲を言えばC#やjavaのドキュメントが引けたら素晴らしいですよね。
gvimを使っています。
_gvimrcで :syntax on してもシンタックスとして扱われない場合の設定法を教えてください。
.SRC拡張子のファイルをアセンブルソースファイルとしてカラーで表示したいです。
>>332 :au BufNewFile,BufRead *.SRC setf asm
はどう?
>>330 こんなのではダメですか?
function! Win32Help(topic)
let fname = 'C:\path\to\help\file.help'
if fnamemodify(fname,":e")=="chm"
silent! execute "!start keyhh -\\#klink " . a:topic . " " . fname
elseif fnamemodify(fname,":e")=="hlp"
silent! execute "!start winhlp32 -k " . a:topic . " " . fname
endif
endfunction
command! -nargs=1 Win32Help call Win32Help(<f-args>)
nmap <S-F1> :call Win32Help(expand('<cword>'))<CR>
>>333 禿げあがるほど出来ました!
ありがとっすっ!
>>331 keywordprgでググって学びました。便利だなぁ…。
そこでググりつつハッ!! と思いついて、Win32のAPIを辞書として引けるように写した人とかも探してしまいましたが
そういう人も居ないようでした…orz
>>334 キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
さっそく使わせて貰いました。
ありがとうございます。
>>336 私は、この fname に API32WH.hlp を設定して使ってます。
gentooを使ってるんですが、uimを0.4.5-r1( uim-fep -v がrev1650になる)にあげたら
uim-fepとの連携ができなくなってしまいました。
で、確認したら、いままでは uim-fep-*-*-setmode に
0 -- 直接入力 1 -- ひらがな
だったのが
0 -- ひらがな 1 -- カタカナ
2 -- 半角カタカナ 3 -- 直接入力
4 -- 全角英数
になったみたい。
ということでkaoriyaパッチの上からさらに当ててそこを修正するパッチを作ってみたんですが、
よかったら使ってみてください。
取りあえずうちの環境ではよく動いてます。
vim-6.3.030 + kaoriya.diffの6.3.030用パッチ + 下記パッチという順番です。
uimfep-multistat.patch.bz2
==
QlpoOTFBWSZTWbHOaWQAAqvfgGAwf///+u/v3kT/79+uUAPr2CYtNsatsQlNJNFP
CE2qfoU8SPU8UNM9SNAYg0aaeUD0JvVBJINTTQEao9I9Roeo0AAaMQ0AAABxkyaM
Q00MBNDE0aZMQMjCaNNMIMmOMmTRiGmhgJoYmjTJiBkYTRpphBkwkUmgT0jTRMKP
RN6ptQaaaD0IaA0NGmh6RosIjBXh2n0STtINpPKrGV3VJBod8I7333pJn4FsmjGW
iMpDSp6OTCbjAw12alIfCCoZOr8q+quWYBzUhgAzBlnbbigjBjWRG29cdCJTT97E
jgNnZqMvC+G23jc9OkbZ1323WYvYmLFOMnL/ocaZMVEt4fMHqKqJnMr9ufOLUS3K
vkqSemDwoIds5O2HuOEkKFiImC/r0JJa50lTvtyVnEXtyMHAh5ucc0XsctUO6on/
2d8zHNkdt3FjMssTIJIFra2B7UXv2UYmSky46yD1O3uMHVvxkJSvVGladE0eX9bT
8yz00rI75yp8hWGcZszIEyBwTVJPUtiNny6Jug9FYcQmpTiqFAWsGjx8Zd6eZU4w
7A1wbbb4hcho0YeHg4qRjGMeJBo0qk0xOETLPWa4CnKx3iLZiK1EH8N0+ftYUqcJ
ecFbtDG0UXyYDjFOQsHvRIsFdQzwGd8IQhS2E3q1MdTQhEULYVVKDhMetWZmuyVi
mmwRIWotIg7zYTsFTKohKAXWlpJEnYrw0jTdhJ4nM47+A+LSYSEkm5wZDaRljQku
w425QdLrZrXJS3Z/DqD8TEAP0HL66uZcoSax2lkaypHXLbtSocxt3FRky7aQGBPU
BBEbo48NbtC5hWGYp59ww4EYVUFhiDa1BRy0mF+bDGO2doXKTv4uQiZPoNqxiiCk
CsJzm6BuhCTG0ZQPjq7JrLhumBhV3eN0yDXM1QHv/dwexZEN3Av50C6ce8BcSDNW
wZ2n2SXUwKiurkZMtisXAj5/eCMLR0jdJQRi4wgzOGUIBoopCIRXKMLF3S/t2xcs
iQMvTLMYm7EaAHWagJz9w0DfSUFG81gWCpH691DldzFoXRU990zhRbeHXMWE4oC3
lpXPLEPPjFOqwMAt3fBjJLAB5izqVkjYN18giKgtETP9hsTX6JcAMzNfmpd3FO4k
6cQknIf2ITiKhHnID4R2cWcCkZAPE0oy1G6kjOrhF1pWK/XeSoYNDCWE8pESRZvg
phMNpVUKCmN01DVWDHbuFgpWW73MlEFQ0PsRZhyatRHMdhkG9RRA1hBxxyaxiSFo
DzQwSYkVtWBj/MuhbYwLc24v6wagjg1LRluWUKJMxDJheWYmLQc/9gtc3/F3JFOF
CQsc5pZA
>>338 あらまあ。本当ですね。知りませんでした。聞いてみます。
>>338 パッチをありがとうございます。
0が直接入力でなくなってしまったことがVimにとっては問題のようですね。なんで変
わってしまったのかが非常に気になります。もしかしたらuim-fepはモードの値を素通
しで、バックボーンで動いているAnthyに変更があったかもしれませんね。
他のアプリケーションとの連携に使う、いわばAPIの仕様が簡単に変わるようならば、
KaoriYa版のuim-fep(Anthy)のサポートコードは、残念ですが外すことも検討せざるを
得ないと考えています。
342 :
名無しさん@お腹いっぱい。:04/12/20 11:47:16
Windows版gvimの多重起動を禁止する
(=起動しようとすると新しいバッファで開く)
ことってできますか?
>>342 gvim --remote-silent [ファイル名]
でご希望の動作になるかと思います。
>>341 いま手元で再度調べてみたんですが、KoRoNさんのおっしゃるように、
uim-fep側ではなく、anthy側の仕様変更のようです。
uim-fep -u m17n-ja-anthy # anthy-m17n-libを使用
だと 0でoff 1でon になってるみたいです。
ですので、私のパッチも単純には当てられない模様です。
# むしろ私パッチを当てなければ普通に使えるはずです。
uim-fepの作者様がanthy-dev MLで回避策を聞いてくださってる模様ですので、
uim-fep+anthy+私パッチ を使いつつ注意を払ってもうしばらく様子を見ようと思います。。。
>>345 ありがとうございます。
UIMの仕様がどうなっているかはわかりませんが、modeで指定する値がバックボーンの
変換エンジンに依存するならば、直接入力やカナ、そして「かな」など意味と対応した
値を取得できるような口が必要なんでしょうね。もっとも依存しないようにUIMでしっ
かり定義しちゃうほうが、アプリケーションを書く立場からすれば楽ですよね(苦笑
うーん、cmigemo1.3コンパイルしてみたんだけどなんか検索出来ない文字が
環境はwindows2000 + vc6
例えばcmigemoのreadmeをso-suで検索してソースに引っかからない
検索パターンはこんなのが吐かれる
1.2
(so-su|so−su|そーす|ソース)
1.3c
(so-su|so−su|そーす|ソー(す|ス(煮|炒め))|ソーす)
辞書のせいかなぁ
>>347 明らかに1.3cとして示されたパターンはおかしいですね。使ってる辞書にも問題があ
るかもしれませんが、とりあえずCVS使って1.3eを試してください。
# あくまでも1.3は開発版、ということで。
>>349 そんなスレがあったんですね
だけど、会社じゃないとコンパイル出来ない、会社だとポート規制でcvs使えない、なのでちと時間掛るかも
確認出来たらそっちのスレに報告しに行きます
引用レベル毎に色を変えてある程度のレベルに達したら元の色の繰り返し、ってできます?
> 1段目 ← 1段目の色
>> 2段目 ← 2段目の色
>>> 3段目 ← 3段目の色
>>>> 4段目 ← 1段目の色に戻る
以降1〜3段目の色の繰り返し
help :syn-matchgroupを見ると、例として()の入れ子なら色を変えられる事がわかったが
それを引用レベルに適用しようとして色々と試行錯誤したけど断念しました orz
何か方法があったら教えて下さい
>>351 ^\(>>>\)*>
^\(>>>\)*>>
^\(>>>\)\+
この3つのパターンで別々にsyntax matchを定義すれば良いのでは?
>>352 それだと4段目以降がうまく行かないっぽいです・・・
^\(>>>\)\+ しか有効になってないみたいで上の2つは無視されてる
わざわざトリッキーなことしなくても10こくらい定義しとけば足りるんじゃない?
>>353 :syntax match DiffAdd /^\(>>>\)*>\([^>]\|$\)/
:syntax match DiffChange /^\(>>>\)*>>\([^>]\|$\)/
:syntax match DiffDelete /^\(>>>\)\+\([^>]\|$\)/
355補足: [^>] を [^>].* にすれば行全体になります。
今度こそ上手く行きますた。
dクス!
Emacs で multi-tty というのがあるそうなんですが、
似たようなことできないでしょうかね?
ある一つの vim プロセスを、複数の端末から attach する、
みたいなことができるとかなり嬉しいのですが。
>>359 やっぱダメですか……。
screen は vim のプロセスとしては別になってしまうと思うので意味無いのです。
>>360 > screen は vim のプロセスとしては別になってしまうと思うので意味無いのです。
ならんよ。
vimのプロセスは一つで、vimから見て一つの端末(screenの作った端末)に接続されている。
その端末の画面に他の複数の端末からアクセスできるのがscreenというもの。
>>362 すいません、
>>359 さんの回答の意味を取り違えていました。
普段 screen 使っていますので、それは了解しました。
で、できると嬉しいと思っていたのは、たとえば、
ある一つの vim プロセスの別のウィンドウをそれぞれ別の端末から操作したい、
というようなことです。
さすがにそれは難しいかなあと理解しつつ、もしやと思い質問してみた次第です。
そんなんはアプリの仕事ちゃうやん
vncでもなんでも使えばええねん
>>363 gvim を外部から操作するのであれば --remote-expr や --remote-send である程度は操作できます。
端末上(vim)では実装されていませんが...
>>364 vncってscreenといっしょでは。
> ある一つの vim プロセスの別のウィンドウをそれぞれ別の端末から操作したい、
は、多分(複数の人が)「同時に」操作したいのだと思う。
カーソルもウィンドウ毎に存在するような状態で。
vncやscreenでは交互にしか操作できない。
<C-[>使いまくってたら右手が腱鞘炎になりそう。
ESCは遠すぎて論外だし、<C-C>も使いづらい。
バインドしたら他のマシン使うときに不便。
Emacsは左手が腱鞘炎になりそうだし、どうしたらいいですか?
廃業しろ
>>369 どんなキーボードがお勧めですか?
今は普通の英語キーボードでcaps->ctrl
>>367 日本語の変換キー(Spaceの横にあるやつ)にESCをわりあてる。
>>371 それは便利なんだけど、癖がつくと他のマシン使うときに苦労しません?
実際みんなはどうやってます?
普通に<C-[>か
>>372の方法かな?
371じゃないけど俺も入れ換えてる.
他のマシンでは普通のESC.
逆にいつもESCやC-[を使ってる人って苦痛じゃないのかな?
どう考えても押しづらいだろ.
>>373 ヒロシです...
俺のキーボードは Ctrl が遠すぎて、小指がつりそうです。
c-[は押しやすい。
ヒロシです...
俺の手には小指がなかとです。
ヒロシです...
俺のコントロールキー横の隙間に、誰かが食べたカップ麺の食べカスが見えます...
>>374 <C-[>は押しやすいぞ
逆に半角/全角なんてホームポジションから離れすぎて流れるように打てない
Aの左あたりにCTRLがあればネ(入替可)
381 :
名無しさん@お腹いっぱい。:04/12/26 03:21:24
>>370 PFU HappyHackingProfessional
C-[な人はCtrl<->Caps入れ換えてるんだよね?
383 :
名無しさん@お腹いっぱい。:04/12/26 18:44:49
>>382 HHKでなければ、CapsをCtrlにしてます。
CtrlはCtrlのまま。
だからCaps->Ctrlかな。
入れ替えると普通の人困るしね。
どうせCapsなんて使わないから
>>383がいいよね。
やっぱり皆、左のCtrl使うの?
この話題は
*が*い*し*ゅ*つ*
です
がいしゅつですか。れれれのれ。
小指が無いなら薬指...
ハイ!ハイ!ハイハイハイ!
あるある探検隊!あるある探検隊!あるある探検隊!
>>389 ワードナは*外出中*
とかいうのにひっかけたんでしょ?
すいません お聞きしたいのですが
複数行にわたってマッチするにはどうしたらいいのでしょうか?
hoge.*\n.*\n.*\nhoge
みたいにしていたのでは 改行の数がわからないとマッチさせることができません
改行の数がわからないときはどのようにしてマッチさせるのでしょうか?
すいませんが押しえてくださいお願いします
ageとけ
>>394 hoge(.*\n)*hoge じゃだめだっけ〜つり
うおー very magic!
prefix \v
hoge\_.*\_^fuga とか
横入りすいません
私も似たようなことで困っていたので押しえてください
私の場合はマッチした複数行の改行を削除(行の連結)したいのですが
改行の削除の方法がわかりません
すいませんがおしえてください
400 :
名無しさん@お腹いっぱい。:04/12/28 05:26:06
ageとけって
>>399 :%s/foo\n\(.*\n\)*bar/\=substitute(submatch(0), "\\n", "", "g")/
>>401 それだとできないんですよ
私のがおかしいのかな??
>>402 ありがとうございます
それやったら 5分くらいかかって まだできないんですけど・・
どうなんですかね。。
multiline の正規表現は重かったような。
止まってたきもする。しらんけん。
まだできない。。
Celeron-667MHzだけど・・・
まだおわらん・・
おとそうかな・・
でも編集中だったし・・
泣きそう・・
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
それに、syntax が有効だと遅くなりますね。
あと、vim の行の連結は、通常 J または gJ を使います。
:h gJ
単なる改行の削除なので、gJ を使います。
これも、広範囲の場合は使えません。
これの方が安全かも。
ruby -ne 'print $_.chomp' in.txt > out.txt
>>408 そういうのもいいと思うんだけど
彼のやりたいことは、ファイルの中のまっちした部分にだから
それだと、都合が悪いのでは?
あれかね、vim は multi-line regex はあまり考えてない?
つーか、複数行の正規表現をお手軽に使える utility ってなんかある?
皆さんありがとうございます
私のやりたいことは
<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行にしたいのです
すいませんがお力を貸していただきたいです
よろしくお願いします
>>412 Vimにとってはマッチそのものより、連結後に1行が長くなることのほうがボトルネッ
クっぽいです。
>>413 Perl
>>414 特定のキーワードで良いのならば
:/<table>/,/<\/table>/join
みたいな形の方が良さそうです。402の正規表現は.*が*で囲まれるという、バックト
ラックが多発する典型的パターンに近いので、時間がかかっても当然という印象です。
>>415 ありがとうございます
joinなんていうものがあるのですね
しらなかったです
ですが それだと1つしか連結されないです
%s///
みたく すべての行をするようなことはできないのでしょうか?
じゃあこんなんどうよ。
perl -p -e 's/\n//g' hoge.html | sed -e 's/\(table>\)/\1\n/g'
これは遅い?
:%s@<table\>.\{-}>\_.\{-}</table>@\=substitute(submatch(0), "\\n", "", "g")@
>>416 :help multi-repeat
> To repeat a non-Ex command, you can use the ":normal" command:
このあたりを参照してください。
>>418 \=も遅くなる1つの要因です。あと.\{-}>\_.\{-}の部分がホトンド意味無いかも。最
短マッチ\{-}を使いたくなる気持ちはわかるんですが、なるべく[^>]のような否定パ
ターンを使うほうが、マッチ自体は高速になります。
sed で、できた。
[prompt]$ cat a.sed
/^ *<table\>/,/^ *<\/table>/{
H
/<\/table>/!d
g
s/\n//g
}
[prompt]$ sed -f a.sed in.html > out.html
--remote-silentをつけて起動すると、カーソル位置を指定出来ないんでしょうか?
gvim +70 --remote-silent hoge.txt
とやってるんですが上手くいきません。
>>421 :help --remote-silent
> --remote-silent [+{cmd}] {file} ...
今開いているバッファすべてを対象に文字列を検索したいのですが,
いい方法はないでしょうか?
:bufdo は〜
bufdo g/hoge
という感じでしょうか.
/みたいに1個1個まわっていくのは無理ですかね?
.でノーマルモードの前回コマンドを繰り返せるけど
コマンドモードの前回コマンドを繰り返す方法ってある?
それがあれば425の要求も満たせそうな気ガス
>>341(KoRoNさん)
uim-fepの開発者です。
uim側を修正して、0が直接入力で1がひらがなになるようにしまし
たので、KaoriYa版のuim-fepのサポートを継続してくださるようお
願いいたします。
429 :
名無しさん@お腹いっぱい。:04/12/29 18:39:54
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では設定しています。
>>428 AnthyとVimとの間で板ばさみにしてしまって申し訳ありません。サポート継続の件は了
解しました。理由さえしっかりしているのならAPIが変わってしまうのは仕方が無いと
いうスタンスなので、Anthyのほうで変わってしまった経緯が気になるところです。も
しもその辺を調べられそうなポインタがありましたら教えてください。
# 万が一作者さんのキマグレだったりしたら、付き合うのはツライところですね(苦笑
>>429 enc=utf8にするとか、--cmdでautocmd BunNewなんかを設定するのはどうでしょう。
431 :
名無しさん@お腹いっぱい。:04/12/29 20:35:48
>>422 gvim --remote-silent ++70 hoge.txt
で上手くいきました。ありがとうございました。
>>425 :bufdo grepadd! something %
:cn :cn :cn ... :@ :@ :@ ...
わからないことがあったので教えてくだされば幸いです
<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行目のほうは取り出せません
いろいろと考えてみたのですが 私的にはこれでもうまく行くと思います
すいませんが どこが悪いのか訂正していただけないでしょうか?
よろしくお願いします
[^]の使い方教えなかったっけ。
>>435 私に言っているのでしょうか?
[^]と言うと否定ですよね?
それも 私なりにやってみましたけど それだと
2行目の hogeすら正しく表示されないんですよ
:%s/.*<a\ name=.*[^>]>\(.*\)[^<]<\/a>.*/\1/
とやってみました。
これもおかしいのでしょうか?
もう正直、どっかで正規表現を勉強しなおしてきてホスイ
434 == 399 ?
>>436 こんな感じでしょう。
:%s/.*<a name=[^>]*>\(.\{-}\)<\/a>.*/\1/
根本的に * や \{-} 、いわゆる量指定子の使い方を勘違いされているようです。正規
表現の動作する仕組みを知っていれば、その辺りでつまづくことはなくなるものです。
437ではありませんが、Webサイトや書籍で正規表現について理解を深めると良いでしょ
う。書籍ではオライリーの詳説正規表現をオススメしておきます。
\=substitute(submatch(0), "\\n", "", "g")
と
\(.\{-}\)
ってどういう意味?
:h /\=
:h substitute()
:h submatch()
:h /\{-
まずこれを見てくれ
>>433 希望通りの動作です.ありがとうございます.
ここはvimスレだから、聞かれればvimでなんとかしちゃおうって思うんだろうし、vimにそれだけの力が
あるのは分かっているけれどさ、awk(場合によってはsed)使った方がいいとアドバイスするのも、
やさしさじゃないかなと、ここんとこの質問書き込みをみておもたよ。
と、チラシの裏のかわりに書いてみるテスト。
Windows版gvimで
set shell=c:\cygwin\bin\bash.exe
set shellcmdflag=--login\ -c
としていて、一応これで!コマンドが使えるのですが、
bashのカレントディレクトリが常に$HOMEになってしまいます。
gvimのカレントディレクトリ下でコマンドを実行させる方法はないでしょうか?
--login
あけおめ
どないじゃい
そういうのは雑談スレでやるんだよもん
>>446 --loginをとると~/.bash*が読み込まれず、パスも通らない
ようなのですが。
--loginつけるから $HOME になるんだろ
vimじゃなくてbaseの問題だよ
>>450 --login付けなくても~/.bashrcは読むけど。
453 :
名無しさん@お腹いっぱい。:05/01/04 02:13:28
PHPの開発にWin板のvim使ってるのですが、『まるごとPHP!』を参考にしてphpdoc.vimを
使いたいのですが、なかなか動いてくれません。
やってみたことは"C:\vim\runtime\ftplugin\"にphpdoc.vimを入れて
:runtime! ftplugin/phpdoc.vim
を行いました。
この状態で class Hoge { と入力しても何も起きず、同様にfunction hoge() { としても何も起きません。
うまく動いている方、設定の仕方等間違いがありましたら教えてください。
その本はしらないがそれがファイルタイププラグインなら
set filetype=phpdoc
それから
help ftplugin-overrule
それよりphpdoc.vimを読んでみれ
書籍のおまけならコメントなりなんなり書いてあるだろし
ていうか本当に使い方書いてないんかいその本
>>454 すみません、聞き方がまずかったようです。
本には使い方が書いてあるのですが、UN*X用の説明らしく
${HOME}/.vim/plugin/
に置けば良いと書いてあります。特に他の説明はなく設置するだけであとはクラスや関数
を定義すれば勝手に動くと書いてあります。
また、このスクリプト自体は書籍のおまけではなく、www.vim.orgから落としたものです。
ttp://www.vim.org/scripts/script.php?script_id=520 スクリプト内部には機能の説明のみで特に設置方法についての言及は無いようです。
help ftplugin-overruleは読んでみます。
#そもそも本当にファイルタイププラグインなのか分からないのですが・・・
set iminsert=2
let a = input(":")
とやろうとしたんだけど、input()のときは自動的に
IMEオフにされちゃうんだな。
vim歴1年半にして
:b filename
でバッファ切り替えできることを知りましたよ。
今までずっと:bn,:bpだけでやってた…
bm
sb
vert sb
も便利
vim users guideみたいな感じでtipsを書いていくwiki
があったらいいと思うんだけどどうだろう。
ここ、同じ質問が出ることもしょっちゅうあるし。
>>460 wikiあったって一緒
聞くやつは聞くんだよ
>>460 ああ、欲しいかも…
家の野良鯖にPukiWikiでも突っ込んでおいたらみんな書き込むかなぁ…
でもあった方がいいな。ということで
>>460ヨロシク
バッファ切り替えって CTRL+^ も使わない?
プレフィックスなしで直前のバッファ、数字でバッファ指定。
:ls してから :b [N] するのがめんどかったので、
バッファエクスプローラを使ってます。
vim.org から良さそげなスクリプトを落っことしてきて。
>466
微妙にChaliceとの相性が悪いので
Chaliceと併用するときは要注意、と。
Chaliceで書き込む(Ctrl-Enter)となぜかFirefoxが起動して
書き込みエラーになる場合がある(実際は書き込まれている)
Win2000 + vim6.3 + Chalice 1.8.062 です
たぶんこのカキコもエラーに・・・
1.9にあげろ
>>460 sourceforge でプロジェクト申請ってできるかな?
474 :
名無しさん@お腹いっぱい。:05/01/06 03:30:48
グッジョブ!!!
悪いことはいわん
個人のとこはやめとけ いつ閉じるかもわからんし
広告入れたりして暴挙に出ることがある
確かに自鯖っぽいし
やめといたほうが無難だな
foo to the
とあって、foo から theの一つ前まで削除
foo to the => the
としたい場合どうすればいいですか?
dtt
だと、
foo to the => to the
となって、期待通りにはならないです。
よろしくお願いします。
wikiちょっと書いてみた。
勝手に項目も作っちゃったけど、まずかった変えてね
>>462
>>480 gj
まずは、中身が無いと始まらないからじゃんじゃんどうぞ。
ある程度増えてきたらページ分割、振り分け、カテゴライズを考えています。
>>479 上の例だと d2w でもできるのだけど、どこまで削除したいのかを文字で指定して削除したいのです。
to と the で先頭の文字が重なっている(わざと)のはそのためです。
d2tt
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
FreeBSDで$LANG,$LC_ALLをja_JP.UTF-8にして使ってるんですが、
:set enc=japan するとencがeuc-jpになってしまいます。
実用上困らないけどなんか気持ち悪いです。
なんか必要なコンパイルオプションとかあるんでしょうか。
utf-8 は日本専用エンコーディングではない
488様が何を仰りたいのか理解できません(気持ちはわかります)が
マニュアルを読んで納得することができました。
すれ汚しごめんなさい。
煽りでもなんでもないんじゃないの?
うむ
言ってるとおりだからな
vim wikiいい感じですね
そこそこ栄えてるみたいだね。
wikiだとやはり新着が分かりづらいのと,1件1件に対してコメントが書きづらいな.
その点vim onlineはいいけど, あれもrateトップが
super starでがっくり来るから,古いのはrate打ちどめにするとか
した方がいいんでないかと思う.
分類が目的別になってるのはいいね.
>>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だから良いような気もしますが、
メニューに雑談ページへのリンクも付けたので良かったら
そっちでもどうぞ。
.vimrcいじっているのだが、なんか納得いかない。
あなたの.vimrc見せて下さい・・・。
497 :
名無しさん@お腹いっぱい。:05/01/09 18:25:46
vim でカーソルがタブ文字の上にあるとき、
カーソルは右端に表示されますが、
これを左端に表示するようにできませんか?
:set listchars=\ \
2つめのバックスラッシュの後にも空白が必要
:set list
なんで
>>298みたいな変なことになったかが分かった。
cygwin上から起動したからだ。変なことしたなあ;;
>>498 :set listchars=tab:\ \
でない?
>>498,499,500
できました。どうもありがとうございます。
KoRoNさんの"テキストオブジェクトって本家に取り込まれてないの?
あれとても便利なんだけど。
>>502 7.0のTODOには入ってたと思います。6.3系では取り入れられないでしょう。
todo.txtに
8 next release
で入ってますね。
5 Make it possible to use syntax group matches as a text object. For
example, define a "ccItem" group, then do "da<ccItem>" to delete one.
Or, maybe just define "dai", delete-an-item, to delete the syntax item the
cursor is on.
というのも面白そうだけど、実装が難しい割に使わないかなぁ…
gimp, gtk入れるためにiconv.dllを上書きしても問題ないでしょうか?
>>505 心配ならvimをインストールしたディレクトリ(gvim.exeがあるところ)にiconv.dllをコピーしておくと
それを優先して使ってくれるので安心。
自分でよくわかってなかったので、折り返し関連のオプションをまとめて
みました。
間違いがあったら指摘してください。
* 一定の長さで自動的に改行
:set textwidth=30
で31文字目に達したとき,1つ前の単語の区切りに改行を挿入する。
ただし行の間に空白が1つもない場合は改行されない。
折り返し位置をウィンドウの幅によって決めたいならば
:set textwidth=0
:set wrapmargin=10
でウィンドウの右から10文字目に達したとき、改行が挿入される。
一旦入力した文章をこのルールに従って整形するには
範囲選択して gq
* 長い行を画面上折り返して表示する
:set wrap
ワードラップさせるには
:set linebreak
ワードラップするとき、単語の区切りとみなされる文字は
オプション'breakat'で設定する。通常はデフォルトのままでいい。
折り返した行の先頭に目印を表示させるには
:set showbreak=~
~ は好きな文字でいい。
表示行単位で移動するには
上 gk
下 gj
自動的に改行されるのは 'formatoptions' に t や c が含まれているときだけ。
.vimrcにautocmdを書くときは必ず
augroup name
au!
augroup END
の中に書いた方がいいんでしょうか?
:set <option>=
の後にTABキーを押すと現在の値が補完されるな。でも何に使うんだ?
修正、確認
>>510 必須じゃないけど書いておいたほうが無難
noremap <C-Q> l
などとしても C-Q が効きません。
C-S を押しても control flow が効いているわけでもなく。
誰かお助けお願いします。
WindowsでSubversionのレポジトリからチェックアウトしたファイルから、
grep -rで検索したいのですが、その場合に.svn以下を対象からはずしたいのですが、
何かいい方法ないでしょうか?
grep -vをうまく使えばなんとかなりそうなんですが、いい方法が見つかりませんでした。
>>516 なぜこのスレ?
find . -path '*/.svn' -prune -o -print|xargs grep hoge
VimのQuickfixを使いたくて..
で、set grepprgを工夫すれば、うまくいくかなと思ったんですがパイプを理解してくれないようで。
:gr -r hoge * | grep -v .svn
とやると
:!grep -nH -r hoge * > C:\<TMPディレクトリ>\**1.tmp 2>&1
:!grep -nH -v .svn > C:\<TMPディレクトリ>\**2.tmp 2>&1
となるので、TMPファイルの名前を事前に
grep -v .svn <TMPファイル>
と指定できるのなら、うまくいきそうですが..
.svn以下を検索しないコマンドを作ってgrepprgでそれを使うとか
>>518 GNU grepならば-r指定時は--excludeで無視したいファイルのパターンを指定できます。
もしくは一度ファイルに出力し編集して:cfileで取り込むっていうのもありでしょう。
>>520 あぁぁ..
すいません、excludeってあったのですね。JMばっか見てたから気づきませんでした..
grep --helpで出てくるじゃん..
お騒がせしました〜
522 :
名無しさん@お腹いっぱい。:05/01/16 01:57:35
aaaaaaaa
kasjdfkaj
break;の抜けてるcase:を探す正規表現を考えてみたんだけど、どうだろう。
\v<case\_s+\k+:((.|\_s)(break)@!)*\w+:
うーん、お手上げ。
正規表現でネストまで考慮できるの?
これでハイライティングできたら便利かなーと思ったんだけど。
Win XP で kaoriya の gvim 6.3.54 を使っています。
ツールボタンの「クリップボードから貼り付け」の上で、左右のマウスボタンを
同時に押すと、へこんだままになり、マウスの操作がおかしくなって、コマンド
ラインから(:q)しか終了できなくなります。
これが再現する人は他にもいますか?
>>KoRoNさん
Vim 6.3.054 差分パッケージのパッチにconfigureの差分が抜け
落ちていて、migemoなどが使えなくなっています。
>>526 症状を確認しました。対症療法としてはフォーカスを移動させれば直るみたいです。
>>527 報告ありがとうございます。今difjパッケージを差し替え終えました。054_1がそれです。
Linuxでvim6.3.52 + Kaoriya patchを使っていますが,
印刷に関しての質問です.
使っているのはpostscriptプリンタで,普段ターミナルからは
a2ps <file name> | lpr で問題無く印刷できています.
:he hardcopy を読む限り,vimはデフォルトで postscript に変換してから
lprに流す(正確にはprintexprの指定)という挙動のようなので,何も考えずに
:ha したところ,日本語部分が文字化けしてしまいました.
同じような経験の方はいらっしゃいませんか?
ちなみに,printexpr, printdeviceはデフォルトのままですが,
printfontにはちゃんと日本語フォントを割りあてているつもりです.
set printfont='mplus_j12r-iso,mplus_j12r-jisx,mplus_j12r'
全角スペースを\sに含められないんかねぇ…
# そして\Sも全角スペースを含まないように
\s* こうやりたい所を [ \t]* ← 全角Sp+半角Sp+タブ と
わざわざ文字クラスを作るしかない…
>>533 > 全角スペースを\sに含められないんかねぇ…
Bramが納得できる形で提案できるならば可能でしょう。そのあたりがうまくできれば
「。」「、」なんかに対応した「文」という定義もできそうなので、結構キーポイン
トなんですよね。
直近で、ソースコードを弄らずに問題を解決するならば、[]でなんとかするしかない
ですね。
535 :
名無しさん@お腹いっぱい。:05/01/23 16:47:10
>>523 正規表現はある程度自信があったんですが、ここへ来てしぼみました・・
↓の正規表現が解読できません。
ヘルプでも、\v< や \_s が出てきません。
また、文字の否定は ^ ですけど、グループの否定なんてできるのでしょうか?
↓では、breakがない意味らしいですが、↓のどれがbreakがないになるのでしょか
\v<case\_s+\k+:((.|\_s)(break)@!)*\w+:
h \v
h \_s
h \@!
h \v
h \_s
h \@!
538 :
名無しさん@お腹いっぱい。:05/01/23 17:41:08
>>536 なぜか、ヘルプではすべてエントリーなしになってしまいます。
>>538 ひょっとしてこうじゃないか?
:help \\v
:h のコツは<tab>を使うこと
541 :
名無しさん@Vim%Chalice:05/01/23 19:05:26
:hの時はCtrl-Dもつかうこと。
そういえば
:h v_g?
でv_g?のヘルプに飛べない。v_g]に飛んでしまう。
:helpgrep v_g?
で飛べるが、なんか他に方法があるんだろうか?
検索実行後数秒でハイライトが消えてくれるといいなと思い
:au CursorHold * noh
としてみたのですが、待てど暮せど何も起きる様子がありません。
:au CursorHold * echo "HOGE"
とすると数秒後に HOGE と出るので、auそのものは動いているようなのですが。。。
何がいけないのでしょう?
:au CursorHold * set nohl
でどう?
autocmd CursorHold * set nohlsearch
こうか
ありがとうございます。うまくいきました。
>>545見てから気付いたのですが、noh の方にちゃんと理由も書いてありました。
動作はするけど即座に元に戻っちゃってたんですね。
:noh[lsearch]
(snip)
This command doesn't work in an autocommand, because
the highlighting state is saved and restored when
executing autocommands |autocmd-searchpat|.
あーでもこれだと恒久的にハイライトしなくなっちゃうのか。うーむ。
>>543 まさか俺だけ?orz
実害ないからいいけど
あ、ホントだ飛べないや@vim 6.3 (パッチ未適用)
補完の候補には出るのに。
>>548 俺はこうして、適当にバインドして使ってるヨ。便利。
function! ToggleHighlight()
if &hlsearch != ''
set nohlsearch
else
set hlsearch
endif
endfunction
>>551 普通に
set hlsearch!
で良いんじゃないかと。
>>542 おれも飛べない。
Kaoriya Win版 6.3 (patched 1-30)
im_customを有効にしていると--remoteが動作しません。
---
症状
vim --servername test
vim --servername test --remote testfile
としても、testfileがオープンされません。
代わりに(?)serverが(コマンドモードで)日本語入力モードになります。
" set imoptions=canna,serv:unix:0
とコメントアウトした場合は、正常にserver側でtestfileがオープンされます。
gvimでも同様です。
サーバが起動していないときに、
vim --remote testfile
としても、同様にtestfileは開かれずに、日本語入力モードになった状態で起動します。
mapが上手く動かないことがあるのと関係しているように思います。
(環境: Vim 6.3.45 + im_custom074 on FreeBSD)
---
今まで--remoteは使っていなかったのですが、TeX/Xdviの-src-special
を使おうとして気づきました。
s/コマンドモード/ノーマルモード/ です。
この一冊でvimヲタになれる!
って書籍はございますか?
買ってもなければ読んでもいないし関係してもいないものを
お薦めするわけにはいかないんじゃないかと思われ。
そうでないならいいんだけど。
あふぃりえいとして稼いぢゃえ
vim6.3.045を使っています。
よくある、数字に位取りのコンマを挿入する置換なのですが、
:s/\v\d@<=((\d\d\d)+>)@=/,/cg
before:1234567890
after :1,234,567,890
これを実行して「replace with , (y/n/a/q/l/^E/^Y)?」にyと答えても
,が表示されずに次のマッチに移動してしまいます。
一行を処理し終えるといきなり全ての,が表示されるのですが、
これはこういうものなのでしょうか。皆様のところでも再現しますでしょうか?
さらに、上の例でyyqとタイプすると
,は一つも挿入されずに終わってしまいます。
:s は行単位の処理だから妥当な仕様だと思うけど。
>さらに、上の例でyyqとタイプすると
求めてるのは"l"かな
:help s_c
ああ、あと'\%c'のことを考えたら表示が逐次更新されちゃうと困ったことになるな。
ありがとうございます。
> :s は行単位の処理だから妥当な仕様だと思うけど。
うーむ、でも :s@\d\d@&,@cg なら各yで処理されますよね?
それに :h s_c の記述を見る限りでは yyq では置換が実行されず
yl でなら実行される理由は説明されていないように思うのですが。。。
ああ、,が入っちゃうと2番目以降の,が入らなくなるからこういう仕様なのか。
半分納得しました。
>うーむ、でも :s@\d\d@&,@cg なら各yで処理されますよね?
ほんまやね。じゃーバックトラックが原因かな。すまんおれも詳しくはないんだ。
:h s_c については
'l' to substitute this match and then quit ("last") : quit=停止する
'q' to quit substituting : quit=取り止める
だと思いますが。
>>561 > よくある、数字に位取りのコンマを挿入する置換なのですが、
>
> :s/\v\d@<=((\d\d\d)+>)@=/,/cg
よくある置換ですけど、あまり推奨しないパターンですね。というのも、実際にマッ
チする文字列の幅が0だからです。マッチ結果が文字幅0になる正規表現はVimにとっ
て比較的新しい機能なので、従来の部分との組み合わせでなにかおかしな挙動をして
も「さもありなん」という感じなんです。
そこで代替案なんですが、詳説正規表現(P325)よりVim用にパターンを移植しました。
:%s/\(\d\{1,3}\)\%(\%(\d\d\d\)\+\d\@!\)\@=/\1,/gc
こうするとyの度に更新がかかります。
ころんキモすぎw
さいたま〜さいたま〜
博論書いたか?ww
>>561の中の人
すまん、言ってる意味がわかった。おれが間違ってたわ。
570=567ね。すんません。
皆さん、ありがとうございます。
このあたりは一部普請中という感じのようですね。
>>568 > 詳説正規表現(P325)よりVim用にパターンを移植しました。
P325にはそれらしき記述がないのですが、ページは合っていますでしょうか?
手許の本は第2版です。
>>572 私のは初版です。7章「Perl」の8節「総仕上げ」にあたります。
さいたまさいたまさいたま
オレのも載ってるぞ。第2版。
「7.8.2 数字にコンマを加える」
図書館のだけど、、、
koron no timpo
を
timpo wo poron
に最速で変える手は?
dditimpo wo poron[ESC]
をすごいスピードで打ち込む
s/ddi/cc/
s/cc/S/
う〜ん・・・簡単に思いつくとしたらば
yed2w0 wo <c-r>0
手数:12
timpo
<c-r>0
>>576 Stimpo wo poron<ESC>
性器表現スレはここですか?
そうです
v
i
m
(;´Д`)ハァハァ
>>575 7.8.2は「埋め込みコード構文を使用する」なのですが・・・
そのご本、良く見ると初版第2刷だったりしませんか?
ちなみに第2版では2.3.5(p.57)が
「前後読みを使って数字にコンマを加える」です。
>>568のパターンは出て来ないようですが。
koron has no timpo
"/"で検索のとき
/draw でDraw,DRaw等もマッチ対称にしたいのですけど
どういうオプションがありますか?
/\cdrawδ
/dr\caw
似てるけど\vなんかは置く場所によって効果が異なるんだよな
K氏はおそらく生理前とみた!きついきつい。きついよー小沢さーん
>そのご本、良く見ると初版第2刷だったりしませんか?
そのとおりでした。m(__)m
596 :
名無しさん@お腹いっぱい。:05/01/30 00:14:19
nocindenしてもnoautoindentしても
C入力時にコピーしたらインデントされます
完璧にインデントを止めるにはどうすればいいのでしょうか?
Vimのプログラムをダウンロードしたら
function Iew() range
let filename = tempname()
execute "'<,'> write ".filename
call system("iew ".filename)
call delete(filename)
endfunction
として使えとmanに記述してあったのですが
これはどのようにして使うのでしょうか?
"v"でビジュアルモードで選択中に":"で
:'<,'>
と言う物が出てきて
そのあとに、Iew()とうっても
E492: Not an editor command: '<,'>Iew()
と言われて実行できません
使い方が間違っているのでしょうか?
:'<.'>call lew()
>>599 2箇所、間違い探しがあるぞ
正解は
:'<,'>call Iew()
でしょ?(w
'<は選択範囲の最初の行を、'>は選択範囲の最後の行を示す
601 :
名無しさん@お腹いっぱい。:05/01/30 18:05:47
インサートのC-pの補てんで、該当リストを全表示にはできないんでしょうか?
それと、コマンドライン補てんで、ファイル名用のコマンドでないときに
ファイル補てんを行う方法(キー)はあるんでしょうか?
マニュアル見ても載っていなかったのでできないのかなぁ・・
602 :
名無しさん@お腹いっぱい。:05/01/30 18:21:22
vimはgdbとリンクしてvimの画面でソースをデバッグできるのだろうか?
マニュアルのdebugger.txtにはgdbがのっていない・・・
結構遠くまで探しに逝く実装だから全表示はうまく逝かないんじゃないかなあ。
604 :
名無しさん@お腹いっぱい。:05/01/30 18:34:34
コマンドライン補てんでリスト表示できるから
期待してしまうんですよねー
605 :
名無しさん@お腹いっぱい。:05/01/30 18:38:28
viのウィンドウバッファに、w3mやmanの画面を表示できるだろうか。
r !man ls
r !w3m ...
で出力結果として見れるけど、w3mでは続けて操作したいんだよね
>>605 そういうことはできないしやらない、
って :h に書いてなかった?
screen でも使えばいいじゃん。
607 :
名無しさん@お腹いっぱい。:05/01/30 19:01:01
>>606 そーすよね。
ただ、vimのレコーディングで、w3mをコントロールできれば最高かなっと・・
短絡的でした・・・
608 :
名無しさん@お腹いっぱい。:05/01/30 19:06:13
vim onlineにgdbvimってのがあったよ。
vim6使ってます。
終了したときにカーソル位置を保存したいのですが、
どうすればいいのでしょうか?
「viminfo='20,<50,s10,h」
ってなってます。
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
613 :
名無しさん@お腹いっぱい。:05/01/31 00:28:47
viを使って慣れてきたときの事を思い出しつつ…
viでカーソルを動かすとき、HJKLでは動けるが、カーソルキーでは動けない。
そんな束縛感にひたり、ニヤリとしてしまう。
長井秀和です。
viの話。
viに慣れてきた奴は、Windowsのメモ帳でも間違えたときEsc連打しちゃう。間違いない。
viに慣れてきた奴は、秀丸のあのボタンの絵のセンスはどうにかならないものかと思っている。
間違いない。
Excelで入力をミスったときにEscを押すんじゃない、入力した内容が消えてしまうぞ、気をつけろー!!
viに慣れてきた奴は、アレを使うときCtrl-c、Ctrl-sしか知らなかったりする。間違いない。
viに慣れてきた奴は、矩形選択にちょっとあこがれている。間違いない。
>>613 そう思うと vim はカーソルでの移動も矩形選択もできるからめぐまれてるよなwwwwww
split(or C-W,C-S)もしくはvsplit(or C-W,C-V)をしたタイミングで
全windowに対してコマンドを実行したい(:windo 〜〜 を使う)のですが,
(v)splitしたというautocmd用のイベントは無いのでしょうか?
# :windoの後にはwindow localな処理を行います (:match とか 'number' いじるとか)
とりあえずautocmd WinEnterで試してみたけど
:windoすると必ず最後のwindowにカーソルが移動してしまう・・
つまり、WinEnterイベントと:windoの副作用(最後のwindowに移動)の相乗効果によって
window間の移動(C-W,C-Wなど)が全く出来なくなってしまう
# 別のwindowに移動しようとする度に最後のwindowに移動してしまう oTZ
どうやら解決策のアプローチが悪いようです・・
(v)splitした時に全windowに何かする、という時のvim scriptのイディオムというか
正しいアプローチはありますか?
>>613 失礼な、アレの操作方法なら M-x viper だって知ってるぞ!
>>615 augroup MyDo
autocmd!
autocmd WinEnter * let g:curwin = winnr()
autocmd WinEnter * windo if winnr()!=g:curwin | set nonu | else | set nu | endif
autocmd WinEnter * execute g:curwin.'wincmd w'
augroup END
これにウィンドウを分割したかどうかの判定を付ける
>>613 >viに慣れてきた奴は、Windowsのメモ帳でも間違えたときEsc連打しちゃう。間違いない。
馬鹿だなぁ。それ以前に入力内容に余計な i とか a とか A とか付くに決まってるだろ!
622 :
名無しさん@Vim%Chalice:05/01/31 11:58:57
>>620 今動かせないので残念、見たい!。
ブレイク個所がvimにリアルタイムで表示されたりしますか。
623 :
名無しさん@Vim%Chalice:05/01/31 12:08:49
セッションをロードするとレジスタが保存されるとか書いてあるけど
undo、redoはできない・・・
これってどうぜん?
624 :
名無しさん@Vim%Chalice:05/01/31 12:20:17
>>621 画像見たけどすごそう、vimの作者がつくったらしいから連携もよいのかも
でも英語サイトだからよくわからない・・
cygwinでもコンパイルすれば使えそう。
vimと相性ばっちりの開発環境やプラグインは、agideが一番だろうか??
開発メインで使用してるので、それが一番気になる。
agideのHPさらっと見たけど、X環境ないと使えなさそう。ショックorz...
>>533 こんなのはどうでせう? :%S/\s//g
command! -nargs=* -range S call Substitute(<line1>, <line2>, <q-args>)
function! Substitute(s, e, exp)
let exp = substitute(a:exp, '\C\\s', '[ \t ]', 'g')
let exp = substitute(exp, '\C\\S', '[^ \t ]', 'g')
execute a:s.','.a:e.'substitute'.exp
endfunction
627 :
名無しさん@Vim%Chalice:05/02/01 11:35:16
>>620 vimDebug.vimなんてのがあった。
cygwinでやったが動かない。
何とかがんばって一瞬動いた。
デバックポイントがソースに表示されるし、
キーマクロで操作も簡単。コマンドインターフェースもあるのでいろいろできそう。
でも動かない・・・
>>628 それよりも、どこをどうしたらそうなったんですか? もしかして256色モード?
631 :
名無しさん@Vim%Chalice:05/02/01 18:02:59
AIXでコンパイルできない。かおりや版のソース・・・
632 :
名無しさん@Vim%Chalice:05/02/01 18:16:55
ネットワーク編集もできるのか!すごいNread
ファイルエクスプローラにも対応できれば最高なんだけど
cvs…
いや、無粋な突っ込みだとは思うのだが。
>>629 できました。ありがとうございます。
>>630 色がおかしくなったのは、Windowsの配色をいじったせいかもしれない。
vim7って今現在の安定度とかってどう? 問題ない?
638 :
名無しさん@Vim%Chalice:05/02/02 17:46:36
<F3>を押すと、入力したバッファへ移動したくて↓を設定したけどNG
:map <f3> :let @t = input("input: ")<CR>:b ^Rt<CR>
無理ですかね?
>>634 im_customの開発、ありがとうございます。
お待ちしておりますm(__)m
>>638 <f3>:ls<CR>:buf
とかじゃダメ?
>>638 :map <f3> :let @t = input("input: ") \| :b ^Rt<CR>
ちがった
:map <f3> :let @t = input("input: ") \| b ^Rt<CR>
643 :
名無しさん@Vim%Chalice:05/02/02 18:47:07
640,641,642 ありがとうございます。できました。
ちなみに642だとだめで、641で行けました。
644 :
名無しさん@Vim%Chalice:05/02/02 18:51:36
gvimでコマンドラインをコピペしようと思って選択して"y"したけど、
"y"がそのまま出てコピーできませんでした。
何か方法は合うでしょうか。ウィンドウズのC-cもだめでした
646 :
名無しさん@Vim%Chalice:05/02/02 19:00:16
643のものです。
なんか両方ともできないです。違うバッファに行ったりします。
最初にやったらうまくいったのでOKかとおもって・・
647 :
名無しさん@Vim%Chalice:05/02/02 19:04:05
>>645 おー、履歴を出してヤンクということですね。なるほど!
ありがとうございます。
>>646 じゃあこれでどうよ
:map <f3> :let @t = input("input: ") \| execute 'b '.@t<CR>
649 :
名無しさん@Vim%Chalice:05/02/02 19:12:18
またまた643のものです。
どうも毎回違うみたいで、何回もやるとだんだん見えてきました。
inputで入力しても b ?? が実行されなく、
2回続けるとジャンプできました。レジスタ入る前に
b ?? が実行されているみたいです。
650 :
名無しさん@Vim%Chalice:05/02/02 19:15:07
>>648 できました。今度はちゃんと。間違いないです。
でも \| execute 'b '.@t<CR> がさっぱりです。
ちとマニュアル見てみます。
651 :
名無しさん@Vim%Chalice:05/02/02 19:52:12
コンソールのvimを愛用中。上下に分割して別のバッファを開くはあるけど
横分割がない。
ウィンドウの横幅設定がない。GUIじゃないからつらい。
横分割は、横分割してバッファ開けばいいけど、vimのコマンドの多さなら
あると思ったのに・・・
>>651 あなたの使用しているvimはjvimです。
失礼。読み間違えました。
vert sb バッファ
のことかな?
頭から 10づつ増える行番号をふりたいのですが
コマンドでかのうでしょうか?
すいませんが教えて下さいおねがいします
vim のコマンドでもできるだろうが、あたしは
何じゃ雲のなので、 perl なりを使ってしまうかな。
いかのスクリプトを /tmp/hoge に保存しておいて、vim の中で、
:%!/tmp/hoge
とすればできる。
#! /usr/bin/perl
$i = 10;
while (<>) {
printf("%d: %s", $i, $_);
$i += 10;
}
%!cat -n
%s/^/\=line('.')*10.': '/
とか
vim7って使えんの?使いものになるの?検討する以前に情報少なっ
一から作り直してるわけじゃないから新機能を気にしなければ問題ないんじゃないかと予想
結局 vi で充分だな。準備のための準備はあまりに滑稽。
日本語もメンドイので英語になったよ。
>>660 viとvimは競合しないと思うけど。何を比較検討したんだろう?
まぁたしかに準備のための(必要のない)準備は滑稽だな。
笑え
vim7 は新機能が大きく取り入れられています。
たとえば、連想配列などもサポートされます。
そんなこともあり、安定度はよくないかもしれません。
# 先日もデグってましたし・・・。
vim7 cvs を追っかけるのであれば常に最新にしないと、どこかしらに
バグが潜んでいるかもしれません。
まだ開発段階ですので、問題があってもしょうがないのですが・・・。
665 :
名無しさん@Vim%Chalice:05/02/03 11:14:23
>>653 未熟者でした・・・
まったく問題なしでした。
666 :
名無しさん@Vim%Chalice:05/02/03 11:23:45
>>648にみならい
入力したバッファを立て分割を作ろうと思ったけど動作しません。
map <f4> :let @t = input("buffer vertial split: ") \| execute 'vertical 'sb '.@t<CR>
667 :
名無しさん@Vim%Chalice:05/02/03 11:24:46
vim7でgdbとのインターフェース追加されてないかな〜
gdbはvimに必須だよ・・・
670 :
名無しさん@Vim%Chalice:05/02/03 15:11:34
>>669 これ最高!もろもとめるところ。eclipceのデバッグ見たいのが
vimでできる。コマンドラインとソース画面が割れて同期するし、
breakポイントのヒットもバッチし。
run break countinueもマップで R C-B C と超簡単。
しかも<F7>でgdb用のキーマップON OFF できる。
とにかくこれ最高!!gdbがそろったところで、
ソースエクスプローラ、タブエディタ化、make grep
デバックが全部vimでできる。
671 :
名無しさん@Vim%Chalice:05/02/03 19:20:21
C-wOで最大化した後、下の配置に戻すにはどうしたらいいのでしょうか
672 :
名無しさん@お腹いっぱい。:05/02/03 19:41:55
全角半角キーには
Ctrl-[ Esc
Ctrl-M ENTER
のような入力方法はありませんか?
>>666 map <f4> :let @t = input("buffer vertial split: ") \| execute 'vertical sb '.@t<CR>
では?
675 :
名無しさん@Vim%Chalice:05/02/04 17:41:20
>>671 ありがとうございます。
これいいです。minbufと共存させても大丈夫でした。
676 :
名無しさん@Vim%Chalice:05/02/04 17:43:52
677 :
名無しさん@Vim%Chalice:05/02/04 18:35:55
helpとエラーウィンドウって、なんでlsのリストにでないんですか?
:set paste
で、ペーストモード?にしたのですが
もとにもどすときは何をセットすれば?
えろえろ勉強になるから :h :set してみよう。
確かviっぽいファイラがあったような気がしたんだけど名前おせーて
vifmのことかな。漏れはfdのバインド弄って使ってるけど。
# fdのviモードは使い物にならん
日本語のマニュアルをKoRoNさんちからパクって来て
${VIM}/doc に突っこんだんだけど
:h を見ると文字化けというか〓になる
なんで?
>>682 ヘルプファイルの文字コードを確認して'encoding'の設定かUTF-8に変換するといい
ヘルプには文字コードの自動認識は働かないと思われる。
684 :
名無しさん@Vim%Chalice:05/02/05 03:19:23
cygwinで日本語設定して、日本語を見れるようになったけど、
カーソルを移動させるの日本語が化けます。1バイトずつしか進まない。
どこかでcygwinのlibcのバグ?って書いてあったけど、
それが原因かわかりません。
Viを使ってないかい?
vimでファイルのコンバートをおこなうのですがどうするのでしょうか?
変換すればいい
どうやって?
vimで各ファイルの前見ていた所を覚えてる動きをやめさせるのはどうすればいいですか?
普通にviみたく開く度に最初からじゃないと使いにくくて使いにくくて;;
:h 'viminfo'
>>683 ありがとう
UTF-8に変換してみても
エンコーディングをeucにしてもどっちみちばける
もちろん、改行コードもLFにしてる・・・
他に考えられることはありますか?
>>691 ・実はそういう字だった。
・複数の違うエンコーディングの文字が混じってて、変換に失敗。
・アプリが壊れている。
>>691 ヘルプファイルの文字コードを、'encoding'に設定している文字コード、もしくはUTF-8にする
って意味だったんだけど、分かり難くてごめんなさい。
つまり'encoding'がeuc-jpだったらヘルプファイルもeuc-jpに変換。
これでダメならお手上げ。:e で開くと表示できるんだよね?
ファイル名 help.jax とかにしてる?
関係ないか。
>>692 うぅーーん・・
>>693 すいませんこちらがわるいのに
原因がわかったっぽいですけど、どうすればいいのかがちょっとわかんないです
なんのファイルも指定せずにvimを起動して
:h windows
すると、
fileencoding=latin1
になっています、encodingはeuc-jpです
:set fileencoding=euc-jpにしてもなにも変わらないし
ちょっと私にはわかりかねるんですが
すいませんが教えていただけるとうれしいです
>>691 Kaoriya のヘルプファイルは
vim-20020708-docj.tar.bz2
はSJISで書かれてるだろ。
使用環境が UTF-8 なら
mkdir utf
for file in `ls *.txt`
do
nkf -w $file > utf/$file
done
su
cp utf/*.txt $VIMRUNTIME/doc/
とでもやって、もーいっかい試してみぃ
翻訳作業が途中なんですけど、svn版を使ってやると良いかも。*.jaxって言う名前で全
部UTF-8になってます。runtime/docに突っ込んでhelptagsすると…まだ途中なんで重複
エントリがあると怒られてしまうんですけどね。
698 :
名無しさん@お腹いっぱい。:05/02/06 09:47:39
dicwin.vim で、単語を調べるじゃん。
その単語をどこかのファイルに保存して欲しい。
つまり、検索単語の履歴。
何度も調べている単語を抽出して、集中して覚えたい。
はい、S-JISだったのでeucに直しました
わたしは、 nkf -e -Lu *.txt で行いました
ちなみに、上記を行ったhelpを開くと
fileencoding=euc-jp
fileformat=unix
encoding=euc-jp
です。
ですが、何もひらかずにvimを起動して
:h windowsをすると
fileencoding=latin1
になってしまいます
.vimrcは
set encoding=euc-jp
set termencoding=euc-jp
set fileencoding=euc-jp
set fileencodings=euc-jp,utf-8,cp932,iso-20220jp
です、
UTFにしてもやってみましたがうまくいきませんでした
>>699 various.txtのhelp-translatedには
ヘルプファイルの文字コードはlatin1かutf-8にすべし
ファイルの最初の行にnon-ASCIIな文字があればutf-8であると仮定する
とあるので、最初の行に漢字でも書いてutf-8で保存して試してください。
だけど、encの文字コードで問題ないはずなんだけどなぁ...
どうしてもダメなら
:autocmd BufReadPost $VIMRUNTIME/doc/* :e ++enc=euc-jp
こういう手もある。
>>700 utf-8にして
先頭行にマニュアルと書いて開いたりしてみましたが
fileencoding=latin1
からかわりません
:autocmd BufReadPost $VIMRUNTIME/doc/* :e ++enc=euc-jp
は、うまくいったので
今は、.vimrcに書いて見ています
なんでだろう・・
みなさんはうまくいきますかね?
Cのファイル書いていたらコメントアウトの部分から
10行くらい表示がくずれたりなんかおかしいことばかりです・・
手元にある chalice のドキュメントは euc-jp だけで何もしないでちゃんと表示出来るな。
ナンデダロ。
>>701-702 いまさら言うのもなんだが、まず自分の使っている環境(OSなど)と
Vim のバージョンを書くべきじゃないのかな?
>>701 utf-8 にしたらファイル名を *.jax にしてね。
tags-ja もつくってね。
705 :
名無しさん@お腹いっぱい。:05/02/07 04:58:43
>>699 今回のことには関係ないかもしれんけど
> .vimrcは
> set encoding=euc-jp
> set fileencodings=euc-jp,utf-8,cp932,iso-20220jp
これは激しくまずくないか?
>>682 Libiconvをインストールしてないとか?
>>KORON タン
:call migemo('') として空文字を渡すとセグフォで落ちます。
VIM - Vi IMproved 6.3 (2004 June 7, compiled Feb 6 2005 12:05:24)
vim-6.3.054_1-difj.tar.bz2 のパッチ適用済み。
708 :
名無しさん@Vim%Chalice:05/02/07 16:23:26
>>702 libiconv 1.9.2-1
libiconv2 1.9.2-1
です。
間違って
q::Chalice
とタイプするとエライことになる罠
>>707 報告ありがとうございます。src/serarch.cの1089行目、
retval = vim_strsave(query);
の前に
if (query)
を追加しておいてください。パッチ&バイナリは時間ができたら公開します。
712 :
名無しさん@Vim%Chalice:05/02/07 19:17:37
CとC++で、メソッドを検索する正規表現を作りました。
動きは特に問題なかったです。
\%(.\)\@=\%(\(if\|while\|for\|switch\)\)\@!\<[A-z_][A-z0-9_]\{-}[ \t]\{-}\%((\)\@=/
実際は、eregex.vim を使って↓で作成。
M/(?=.)(?!(if|while|for|switch))\<[A-z_][A-z0-9_]*?[\s]*?(?=\()
714 :
名無しさん@Vim%Chalice:05/02/07 21:19:48
M/(?=.)(?!(if|while|for|switch))\<[A-z_][A-z0-9_]*?[\s]*?(?=\() の解説。
if、while、for、switchではない、先頭がアルファベットもしくは_で始まる単語で
スペースが続いてもよしで
その後に ( がくる。
( は検索エリアに入れない。
715 :
名無しさん@お腹いっぱい。:05/02/08 10:38:00
FreeBSD 5.3 vim6.3 im_custom+canna で、
LC_CTYPE=ja_JP.EUC で起動すると正常なのですが、
LC_CTYPE=ja_JP.eucJP とすると日本語が文字化けしてしまいます。
「日本語」と入れると「日喫」みたいになります。(木偏だったかも)
環境変数にはeucJPの方を指定したいのですが、
どう対処すればいいでしょうか?
#昨日の夜書き込んだつもりでしたが見当たらないので。
#どこかとんでもないところにマルチしてたらすいません。
716 :
名無しさん@Vim%Chalice:05/02/08 11:28:11
一発で前のバッファに戻ることはできるでしょうか。
バッファを横に4つ開いていて、C-W↑ とかだとつらくて・・
:buffer ? だとカレントバッファが切り替わって意図したものになりません
<C-w> <C-w> って事かな。
>>717 C-w C-p の方では?
これでもつらいんだろうけど。
wiki に書いてあった incbufswitch を Emacs の iswitch に近い感じに書き直したんだけど、需要あるかな?
720 :
名無しさん@Vim%Chalice:05/02/08 14:27:12
723 :
名無しさん@Vim%Chalice:05/02/08 16:37:34
>>722 ありがとうございます。
これは便利ですね。タブ移動もつけば申し分ないんですね。
>>715 同じ様な問題があった(随分前の事だが)からこれをあてている。
--- mbyte.c.orig Wed Sep 29 17:17:23 2004
+++ mbyte.c Wed Sep 29 17:17:32 2004
@@ -653,7 +653,7 @@
* where mblen() returns 0 for invalid character.
* Therefore, following condition includes 0.
*/
- if (mblen(buf, (size_t)1) <= 0)
+ if (i >= 0x80)
n = 2;
else
n = 1;
>>723 ども。
タブキーでの切り換えも実装してアップし直しておきました。
726 :
名無しさん@Vim%Chalice:05/02/08 19:11:36
>>725 どもどもです。
すごいですね〜。最高に使いやすいです。
プロンプトにバッファリストが出るので、何を開いたか確認するのみでも
利用できますね。MiniBufExplorerは他のプラグインと競合するので
ちょっと乗り換えてみようかと思います。
727 :
名無しさん@お腹いっぱい。:05/02/09 05:24:05
Vim使いの人は2chビューアどうしてるの?
このスレの名前欄でも観察してみたら
navi2ch
自分は2chみるときはダラダラモードなんでChaliceは合わん
>>730 ビューアも種類によってだらだら見れたりびしばし見れたり違うもんなの?
いや、俺Chaliceしか知らないもんで。
>>731 マウスで操作できないってことでしょ。
両手を使わないといけないし。
vier,vimmerはマウスを使うという発想自体がないからなあ。
そういや大昔のchaliceは右手だけで操作できるキーバインドだった
今だって読むだけならspaceで十分だけどな
>>736 > vim6 のソース管理が ftp から cvs に変更されしたので、cvs の最新バージョン
s/されした/された
738 :
名無しさん@お腹いっぱい。:05/02/10 13:16:45
おじさんが、iMac G5 買ったんだ。
んで、設定するために、オレが呼ばれた。# はじめての Mac
X 上の標準エディタが使いにくいので、GVim をインストールした。
てゆーか、Control キーと Caps Lock キーの位置が逆じゃん。
めちゃくちゃ使いにくい。
どうにかなりませんかね。
最近KoRoNさん、こないね。
なにか特別なfileencoding が設定されていたら、普段とは別の
フォントに切り替えることってできますか?
出来ますよ。
743 :
名無しさん@Vim%Chalice:05/02/11 00:47:56
globalコマンドを使用して、検索結果を行番号つきで表示したいのですが
できるでしょうか。下だと行番号がでません。
:g/int\s\+\w\+/
744 :
名無しさん@Vim%Chalice:05/02/11 00:50:28
>>743 743です。すいませんわかりました。:numberでした。
745 :
名無しさん@Vim%Chalice:05/02/11 01:09:19
globalコマンドの出力結果を、レジスタにコピーすることはできるでしょうか?
もしくは、Scratchなどのバッファにコピーできるでしょうか?
747 :
名無しさん@Vim%Chalice:05/02/11 05:48:44
>>746 ありがとうございます。
!ls とかの、外部コマンドの出力は取れなかったのですが
これは無理なのでしょうか。
>>747 > !ls とかの、外部コマンドの出力は取れなかったのですが
:help system(
749 :
715:05/02/11 15:53:15
>>715 なんですけれども、どなたかおしえてください。
お前自己中過ぎ 全部読め
全部読みましたがなにか?
じゃ、解決だね。
>
ttp://skawina.eu.org/mikolaj/vimgdb/ >vimスレで紹介されてた、vim上でgdbデバッグを可能にするパッチ
>を当ててvimをインストールしたのですが、
>gdbを起しに行くあたりで、ptyがうまく開けないようで使えせん。
>linuxのvimでは問題なく動いているので、おそらく、bsd pty固有の問題
>だと思うのですが(ここいらへんあまり良くわかってないです)、何か
>解決へのアドバイスあったら下さい。
FreeBSDスレで質問したのですが、解決しなかったので
もしわかるかたいましたら教えてください。
>>749 FreeBSD5.3以降は、C99に準拠したせいかmblenの挙動がステートフルに変わってるの
です。そのためリセットする操作が必要になっているようなんです。香り屋版の
src/mbyte.cへのパッチを読んでみてください。mblen(NULL, 0)という呼び出しが追
加されています。
>>753 FreeBSD5-STABLEでvim-6.2.tar.bz2にvim62-gdb6.tar.bz2のパッチを当てて
コンパイルしてみました。ちょっと試しただけですが、とりあえず動いてます。
756 :
738:05/02/12 09:11:46
対応する括弧をみたいのですが カーソルの位置の括弧に対応するもう一方の括弧を知る方法はありますか?
%
vi の超基本 %
ctrlと何かを同時押ししたら補完のような動作をしたのですが、あれが幻でないとしたら何ですか?
補完のような動作です。
そうですか。
763 :
名無しさん@お腹いっぱい。:05/02/13 14:53:13
>>760 pかn
だれかIntellisense for vimってC++で使ってる人います?
入れては見たがうまく動かない・・・
使い始めたばかりです。
viのキーストロークって多分英語キーボード向けになってるんだと思うけど、
英語キーボード使って覚えた方がいいんでしょうか。
>>764 確かに英語(ASCII)キーボードを使った方が細かい違和感は少ないのですが、日本語
キーボードに慣れているのならばそちらを使ったほうが良いです。
英語キーボードはどのへんがいいの?
日本語キーボードしか使ったことないからわからん。
英語キーボードだと:押すのにいちいちShift押すのがマンドクセ
日本語キーボードだと " が遠過ぎてかなわん。
キーボードはどっちが不便ってこともないけど、仕事で両方使うからつらい・・・
なんで違う配置にしたんだろう
コロン、セミコロン、括弧とか &^'"*[] あたり、いつも打ち間違えるよ
シフト押さないとコロンが入らなかったり
Enterの隣にバックスラッシュがあったり
チルダが見つからなかったり
英語キーボードだと ' が押しやすいね。
'なんて全然使わないから、いらん。
markって使わない?
vim から入った人は mark 覚える必要ないのかもね。
確かに:はshift押さなきゃいけないけど,あまりに
多用するキーなので使ってるうちに違和感など
微塵も無くなる.
vimは英語キーボードを基に考えられたキーバインド
なので(あたりまでだが…),英語キーボードの方が
つじつまが合っている.
例えば前方検索の*と後方検索の#,英語キーボードでは
shiftを押しながらそれぞれ右手・左手の中指を延ばした
所にあるキーであるとかね.
(ここからはまったく個人的な意見だが),そもそも(vimに関係なく)配列は
英語キーボードの方がつじつまが合ってると思う.
'をshift押しながらだと"になったり,;をshift押しながらだと:に
なったり,なんか理論整然としてると思うのは私だけ?
ただ人間工学的には日本語配列の方が優れているという記事を
読んだ覚えもあるけどね.
ま,要は各々で使いやすい方で良いという結論なわけだが…
次 dvorak ユーザの反論どうぞ↓
dvorakは優れているがviとの相性は最悪
×理論整然
○理路整然
で、なんで日本語キーボードと英語キーボードは配列が違うんだ?
785 :
名無しさん@お腹いっぱい。:05/02/14 00:06:33
おれはdvorak使ってるけど
そんなに相性悪くないと思うが
>>784 なるほど、じゃあJIS配列の方が理路整然としてるね。
うむ。おれもそう思う。
ただ、今となっては慣れただけのような気がするがな。
qwertyでUnixコマンドは打てるけど、viは使えないな。
そろそろキーボードスレへ
hjklの場所さえ変わらなければ(dvorakはここで既にアウトだが)、
一応どんなキーボードでも 慣れれば 使えそうな気がする
ywでバッファに格納されているワードを検索したくてしょうがないのです
>>791 C-Rってやって"って表示されるのは、"を押せっていう意味だったんですね。クスコ。
そんな瑣末なキーバインドの話はWikiにでも書いとれよ小物
書いとれよ小物
まあ確かに<C-r>の次は"を押すのことが多いが。
漏れは=も結構使う
<C-R><S-2> or <S-'>って結構手間だよね。
挿入やコマンドでは貼り付けってあまりしないものなのかな
貼り付けの前には範囲選択や削除をするわけだから
挿入モードで貼り付ける場面ってそんなにないような。
800 :
名無しさん@お腹いっぱい。:05/02/15 09:58:28
vimからファイルをテキストとしてではなく実行させてひらくことってできますか?
>>800 実行してその出力を、ということであれば :help :r! を参照してください。
802 :
名無しさん@お腹いっぱい。:05/02/15 10:52:24
>>801 ご回答ありがとう御座います。
ちょっと違うようです。説明がへたくそで吸いません。
たとえば、あるmp3をvimのコマンドラインからひらいて音をならすとと言うようなことです。
:e であるディレクトリを開いて該当のファイルの上で x をおすと実際に実行できるのですがこれを
コマンドラインからできないでしょうか?
:!mplayer hoge.mp3 &
とかいう話?
help :start
>:e であるディレクトリを開いて該当のファイルの上で x をおすと実際に実行できるのですがこれを
vim のファイルブラウザはスクリプトで出来てるんだから、おんなじことやってるはず。
explorer.vim 見ろ。
805 :
名無しさん@Vim%Chalice:05/02/15 11:27:41
vimとは直接関係内のですが、テラターム越しで操作すると
<S-UP>などが使用できません。これは仕方がないんでしょうか。
今はmapしているので問題ないのですが・・・
端末が通さないんだからvim側ではにんともかんとも
>>802 環境がUNIXで、利用するプログラムが決まっているならば803さんの方法です。
Windowsで、そのデフォルト設定に従いたいのならば、ちょっとややこしいのですが
:!start rundll32 url.dll,FileProtocolHandler "ファイル名"
ってな感じです。
詳細は $VIMRUNTIME/plugin/explorer.vim の115行目あたりからを読んでください。
(´-`).。oO(このvim保守係はなんでこんなに知性の片鱗もないのだろうか・・・
画面をスクロールさせたいんだけど
カーソル? を移動させないで(カーソルがスクロールさせる前の文字の上のまま)
移動させることはできますか?
w3mで言う J みたいなことがしたいです
↑<C-Y>
↓<C-E>
憶えにくいキーではある
オレ結構使う。
(´-`).。oO(vimユーザはどうして知性の有無を評価できるのだろうか・・・
KoRoNさん、VisVimのことなんですが、
_vimrcで
:cnoremap <c-j> <left>
とマップしてあると
VC6から起動させようとすると
:drop hogehoge.cp:123p
の様にコマンドラインに表示されるだけになってしまいます。
VisVimの方で対処してもらうってことは無理ですか?
>>813 詳細までは調べていませんが、恐らくVim本体のOLEインターフェースに問題があるの
で、VisVimでの対応はしたくありません。ヘタにVisVim側だけで対応してしまうと、
別のキーマップで同じようなことが起こる可能性があるのです。
実際の修正をどうするかはわかりません。また申し訳ないですが、いついつまでに対
応できるというお約束もできません。
この件に限らず、既存のキーマップを書き換えるようなmapを利用する場合は、公開
されているスクリプトやマクロやツールが動かなくなってしまうことが十分に予想さ
れます。そのリスクを認識した上で、ある程度は覚悟の上でmapするようにしてくだ
さい。
# できればそういったキーについてはmapしないことを推奨しておきます。
じゃあレス返すなよ
つまり、警告は要らん、と言いたいのか?
KaoriYa版付属のformat.vimなんすけど、
文章を後で( V}gq などで)整形するとちゃんと禁則を処理してくれるのに
、入力中の場合はこのように句読点が先頭になってしまいまつ。
後でもう一度gqすればいいのではありますが、これなしで最初からちゃん
と禁則処理できるようにはならないでしょうか。
>>817 残念ながらなりません。スクリプトレベルでは実現が難しいのに加えて、かといって
本体にそのような仕組みを組み込むというのも現状では(主に政治的な理由で)容易で
はありません。将来、状況が変われば実装可能ですが、直近では難しいとお考えくだ
さい。
>>814 normal!的に処理することは出来ないのかなと思い、聞いてみたのですが
インターフェースの問題と言うならあきらめます。
># できればそういったキーについてはmapしないことを推奨しておきます。
私もそうしたいのですがcmapって特に余ってるkeyが少なくありませんか?
<right>と<left>をcmapさせるのに都合の良いkeyってありませんかねー?
Vim製作者でもないのに
> 歴史的(!)な事情で、できない
とかまるで自分が作ったかのような態度ってどうよ?
歴史的な事情かどうかは、作者じゃなくたってわかるでしょう。
820の文章をどう読めば821のように思えるのかがわからん。
815 From:名無しさん@お腹いっぱい。 Date:05/02/16 03:45:51 Mail:sage
じゃあレス返すなよ
821 From:名無しさん@お腹いっぱい。 Date:05/02/17 03:56:05 Mail:sage
Vim製作者でもないのに
> 歴史的(!)な事情で、できない
とかまるで自分が作ったかのような態度ってどうよ?
きっとKoRoNさんのファンなんでしょう。
祭りの会場はここか? 腕が鳴るぜ 踊るぞヤロウども!
____
∧ ∧ /;;;;;;;;;;;;;;;;;;;;;i\ , -``-、 , -``-、
/ ヽ ./ .∧ \;;;;;;;;;;;;;;;;;;;/ ヽ \ / )
/ `、 / ∧ `、;;;;;;;;;;;;;;/ \ \ / /
/  ̄ ̄ ̄ ヽ ヽ  ̄ ̄ /
( ̄ ̄ ̄ ̄ ̄祭り命 ̄ ̄ ̄ ̄) ̄祭り命 ̄ ̄ ̄)  ̄祭り命 ̄ ̄ ̄)
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄.\ ̄ ̄ ̄ ̄ ̄ ̄ \  ̄ ̄ ̄ ̄ ̄ ̄ \
/:::::::::: ヽ-=・=-′ ヽ-=・=- /=・- -==・- |・=- -=・=- |
ヽ::::::::::: \___/ / \___/ / \___/ /
ヽ__:::::::::::::: \/ /:::::::: \/ /::::::: \/ /
/\\ //\\ //\\ //\
| \\ // |\\ // |\\ // |
>>815 813 は KoRoN 氏にレスを期待したのだから、KoRoN 氏がどう答えようと、813 の捉え方次第であって、
たまたま 821 がそのレスを、嫉妬感情で捉えただけなんじゃ?
Windowsなら窓使いの憂鬱で弄れば特定アプリ内での
整合性保ったままでもかなりのカスタマイズができるよ
他のアプリに対してもワンショットトグルでvim風操作とか
vim風操作モード作って切り替えたりとかさ
>>826 それはそうだけど、gvim じゃないと無理じゃないか?
"/", "?"で検索して別な場所に飛んだ後、元の場所に戻るのって
マーク使わなきゃダメなんでしょうか?
オウyes!!バッチリできました。どうもありがとうございました
831 :
名無しさん@お腹いっぱい。:05/02/18 21:40:49
dicwin で、検索した単語の履歴保存してくれませんか?
何度も重複して検索している単語から印刷して、勉強したい。
>>831 申し訳ありませんが、KaoriYaで配布するdicwinにそのような機能を実装する予定は
ありません。
なんで?
>>832 漏れは昔棒辞書ソフトにその機能要望したら無視された
便利と思うんだがなあ
なんで自分で組もうとは思わないの?
>>833 dicwinは学習支援を目的としてはいないからです。またそうする予定もありません。
本当に勉強する気ならば、いきなり人が書くスクリプトには頼らず、まず手動で履歴
を残していくという手段を取ってみてはいかがでしょう。手動でやることが面倒にな
れば、キーボードマクロとして定義するのも良いでしょう。
<C-K><C-W>yj<C-W><C-P>:sp +$ ~/dichist.txt<CR>p<C-W><C-C>
こんな感じですかね。
# 個人的には、紙の辞書でひいたほうが遥かに覚えが良い、と考えています。
matchit.vimで、C言語の
switch
case
case
とか
if
else if
else if
とかって対応できますか?
とりあえずこんなかんじで書いてみたものの、ifと最初のelseで行
ったり来たりしてしまう。
let b:match_words =
\ '\%(^\s*\)\@<=\%(if\|switch\)\>:' .
\ '\<\%(else\|else\s\+if\|case\)\>'
は〜、Chalice は快適じゃのう
>>831 > dicwin で、検索した単語の履歴保存してくれませんか?
s:OpenDictionary(dic, word) 関数の、「Output result」と書いてあるとこらへん。
sp + ~/dichist.txt
call append('$', a:word)
xit
>>837 ヒント
autocmd FileType vim let b:match_ignorecase=0 | let b:match_words=
\ '\<if\>:\<elsei\%[f]\>:\<el\%[se]\>:\<en\%[dif]\>,' .
\ '\<wh\%[ile]\>:\<con\%[tinue]\>:\<brea\%[k\]>:\<endw\%[hile]\>,' .
\ '\<fu\%[nction]\>:\<retu\%[rn]\>:\<endf\%[unction]\>,' .
\ '\<try\>:\<cat\%[ch]\>:\<fina\%[lly]\>:\<endt\%[ry]\>'
cindentを設定していますがswitchのcase:文の中で break; を書いたあとで
改行してもcaseの位置までインデントが戻りません。これは正常な動作ですか?
パーサじゃないからね。
>>839 うーん。if else if elseはなんとかできたけど、最後のelseがな
い場合はうまくいかない。switchは全然だめ。
let b:match_words =
\ '\%(\%(^\|;\)\s*\)\@<=if\>:' .
\ '\<else\s\+if\>:' .
\ '\<else\>\%(\s\+\<if\>\)\@!,' .
\ '\<switch\>:' .
\ '\<case\>'
>>840 次のcaseで元に戻るからいいじゃん。
>>836 > # 個人的には、紙の辞書でひいたほうが遥かに覚えが良い、と考えています。
ソースコードを編集するときもVimなんて使わずに
紙にプリントアウトして鋏と糊で切り貼りすればいいじゃん。
学生時代 Vz エディタのマクロでそんなの作ったな。
epwing の辞書引きながら履歴残してくやつ。
重要単語なのに何度も引いてるような単語を重点的に覚えたりできたので、
使えないことはなかった。
>>842 勘違いしているね。
Vim の if には必ず endif が付いている。
C の if には、そういうものがない。
if( 1 ) puts("hello world");
だから C の if には、match_words の定義がない。
>>846 まあそうなんだけど、elseやelse ifがあったときはそこを経由し
て巡回したいなと思って。
特にswitch文でcaseを辿りたいときは便利かなと。
は〜、Chalice は快適じゃのう
>>847 >まあそうなんだけど、elseやelse ifがあったときはそこを経由し
>て巡回したいなと思って。
"else if のない if" と、"else if のある if" が入れ子になったらどうなる?
> 特にswitch文でcaseを辿りたいときは便利かなと。
case は1つですか? 複数の場合があるでしょ。
switch に、一意に対応しない。
:h 'matchpairs'
ここからはじまったの
>>848 caseはもちろん複数あるよ。
switch -> case 'a' -> case 'b' -> case 'c' -> switch
switch (a) {
case 'a':
case 'b':
case 'c':
たぶんmatchitではできないんだろね。あきらめるよ。
>>848の意味がわかりました。switchが入れ子になったときにcase
がどのswitchに対応するかわからないということですね。
switch
case
case
switch
case
case
case
case
defaultを使えばいいのか。defaultがない場合は先頭に戻らないけ
ど、まあいいや。
\ '\<switch\>:' .
\ '\<case\>:' .
\ '\<default>\:'
訂正。最後の:はいりません。スレ汚しのお詫びに全部貼ります。
if exists("loaded_matchit")
if !exists("b:match_words")
let b:match_ignorecase = 0
let b:match_words =
\ '\%(\%(^\|;\)\s*\)\@<=if\>:' .
\ '\<else\s\+if\>:' .
\ '\<else\>\%(\s\+\<if\>\)\@!,' .
\ '\<switch\>:' .
\ '\<case\>:' .
\ '\<default\>'
endif
endif
>>682, 705 あたりが関係してる問題だと思いますが、
- help ファイルが 'fileencodings' に対応してない
- 'encodings' に指定されてるエンコードを 'fileencodings' に含めると動作が変
というのを改善するパッチを書いてみました。
vim-6.x を使い始めて日が浅いということと(今までは vim-3.0を使用)、
iconv を使ったプログラムに触れるのが初めてなので変な所があったら教えてください。
こちらの環境は OS:NetBSD-1.6.2、vim-6.3(patch1-62、iconv 使用) です。
なお iconv は GNU libiconv 1.9 を使ってます。
パッチと説明が以下に続きます。
パッチです。
#define IS_THIS_NECESSARY 1 とかすると、前と同じになります。
begin 644 vim_fileio.patch
M*BHJ(&9I;&5I;RYC+F]R9PE3870@1F5B(#$Y(#`Q.C(P.C4T(#(P,#4*+2TM
M(&9I;&5I;RYC"5-A="!&96(@,3D@,3@Z,#(Z-#(@,C`P-0HJ*BHJ*BHJ*BHJ
M*BHJ*BH**BHJ(#<W,2PW-S8@*BHJ*@HM+2T@-S<Q+#<W-R`M+2TM"B`@"69E
M;F,@/2`H8VAA<E]U("HI(B(["0DO*B!B:6YA<GDZ(&1O;B=T(&-O;G9E<G0@
M*B\*("`)9F5N8U]A;&QO8V5D(#T@1D%,4T4["B`@("`@('T**R`C:69D968@
M25-?5$A)4U].14-%4U-!4ED*("`@("`@96QS92!I9B`H8W5R8G5F+3YB7VAE
M;'`I"B`@("`@('L*("`)8VAA<E]U"2`@("!F:7)S=&QI;F5;.#!=.PHJ*BHJ
M*BHJ*BHJ*BHJ*BH**BHJ(#@P.2PX,30@*BHJ*@HM+2T@.#$P+#@Q-B`M+2TM
M"B`@"7T*("`)9F5N8U]A;&QO8V5D(#T@1D%,4T4["B`@("`@('T**R`C96YD
M:68@+RH@25-?5$A)4U].14-%4U-!4ED@*B\*("`@("`@96QS92!I9B`H*G!?
M9F5N8W,@/3T@3E5,*0H@("`@("!["B`@"69E;F,@/2!C=7)B=68M/F)?<%]F
M96YC.PDO*B!U<V4@9F]R;6%T(&9R;VT@8G5F9F5R("HO"BHJ*BHJ*BHJ*BHJ
M*BHJ*@HJ*
[email protected]+#DT."`J*BHJ"BTM+2`Y-#0L.34T("TM+2T*("`@("`@
M("H@8V]N=F5R<VEO;B!T;R!55$8M."DN"B`@("`@("`J+PH@("`@("!F:6]?
M9FQA9W,@/2`P.PHK("-I9F1E9B!)4U]42$E37TY%0T534T%260H@("`@("!C
M;VYV97)T960@/2`H*F9E;F,@(3T@3E5,("8F("%S86UE7V5N8V]D:6YG*'!?
M96YC+"!F96YC*2D["BL@(V5L<V4**R`@("`@8V]N=F5R=&5D(#T@*"IF96YC
M("$]($Y53"D["BL@(V5N9&EF("\J($E37U1(25-?3D5#15-305)9("HO"B`@
M("`@(&EF("AC;VYV97)T960@?'P@96YC7W5N:6-O9&4@(3T@,"D*("`@("`@
%>PH@(`IF
`
end
説明1 help ファイルの 'fileencodings' 対応
:help で表示されるファイルのエンコードを 'fileencodins' に指定してても
ちゃんと表示されない原因についての説明です。
ファイル読み込み部で 'fileencodings' をなめる前に、
:help からの呼び出しだったら utf-8 か latin1 で処理する、
というコードが入り込んでます。
これが原因で 'fileencodings' が効きません。
この部分を削ると 'fileencodings' を見てくれるようになります。
コメントを読むと 『ヘルプファイルは utf-8 か latin1 じゃなきゃだめ』
と読めますが、別にユーザに任せてくれれば良いような気が。
#変換による情報の欠落をおそれてるのかなぁ。
バグではないのだろうけど、どうなんでしょ?
説明2-1 'encoding' と 'fileencodins' (現象編)
vim のソースを読むきっかけとなった問題です。
:set encoding=euc-jp
:set fileencodings+=euc-jp,iso-2022-jp,sjis (元の 'fileencodings' に無い値を追加)
とすると、euc-jp のファイルが開けるけれども、
それ以外の iso-2022-jp、sjis のファイルは文字化けしてしまいます。
これが
:set fileencodings+=iso-2022-jp,euc-jp,sjis
だと sjis のファイルだけが化けて、
:set fileencodings+=iso-2022-jp,sjis,euc-jp
だと全部表示されます。
どうも 'encoding' に設定されている値が
'fileencodings' に含まれているとその後のエンコードが無視されるようです。
ちなみに、文字化け時の 'fileencoding' は全部 euc-jp になってます。
説明2-2 'encoding' と 'fileencodings' (導入)
ファイル読み込み時は、'fileencodings' の先頭から
エンコード名抜き出しチェックしていきます(ここでは fenc とします)。
処理の流れを簡単に説明すると次のような感じです。
1. fenc から 'encoding' へ iconv が変換できるかチェック (iconv_open)
- ここでは iconv がそのエンコードの変換に対応しているか調べるだけ
+ファイルがどのエンコードかは、この段階で不明
- iconv が対応してなければ次の fenc にチャレンジ
- 対応していれば iconv ディスクリプタをゲット
2. iconv ディスクリプタを元にエンコードの変換を試みる (iconv)
- 変換失敗(fenc とファイルとのエンコードが異なる場合)で次の fenc にチャレンジ
- 成功すると 'encoding' に変換されたデータをゲット
という処理を 2. が成功するまで 'fileencodings' をなめながら行います。
#そして成功時の fenc が 'fileencoding' になると。
説明2-3 'encoding' と 'fileencodings' (原因と解決)
が、ソースを読むと、fenc と 'encoding' が同じならば、
1. のチェックを省くというように書かれてます。
#同じエンコードならば iconv のチェックの必要がないと考えた?
ただ、そうしてしまうと、iconv_open が呼ばれないわけで、
iconv ディスクリプタが手に入らなくなります。
そして、2. の処理の前には iconv ディスクリプタが有効かのチェックがあって、
無効だと iconv の変換が必要ないと判断され、2. の処理がスルーされます。
で、fenc とファイルのエンコードが一緒かどうか判断しないまま、
fenc を 'fileencoding' としたうえ iconv での変換もされません。
これでは、エンコードが違った場合は文字化けしてしまいます。
なので、1. の処理前にある『func と 'encoding'が同じなら〜』の判定を省き、
ちゃんと iconv_open を呼ぶようにしました。
説明2-4 'encoding' と 'fileencodings' (残る問題)
普通に動作しているようですが、一点問題があります。
:set encoding=euc-jp
:set fileencodings+=euc-jp,iso-2022-jp,sjis
の状態で、iso-2022-jp のファイルを開くと 'fileencoding' が euc-jp になります。
#sjis のファイルは sjis になりオッケー。
そこで原因追求のため iconv のテストプログラムを書いてみました。
すると euc-jp -> euc-jp の変換用の iconv ディスクリプタを使って
iso-2022-jp の変換を試した所、エラーが発生せず iso-2022-jp に変換されました。
#本来ならばエラーになって欲しい。
これのせいで、'encoding' == func == euc-jp かつファイルのエンコードが
iso-2022-jp だと文字化けしてます。
#euc-jp を想定している所に iso-2022-jp のデータが流れてきてしまう。
iconv のバージョンを上げて調査したい所ですが、
エネルギーが切れてきたので、とりあえず報告だけということで。
以上です。長文&連投失礼しますた。
長くて誰も読まないヨカーン。
>>860 1について。そういう仕様ですし「むしろhelpの翻訳はUTF-8で書くべし」と考えた方が
なにかと都合が良いです。特に原文の文字を残したい場合など、CP932やEUC-JPでは表
現不可能な場合があり、実際問題KaoriYaのsvn上にある翻訳の最新版は全てUTF-8にし
ましたから、今後公開する版では全部UTF-8になります。仕様を変更したい、という話
でしたらvim-devかBram氏に直接提案してみてください。
2について。簡単に言ってしまえば、それはfencsの設定の仕方の問題で、わざわざソー
スを修正する必要はありません。enc=euc-jpならば
set fencs=ucs-bom,ucs-2le,ucs-2,iso-2022-jp-3,utf-8,cp932
これで良いでしょう。
Vimは「encへの変換をfencsの値を先頭から順番に試して成功したところで止める」と
いう文字コード判別アルゴリズムを採用しています。そして全て失敗した場合にはenc
がそのまま使われます(無変換)。ですからencに等しい値をfencsに入れる必要はありま
せんし、むしろ下手に入れてしまうとご指摘の問題が生じます。さらにそれだけではな
く、日本語での利用ではfencsに書かれた順番も重要な問題になります。KaoriYaで配布
しているパッチに、日本語向けのfencsを自動設定するスクリプトや、誤認識をある程
度補正するスクリプトが含まれているのは、それらを回避する目的です。
本質的な修正には、いまの場当たり的な文字コード判別アルゴリズムは破棄して、
Gaucheのようなしっかりした判定アルゴリズムを積みたいところですが…Bram氏を納得
させるには難しい面があります orz
>>861 > Gaucheのようなしっかりした判定アルゴリズムを積みたいところですが…Bram氏を納得
> させるには難しい面があります orz
一応、認識している問題を具体的にしておきます。
1. 文字コード判別ライブラリとして(世界規模で)スタンダードなものがない。
2. 判別ルーチンは変換ライブラリが持っているのが自然に思われる。
しかし、POSIXで定義されるiconvにはその口が無い。
3. Vimの現在の方法はある程度以上、妥当に働いてしまう。
>>861 1はやはり仕様なんですか。
政治的なことは面倒なんで放置プレイかしらん。
>Vimは「encへの変換をfencsの値を先頭から順番に試して成功したところで止める」と
私もそう理解してますが、
変換に成功してない(試していない)のに成功と判定するのは変だと思ったのです。
何をもって変換成功とするかのとらえ方の問題ですかね。
>>862 はい、文字コードを判別する仕組みが iconv に無いことは調べてる最中にわかりました。
そしてそれで苦労している人がたくさんいることも。:)
日本語だけならまだしも、全コードとなると大変ですものね。
>>861 > 1について。そういう仕様ですし「むしろhelpの翻訳はUTF-8で書くべし」と考えた方が
> なにかと都合が良いです。特に原文の文字を残したい場合など、CP932やEUC-JPでは表
これってencがutf-8以外だと変換(表示)できなくてむしろ困る気がする。
結局は変換できない文字をつぶさなきゃなんないし、
最低限、encに合わせて変換した物を利用できるようにすべきだと思う。
そのほうがチープな環境もサポートするって意味でvim的な感じがする。
ていうか現状そうなってると思うんだけど、違うんかな。
>>864 後ろばかり見ているのはいかがなものかと。
>>863 > 何をもって変換成功とするかのとらえ方の問題ですかね。
あるコードから同じコードへの変換は、どのような入力であっても明らかに成功する
とわかっている(仮定している)から、ということなのでしょうね。むしろ変換に成功
しないようなiconv実装は知らん、ぐらいの勢いが感じられますよね(笑)
あとはドキュメントの問題ですかね。help 'fencs'には幾つかのダメな設定例があ
がっていますが、encと同じ値を指定するという例はありませんから、追加するよう
に提案するのは1つのアイデアです。が、やはり本質的にはちゃんと自動認識して欲
しいですよね。
>>864 > これってencがutf-8以外だと変換(表示)できなくてむしろ困る気がする。
それにはiconvが無いと使えなくなるとか、iconvの実装の問題というところもあるん
ですが、大元のデータとしてはUTF-8で表現しておくのは決して間違いではありませ
ん。あとは、どのタイミングで何を使ってコンバートするか、だけの問題です。
> そのほうがチープな環境もサポートするって意味でvim的な感じがする。
> ていうか現状そうなってると思うんだけど、違うんかな。
現状からは否定できないところです(苦笑)。でも個人的には最終的に、encはUTF-8固
定にするのが一番良いと考えてます。そして必要に応じて表示する直前でtermencを
使う。どの文字を潰してどう表現するかはiconvの実装に任せれば良いわけです。
GNOME,KDE,WinならばUTF-8からiconv使わずに表示できますから、コードが小さく単
純にできるし、基幹部分も速くなります。
# Vim7ではリファクタリングするとか宣言してたと思うけど、本当にするのかな?
867 :
853:05/02/19 23:56:44
>>866 うっ、私の書き方が悪かったせいで誤解されてるヨカン。
>>856-858 で言いたかったのは
'fileencodings' の中で 'encoding' と同じエンコード*名*が出ただけで
変換作業をスキップしてしまうのはマズイのでは、
ということです。
これによって、実際のファイルのエンコードと 'encoding' が異なるのに
変換が行われない問題が起きています。
#んで、その問題を直すパッチを書いたと。
>>859 で言ったのは私の iconv 環境の問題で vim は悪くありません。
同じ A => A のエンコード変換を設定している所に
B のエンコードを突っ込んだらエラーも出ずに B が出た、
というのがその問題です。
#本来なら想定してない B のエンコードを突っ込んだ時点でエラーにならなきゃおかしい。
全然別の問題を一緒に書いたのがまずかったですね。
A->Aの変換器にBをつっこんだらそのままBが出力されるってのは妥当な仕様だと思う。
iconvの場合は実際に変換してみてデータが不正なら変換に失敗するってのは「副作用」であって、
本来は入力がAであることを利用者(プログラマ)が保証すべきなんじゃないかな。
だからiconvにデータの検証を求めるのはそもそもおかどちがいだし、
「A->Aの変換」とかいう無駄を避けるのも妥当な選択。
副作用が必然である以上はそれを利用するのも妥当だと思う。
>>868 あー、そういうものなんでしょうか。
個人的には A のエンコード以外の入力は全部不正なデータのエラーにしてくれる方が好みです。
もちろん、B のエンコードがきても不正なデータとして認識できない可能性もあるから
データの検証を iconv にさせるのは正しくないと思います(そのための関数でもないだろうし)。
>>869 > 個人的には A のエンコード以外の入力は全部不正なデータのエラーにしてくれる方が好みです。
> データの検証を iconv にさせるのは正しくないと思います(そのための関数でもないだろうし)。
矛盾してるんだが。
矛盾してないとすれば別に検証してから変換かけろってことか、
両方をするプログラムを書くってことだが、どっちも無駄な労力だろう。
>>870 理想と現実を書いたので矛盾してます。
また紛らわしく書いてしまってすんません。
個人的には
・判別ルーチンは変換ライブラリとは別にして、判別は変換前にする
・判別ルーチンは指定可能にする
がいいと思う。
>>872 > ・判別ルーチンは変換ライブラリとは別にして、判別は変換前にする
> ・判別ルーチンは指定可能にする
もちろん、それが直近で実現可能な方法の1つなのですが、その判定結果がそのまま
変換ライブラリに渡されることを考えると、どうにもスッキリしないんですよね。
iconvのほうを直して、fromにautoみたいにしておけば良いようにする手も無くは無
いですが…あ〜そうなるとVimがfencを決定できませんね。
判別で 1つに絞り込めるとは限らないなら
判別法は複数候補があっていいはず。
判別ルーチンを iconv に実装してそれに固定するのは
うまくないような。iconv で指定可にする手もあるか。
なんて。
ファイル自体に何か書いとくと強制的にそのエンコーディングになる、
とかって出来ますっけ?
モードライン使って
vim: set fenc=cp932 nomodified:
って感じ?
>>876 最初に開いたときは文字化けするけど、:eで読みなおすと化けなく
なる。
>>874 Gaucheのヤツはかなり賢くて、完全には絞り込めなくても点数(確率みたいなもんで
す)が計算されて、順位付けされます。
# 構造も綺麗で、さすがScheme屋さんだと感心しました。
複数候補があったとしてもプログラムで使う以上、最終的に1つを選択しなければな
りません。その意味でもGaucheの方法は妥当と言えます。それに失敗した場合はもう
仕方ない。Webブラウザが文字セットの判定に失敗するのと同じですね。敢えていえ
ば、絞られた複数の候補とその順番を取得する仕組みが欲しいかもしれません。
:help は compatible モードでも動作する必要があります。
fenc の設定によって、見えなくなってしまうようではヘルプの意味が無くなりますし
その上で utf-8 で統一しようという風に決まったと記憶しています。
local additionals の判断も、utf-8 前提でしか処理していません。patch 6.3b.018
880 :
名無しさん@お腹いっぱい。:05/02/21 10:41:48
kaoriyaさんとこのパッチを当てたら、uim-fep 使えるようになってるけど、
日本語入力すると、確定前とか、複数候補選択時とか、
文字化けする(というかカーソルの進みが1半角分しか進まない感じ)
のは、うちだけでしょうか?
882 :
名無しさん@Vim%Chalice:05/02/21 11:48:01
q: で履歴画面を開き、リターンでコマンド実行後、
画面が閉じずに続けてコマンドを選択実行したいのですが
方法はあるでしょうか?
C-cしてエンター押してもだめでした・・・
>>881 ご返答ありがとうございます。
PCいじっている時間がなく、しばらく返答できないです。
再現性などその他情報まとめましたら、改めて質問させて頂きます。
vimでtex書いてる方、どんなスクリプト使ってますか?
vim-latexっていうのを入れてみたんですが、どうもimapがうまくいってないみたい
885 :
名無しさん@お腹いっぱい。:05/02/23 12:09:03
>>884 別に何も使ってないなぁ
大昔に書いたMakefileで :make と、foldmethod=marker にして
適当に折りたたみしてるくらいかな?
887 :
名無しさん@お腹いっぱい。:05/02/23 13:11:28
たとえば fa で a の文字に飛ぼうとしたときにIMEがオンになってIMEをオフにしてからもういちど a を打ち直さなければならないときがあるんですが
これをなくすにはどうすればいいのでしょうか
今やってみたのは
1. IMEのキー設定で<ESC>にIMEオフを割り当てて
2. vim内で :map <ESC> <ESC><ESC>
としてみたのですがなぜかずっとノーマルモードで〈ESC〉を押したときの音がいつまでも鳴りつづけて操作できなくなるんですがどうしてなんでしょう。
そらあんた…。
ESC 入力のループになるでしょ。
889 :
名無しさん@お腹いっぱい。:05/02/23 13:19:53
>>887 inoremap <silent> <esc> <esc>:se imi=0<cr>
891 :
名無しさん@お腹いっぱい。:05/02/23 14:05:57
>>890 ありがとうございます!!
勉強不足でコマンドの意味はわからないのですが試してみます。
>>885 WinXPのgvimです。そういえばここはUNIX板でしたね。
>>886 慣れればマクロとかなくても平気なのかもしれないですね。
>>892 僕はtex_autoclose.vimと自分で書いたftpluginを使ってます。
inorea <buffer> sec \section{}<left>
inorea <buffer> sub \subsection{}<left>
inorea <buffer> subsub \subsubsection{}<left>
inorea <buffer> par \paragraph{}<left>
inorea <buffer> use \usepackage{}<left>
inorea <buffer> \i \item
inorea <buffer> \r \ref{}<left>
inorea <buffer> \l \label{}<left>
inorea <buffer> beg \begin{
inorea <buffer> the \begin{thebibliography}{9}<cr>\end{thebibliography}<esc>kA
inorea <buffer> enu \begin{enumerate}<cr>\end{enumerate}<esc>kA
inorea <buffer> des \begin{description}<cr>\end{description}<esc>kA
inorea <buffer> ite \begin{itemize}<cr>\end{itemize}<esc>kA
inorea <buffer> cen \begin{center}<cr>\end{center}<esc>kA
inorea <buffer> ver \begin{verbatim}<cr>\end{verbatim}<esc>kA
setl isk+=_
>>893 そういうの初めて知りました。
で、abbreviationのヘルプ見たら、うまくいかなかった原因はset pasteしてたせいだとわかりました。
どうもです。
895 :
名無しさん@お腹いっぱい。:05/02/24 23:13:00
いま趣味でpythonの勉強しているんですがvimでコードを書いているときにバグ探しみたいなことってきるんですか?
ヘルプ見たら:makeでC(Cはまったく知らない)とかだったら出来るみたいなんですがpythonでやると出来ない見たいみたいなんですが実際どうなんでしょう?
898 :
名無しさん@Vim%Chalice:05/02/25 20:37:36
:g/String/number の出力結果をエラーファイルにしたいのですが、
マクロを組んで、
:redir! @a
:g/String/number
:redir end
:Scratch
"aP
:set buftype=quickfix
までやったのですが、エラーフォマットが問題なのか動きません。
やろうとしてることが無理なのでしょうか。
:redir! > tmpfile
:g/String/echo bufname("%").":".line(".").":".getline(".")
:redir end
:"適当に空行削除
:cfile tmpfile
出力フォーマットについては:help 'errorformat'
900 :
名無しさん@お腹いっぱい。:05/02/27 12:42:39
アスキーコード以外の文字コードを入力することってできますか?
例えば、0x82 や 0xFF などなど
:e で新しくファイルを開くのですが
また前のファイルにもどりたくなったら :eで開くしかないのでしょうか?
screenを使っているのですが Vimではできないのかと思いました
画面を横に分割したときに分割のサイズを変えるにはどうするのでしょうか?
縦なら C-w 5+ とかで変えれるんですけど・・
:h window-resize
>>902 Ctrl-^が楽だよ。前のバッファに移動する。
ちなみにCtrl-W Ctrl-^で分割して移動もできる。
:lsでバッファリスト表示させて、番号とCtrl-^で任意のバッファに移動も可能。
908 :
名無しさん@Vim%Chalice:05/03/01 10:51:26
エラーファイルのように、普通のバッファの現在行をカラー表示できるでしょうか。
YES
>>908 結構FAQなので過去スレとかに書いてある
終了時にターミナルのウィンドウタイトルを「Thanks for flying Vim」に
変えやがるのが気に入らないんだが…。
>>911 :set notitle とかどうよ?
今更だけど、Yの動作が納得いかない。
Dはd$
Cはc$と動作が同じなのに
Yはyyと動作が同じ
よく使うコマンドだけに
Yからくらべるとy$はキーストロークが一つ多いからなんか困る。
こうなった理由ってなんかあるんですか?
>>912 ぐはっ、なぜ気づかなかったのか… orz
916 :
名無しさん@お腹いっぱい。:05/03/01 18:11:30
input()でcommandのcompleteみたいな事をしたいのですが、
具体的にはカレントバッファの単語を補填したいのですが、可能でしょうか。
inputの履歴もいいのですが。
>>915 その、いろんな環境を使わなきゃいけなくて、(viの設定ファイルすらおけないものもある)
基本的にデフォルト状態から変更せずに、使いたいんです。
だから、仕方がないからy$を使っているんですけど、
なぜ、こう、ちゃんとコマンドが考えられていそうなviで、
こういうキーバインドがあるのかと疑問に思ったもので。
>>917 > なぜ、こう、ちゃんとコマンドが考えられていそうなviで、
> こういうキーバインドがあるのかと疑問に思ったもので。
むしろviらしい。考えたわけではなくて、いきあたりばったりなかんじ。
920 :
名無しさん@Vim%Chalice:05/03/03 12:25:40
functionの中で、# の検索コマンドを使用しているのですが、
検索文字があったか、なかったかのステータスを知ることはできますか。
>>920 実行前後でline('.')とcol('.')を比較すればある程度わかるのではないでしょうか。
でもステータスを知る目的ならば、search()使ったほうが簡単です。カーソルの下の単
語はexpand('<cword>')で取れるので、それを\<\>で囲めばほぼ#と同じ動作になります。
922 :
名無しさん@Vim%Chalice:05/03/03 14:11:23
>>921 ありかとうございます。今回はline、colでトライしてみます。
923 :
名無しさん@Vim%Chalice:05/03/03 16:33:46
eclipceみたいなコードアシストを実現しようと思い、まだ不完全ですが
以下のようなものを作ってみました。
例えば、
value = FileIO::
まで入力し、<C-]>すると、タグファイルから候補をScratchに出力し、
Scratch上でEnterを押すと、
value = FileIO::open( char , int)
が補填されるというものです。
:imap ^] <ESC>maByE:call MyTag("<C-R>"")<CR>
"入力中の文字をコピーし、それを引数に関数呼び出し。
function! MyTag(tagstr)
:let tagfile = &tags
:let @a = system("grep '^".a:tagstr."' ".tagfile)
"タグファイルから候補を取得
:normal ^Wnj
:set buftype=nofile
:normal "aP
"バッファを開き、ペースト
:v/[[:space:]]f[[:space:]]/d
:silent % !sort
"関数のみ抽出しソートする
:silent %s/.*\/\^[[:space:]]*\([^)]\+)\).*\$\/.*/\1/g
"タグの中身だけ取り出す
:map <buffer> <CR> ddggPjdG:%s/[\*&]*[[:space:]]*\w\+[[:space:]]*\([,)]\)/\1/g<CR>:%s/^.*[[:space:]]\([A-z0-9_:]\+\)[[:space:]]*(/\1(/g
<CR>:%s/\([(,]\)[[:space:]]*[^[:space:]]\+[[:space:]]*\([^[:space:]]\+\)[[:space:]]*\([,)]\)/\1 \2 \3/g<CR>0y$^Wc`aBPld$
"いろいろしてますが、関数名と、引数の型のみに整形して、元の場所に貼り付ける
"mapを作成。
endfunction
もっと改良するつもりです。
いちおう言うけど
:help ins-completion
:help compl-tag
925 :
名無しさん@Vim%Chalice:05/03/03 17:06:24
>>924 そうですね。最初は使用していたのですが。C++やjavaだとクラス名+メソッド名で
うまく補填できなかったので、オリジナルを考えました。
あと、候補が複数あるときに、すべてをリスト表示したかったので
ない知恵絞ってやってみました。
>>923 http://vim.sourceforge.net/scripts/script.php?script_id=747 コード補完についてはIntellisenseって言うのがポピュラーらしいですね。上のはWin
専用で、スクリプト+αにより実現されています。
スクリプトの書き方について3つ。行頭の「:」はいらないです。正規表現中の
[[:space:]]は\s(逆は\S)と書いた方がスッキリします。mapよりはnoremap、さらにい
えばnnoremapのほうが良いでしょう。
Vim7ではネイティブレベルで、もう少し作りやすくなるような意気込みだったと記憶し
ていますが、現状どうなっているんでしょうか…気になるところです。
927 :
名無しさん@Vim%Chalice:05/03/03 19:07:24
>>926 ご指摘ありがとうございます。早速修正してみます。
ネットでみてみましたけど、すごいですね。
是非と思ってかおりや版の最新版にインストールしてみましたが、
::を入力すると、何かが動いている感じはしますが何も起こらなかったです。
perlもcygwinの5.8.5が入っているし、ん〜もう少し調べてみます。
yzisってwxWidgetsでやりゃよかったのに…
Win版がでるのは相当先っぽいな
KDEありきだから独立したんでしょ?
930 :
名無しさん@お腹いっぱい。:05/03/09 18:10:20
"1234567890"
↑ カーソル
上の状態で、香りや番gvimにて di" で 1234567890が削除されますが、
同じバージョンの普通のvimだど反応無しです。
mapで見ても特に設定はされていないです。
拡張されているのでしょうか?
windows の話で恐縮ですが、
右クリック->編集で gvim を起動させるには、
やっぱりレジストリの訳わからんところをいじるしかないんでしょうか。
あるいは
右クリック->[vim で編集]
などのメニューを追加する方法でもいいですけど。
ちなみに香り屋版使ってます。
932 :
名無しさん@お腹いっぱい。:05/03/09 19:23:54
AIXで、+multi_langでvim63をコンパイルしたのですが、メッセージが日本語になりません。
:language の結果は Current language: "Ja_JP Ja_JP Ja_JP Ja_JP Ja_JP Ja_JP"
:echo $LANG の結果は "Ja_JP" です。
AIXで メッセージを日本語化て・・
アフォかいな
>>930 いわゆるテキストオブジェクトはVim7で正式に取り込まれ(てい)ます。香り屋版6.3
にはその実験実装が含まれています。
[HKEY_CLASSES_ROOT\*\shell\vim]の(規定)に「vim で編集」
[HKEY_CLASSES_ROOT\*\shell\vim\command]の(規定)に「"C:\Program
Files\vim-6.3\gvim.exe" "%1"
」
こんな感じで拡張子関係なしで追加できる。
ディレクトリにも付けたかったら
[HKEY_CLASSES_ROOT\Folder\shell\vim]
で同じようにすればいい
この際ファイラーを使いだすのもいいと思うよ。
clipboardに長ーい文字列が入ってるのにうっかり
:<C-R>*
なんてするとあっちの世界に逝っちまって鬱
>>934 >>937 >>939 どうもありがとう。
「送る」が簡単だったんで、まずそれで様子見てみます。
レジストリは仕組みがわかってないと後々混乱の原因になりそうなので、
極力手動ではいじりたくないんですが、
いじらないと不便なところもあって困りますね。
vim 6.3.54 にkaoriya パッチを当てた物をSolaris9 IA版でSSH経由でTeraTermから使用しています。
configure オプションは
./configure --with-features=big --enable-multibyte --enable-xim --enable-fontset --with-vim-name=vim6
です。
で、vimを起動すると、TeraTermのタイトルバーが化けます。
vimを起動した時点でまず、"[フオツ鷯 - VIM" となって、終了する時点で”Vim 、ネ、テ、ニ、ッ、?、ニ、「、熙ャ、ネ、ヲ” となります。
.vimrcはとりあえずkaoriyaパッチに付いてきた物をそのまま使っています。
タイトルバー文字化けの原因と対策を教えてください。
944 :
名無しさん@Vim%Chalice:05/03/10 11:05:35
>>943 > タイトルバー文字化けの原因と対策を教えてください。
原因は、Vimの送ったeuc-jpによるタイトル変更命令を、TeraTermがそのままcp932と
して扱ってしまっていることです。対策はTeraTermをeuc-jpに対応させるか、Vimに
タイトルを設定させないか、Vimで日本語メッセージを使わないようにする、という
ところでしょうか。
タイトルを設定させないようにするには以下を参照してください。
:help 'title'
:help 't_ts'
:set t_ts=
>>946 ありがとうございます。早速修正しました。
function を key に bind 〜とかはないかな。
map だと :<C-U>call 〜 とか、
vmap だと :<C-U>exe "normal! gv"<Bar>call 〜 とか、
めんどい、って書いててそうでもないような気がしてきた。
読み直すとよく解らん文だな。
つまり、function を key に直接 bind したいってことです。
でもまあいいかと、そう思ったわけです。
>>949 ワレワレハ例題ヲマジエタ簡潔ナ説明ヲ希望シマス。
鯖缶@vimwikiです。
以前、”vim.org みたいに tips をテキストにして一括DLできるといいな。”
と言う要望が出ていたので実装してみました。vimで
:e
http://vim.mydns.jp/tipsdump.php を実行するとチョット幸せになれるかも知れません。
:e でURL書くときにGETのパラメーターが渡せないの知らんかった…
>>952 GJ。そのインターフェースの方向は面白いですね。
せっかく投稿して頂いたtipsをどうすれば
より有効に活用されるのかを考えてみました。
vimで直接閲覧できればそのまま.vimrcにヤンペしたり
ヘルプを参照したり出来るかなぁ…って感じです。
すいません、今MyDNSだダウンしているのでVimWiki参照できなくなっています。
どうしてもすぐ見たい方はhostsにでも書いてください。
NameVirtualなのでIPでは無理です。
61.115.114.128 vim.mydns.jp
>>950 2: → :.,.+1
{Visual}: → :'<,'>
ってなるでしょ。この : 以降の部分を消すため。
>>951 vnoremap <silent> ff :<C-U>exe "normal! gv"<Bar>call search('hoge', 'W')<CR>
とかを
vbindkey ff search('hoge', 'W')
みたいにしたいってこと。
さらにいえば
noremap <silent> ff :<C-U>call search('hoge', 'W')<CR>
vnoremap <silent> ff :<C-U>exe "normal! gv"<Bar>call search('hoge', 'W')<CR>
とかを
bindkey ff search('hoge', 'W')
みたいにまとめたいってこと。
bindkey, vbindkey って名前は適当。
>>959 マリガトウゴザイマス
:commandでそういうコマンドを定義できまする。
まぁめんどいと言えばめんどい。
>>961 それだとキーにバインドというのから外れるかな
>>962 関数をキーにバインドするコマンドを作れ、ってことでしょ?
そういう意味か。
>>965 次は「Wikiに書き込みしたい」という要望が来てしまうに500vim
ああ…やっぱり…
あっ、番号間違えた…
あっ、956も965も漏れだった… orz
>>966 多分、突き詰めていくと2chのdat形式+chaliceみたいに
なりそうな気がしますが、2chの場合は追記のみなのに
対して、wikiの場合には編集が有る上に原則WEBブラウ
ザを対象に作られているのでかなり難しい気がしていま
す。特に、更新の衝突が起こった時とか…って言い訳
モード突入しちゃいますが…(汗
まぁ、そのうち時間が出来て気が向いたらやるかも知れ
ませんがvimスクリプトはあまり得意でないのでやった
としてもいつ出来るのやら…
>>970 httpへのwriteがPOSTかPUTで対応していれば、Wikiの編集用フォーマットのテキストだ
けをそのまま読み書きできるページを作るだけで、Vimスクリプトでなんとかする必要
は無いでしょう。それはそれでWikiを管理するVimユーザには需要がありそうですね。
# Chaliceみたいになってしまったら、折角の面白い仕組みが台無しかも。
それだったら単に cvs でドキュメントを管理すればいいだけじゃないかな。
衝突のマージとか差分表示なんかもプラグインでできるし。
しかし wiki のだれでも書けるという精神を尊重するならば
anonymous cvs で だれでも commit ということになるのか...
管理者にはなりたくないな。
>>972 ブラウザで見れて、かつ特別なツールやスクリプトが無くてもVimで読み書きできる、
ってあたりに面白さがあるんじゃないですかね。cvsって便利だけど、何も知らない人
に使わせるのは結構大変ですし。
一応調べてみたんですけどHTTPのwriteは無いみたいです。cadaverを使ってdavなら
読み書きできるみたい。ということはsvnなら何かできるかもしれませんね。
>>973 >ブラウザで見れて、かつ特別なツールやスクリプトが無くてもVimで読み書きできる、
>ってあたりに面白さがあるんじゃないですかね。cvsって便利だけど、何も知らない人
>に使わせるのは結構大変ですし。
禿同
>一応調べてみたんですけどHTTPのwriteは無いみたいです。cadaverを使ってdavなら
>読み書きできるみたい。ということはsvnなら何かできるかもしれませんね。
netrw.vimのソースに
" Writing:
" http: not supported!
って、書いて有りますねぇ… orz
cadaver使うのは面白そうですね。しかし、そうするとアクセスするURLがファイルの
実体を差していないといけなくなるはずで、尚且つPHPが介入しないってなるので色
んな所で問題が有りそうです。
まず、URLですが現状 /vim.php/tips/1 の場合実体は /wiki/746970732F31.txt とな
ります。でもまぁこれは編集用のURLを併記すれば何とかなりそうですが、今度は
ページの更新にPHPが介入しなくなるので最終更新日とかdavとwikiとの間で更新の衝
突が起きた時なんかが問題になりそうです。
うーん…難しいですねぇ…。あと、wiki側に更新の履歴が残らなくなったり、メール
での通知機能が使えなくなりそうです。禿同とは言った物のやはりvimスクリプト無
しでは無理なような気がしています。
>>974 > まず、URLですが現状 /vim.php/tips/1 の場合実体は /wiki/746970732F31.txt とな
> ります。でもまぁこれは編集用のURLを併記すれば何とかなりそうですが、今度は
> ページの更新にPHPが介入しなくなるので最終更新日とかdavとwikiとの間で更新の衝
> 突が起きた時なんかが問題になりそうです。
たとえばURLを/vimedit.php/wiki/746970432F31.txtとして、GETするとその実体のダウ
ンロード、POSTするとwikiとして(確認なしで)書き込み、みたいなPHPを作ることって
できますか?
GET時には実体の先頭にmodelineを付けて、逆にPOST時には先頭のmodelineを除去でき
るとさらに良いかも。そうすれば、(ft)pluginでwriteをwgetの--post-fileにマップし
て書き込んじゃうというので、Vim側は難しくないような気がします。
# pluginのほうは私が書いても良いし。
>>975 うーん…出来るかどうか即答が出来ませんのでまったり調べておきます。
>>977 すばらしい。
> # plugin は作ってもらえるとうれしいなぁ…
了解です。
>>978 >> # plugin は作ってもらえるとうれしいなぁ…
>了解です。
うほっ、やった。このNameVirtualは私のPukiWiki実験サイトなので
テストが必要ならばどんどん使ってやってください。
>>980 KoRoNさんお疲れ様でした。
PHP側のコードを少し整理したら、本番へ反映しますので
しばらくお待ちください。って、今日はもう無理ですが…
>>982 PHP側でまだまだ問題山積ですが、とりあえずVimWikiへ反映しました。
pukiwiki_edit.vimですが autocmd BufReadPost は必要なかったようです。すいませ
ん。何故かと言うと、PHP側で編集用ページを返すときに & を %26 に変換して吐き
出すという余計なことをしていました。PHPがわで余計な処理を外しましたので
pukiwiki_edit.vimのBufReadPostは削除してください。そうする事でPHPは生データ
をそのまま吐く => vimはそのまま表示 で問題なくページを更新できることを確認し
ました。pukiwiki_edit.vimのBufWriteCmdはそのままで問題ありません。
配布するのは面白そうですねぇ…しかし、現状としては何とか読める程度にはなりま
したが、VimWikiのサイト構成に激しく依存している上にハードコードしまくりなの
で一から書き直したほうがよさそうです。とりあえず、現状のソースを公開してみん
なでやってみますか?ソースをwikiに貼り付けてみんなでvimで編集しまくるとか…
PukiWikiは設定次第で変更履歴を全て保存しておくことも出来るのでCVS代わりに使
えるかもしれません。
>>983 > pukiwiki_edit.vimですが autocmd BufReadPost は必要なかったようです。すいませ
修正してcommitしておきました。関係ないですけど現状の、書き込んだ後のフローは考
え直した方が良いかもしれませんね。再読込するか、レスポンスの内容で本文を置き換
えるか、っていうところでしょうか。
> したが、VimWikiのサイト構成に激しく依存している上にハードコードしまくりなの
> で一から書き直したほうがよさそうです。とりあえず、現状のソースを公開してみん
> なでやってみますか?ソースをwikiに貼り付けてみんなでvimで編集しまくるとか…
そうですね。とりあえず公開しておいて、使いたい人が直すとか、難しそうなポイント
を質問&回答するとかしていくのでも良いかも。マターリと行きましょう。
>>984 そうですねぇ。書込み後はレスポンスで置き換えが良さそうです。
とりあえず、PHPのコードをwikiに貼り付けておきました。
実装はボロボロですがPukiWikiをインストール出来る人であれば
簡単に導入できるようになっています。興味のある方はどうぞ。