トップページunix
994コメント386KB

Vim6 Part6

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

前スレ
http://pc.2ch.net/test/read.cgi/unix/1045365370/

関連情報は>>2-6あたり。
0422名無しさん@お腹いっぱい。NGNG
>>421
silent のスペルを間違ってないか?
0423名無しさん@お腹いっぱい。NGNG
>>421
:h :silent
0424420NGNG
:help silent で出てくるけどなぁ…?
:h sil でもいいけど。
0425名無しさん@お腹いっぱい。NGNG
>>424
-silentが出る場合もあるよ。
環境によって違うから、ヘルプ見ろ!って時はverboseに示した方が無難。
0426名無しさん@お腹いっぱい。NGNG
>>421
:h sil<TAB>
を押してみたら?
sil がキーワードのいろんなヘルプを見られますよ。
0427KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
<TAB>の代わりに<C-D>を押すとリストがでます。それと
確か<TAB>は'wildmenu'が設定されないと出てきません。
0428421NGNG
<C-D>でリストには出るんですけど、:h silすると
"various.txt"
E434: タグパターンを見つけられません。
となります。
ヘルプファイルを全部日本語のものに置き換えたせいですかね。
0429350NGNG
だいぶスレ違いな質問になっているような気がするので、最後にしますです。

Solaris8でlibiconvの変換がうまく行かない件ですが、
環境変数のLIB、INCLUDE、LD_LIBRARY_PATHを設定しても、
make時のlink.shで、don't need と言われ、
-liconvが除外されてしまうのが原因っぽい気がします。
config.mk で -L -R を指定しても同じでした。

src/auto/link.sed から iconv の部分を削除すれば、リンクはされるんですが、
やはり変換はできません。

どうしてもiconvが必要というわけではないので、できなければあきらめますが、
なんか悔しいので、どなたかわかるかたいませんでしょうか?
0430KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>428
> ヘルプファイルを全部日本語のものに置き換えたせいですかね。
その通りです。
0431名無しさん@お腹いっぱい。NGNG
>>429
# Vimに関係ないわけではないから別にスレ違いにはならないと思うけど。

>>350以下を見たところ、「GNUの」libiconvを入れたという解釈でよろしい
 のですよね?(GNU libiconvの最新バージョンは 1.9.1 です)
・環境変数 LD_LIBRARY_PATH は(コンパイル時ではなく)実行時に指定するものです
 が、大丈夫でしょうか。
   % env LD_LIBRARY_PATH=${HOME}/lib ldd /path/to/bin/vim
   % env LD_LIBRARY_PATH=${HOME}/lib /path/to/bin/vim
   $ LD_LIBRARY_PATH=${HOME}/lib ldd /path/to/bin/vim
   $ LD_LIBRARY_PATH=${HOME}/lib /path/to/bin/vim
 でどうなりますか?
・行ったインストール方法を正確に書いていただけますか。
0432350NGNG
>>431

レスありがとうございます。liviconvはGNUのlibiconv 1.9.1を入れました。
LD_LIBRARY_PATHは実行時に指定するものというのは、351さんが教えてくれたので、
知ってましたが、念のためということで、.cshrcに
setenv LD_LIBRARY_PATH=${HOME}/lib:${LD_LIBRARY_PATH}
としてあります。
コマンドの出力結果ですが、長くなるので抜粋して..

1 libXpm.so.4.11 => (ファイルが見つかりません)
libiconv.so.2 => /homedirectory/lib/libiconv.so.2
/usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1

2は、libXpm.so.4.11が見つからないので強制終了してしまいます。
3,4はCシェルなのでエラーになってしまいます。

行ったインストール方法ですが、
./configure --prefix=ユーザディレクトリ 後
できた、src/auto/config.mk の LIBS に、-Lユーザディレクトリ/libを追加
で、make, make installです。
0433431NGNG
インストール方法とその結果を書いていただくわけですが、それにちょっと
補足…

「正しい」インストール方法は README_unix.txt → src/INSTALL → src/Makefile
ってカンジで読めば分かるかと(すでにご存じかもしれませんが一応…)。で、
それらを読むと
  1. Edit this Makefile
  2. Edit feature.h
  3. "make"
    Will first run ./configure with the options in this file. Then it will
start make again on this Makefile to do the compiling.
ということが書かれているのが分かるはずです。最初に Makefile を修正しろ、
とのことなので修正して下さい。少なくとも、
  CONF_OPT_MULTIBYTE = --enable-multibyte
は必要ですよね。あと、libiconvを「独自に」インストールされたとのことです
ので、Makefile内に
  LDFLAGS = -L/path/to/libdir -R/path/to/libdir
を追加する必要があると思います。この後、
  % make
を実行して様子を見て下さい。(makeはGNUのものを使った方がいいと思います)
その際、最初に内部でconfigureが実行されると思いますが、その表示内容を
「iconv」で探して見て下さい。どうなってますか?
  checking for iconv.h... yes
  …
  checking for iconv_open()... yes; with -liconv
というのがありますか?
0434350NGNG
あ、インストール方法がちょっと違いました。
make後、src/auto/link.sedからiconvの行を削除して、再びmakeし、make installです。
0435431NGNG
>>433書いたときは>>432見てなかった…
一度>>432で書いた通りにやっていただけますか
0436431NGNG
>>432
Cシェルですか、それなら>>431
>   % env LD_LIBRARY_PATH=${HOME}/lib ldd /path/to/bin/vim
>   % env LD_LIBRARY_PATH=${HOME}/lib /path/to/bin/vim
だけで結構です。(後の2つは Bシェル 用として書きました)

>>432
> 2は、libXpm.so.4.11が見つからないので強制終了してしまいます。
その Solaris8 には X Window 関係のライブラリはインストールされているのです
か?
0437431NGNG
ということで、
>>432
>>434
>>433で書いた通りにやってみて下さい。ドキュメントに書かれていることに
忠実に実行することが重要かと。

# >>435はtypoですなスマソ
0438名無しさん@お腹いっぱい。NGNG
test
0439名無しさん@お腹いっぱい。NGNG
>>434
うちも,それやらないと Solaris の iconv が使われて変換できなかった.
でも他にはいじった覚えはないな.
記憶が不確かですまんが,あとは --enable-multibyte とは .vimrc で
enc とか fenc とか設定すればうまくいったような気がする.
0440名無しさん@お腹いっぱい。NGNG
>>350
%env CFLAGS="-I$HOME/include" CPPFLAGS="-I$HOME/include" \
LDFLAGS="-L$HOME/lib -R$HOME/lib" ./configure \
--enable-multibyte --prefix=$HOME
%make

おれはこれでできました。solaris7です。
0441名無しさん@お腹いっぱい。NGNG
:make を実行すると make 終了まで vim でファイル編集できなく
なりますが、バックグラウンドで make させつつファイルの編集を
続ける方法はありませんか?
0442KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>441
シェルのジョブ管理機能を使って裏でmakeを実行することはできますが、quickfixとの
連携はできません。つまり、441さんが考えているような「バックグラウンドでmakeさ
せつつ」ということはできない、と推測されます。
0443350NGNG
みなさまレスありがとうございました。無事リンクでき、
変換も問題なくできるようになりました!

結局、.cshrcでCDFLAGS CPPFLAGS LDFLAGSを設定することで、
link.shのときに、iconvがDO needになって、除外されずにリンクしてくれました。
--enable-multibyteは、KoRoNさんのREADME_j.txtを見てやってたので、
最初から大丈夫でした。

EUCでもSJISでもJISでも開けて、完璧です。ほんとありがとうございました!
0444名無しさん@お腹いっぱい。NGNG
>>443(350)
--enable-multibyteは最初からつけてるんなら、>>432に書け。
0445名無しさん@お腹いっぱい。NGNG
すいません。てっきりみんなREADME_j.txtの通りコンパイルするものだと思ってたので。
っていうか、自分、Kaoriya版とも書いてなかったですね..
どれもこれも説明不足でした。ほんとお騒がせしました。
0446KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>445
README_j.txtには最低限必要なことしか書かれていません。INCLUDEやLIB、加えて
LD_LIBRARY_PATHのような基本的な設定については、既に解決されていると仮定して書
かれています。
0447名無しさん@お腹いっぱい。NGNG
google で "vim noautoindent 改行" って感じで検索したのですが、
解決策を見付けられなかったので質問させてください。

.vimrc に set noautoindent を設定しているのですが、
gvim で編集中に改行するとインデントが入ってしまいます。
もちろん、編集中に :set noautoindent とすれば
インデントは入らなくなりますが、.vimrc で設定してる以上、
gvim の起動直後から設定が効いてほしいのです。
どうしたらよいか、どなたかご教授ください。
0448名無しさん@お腹いっぱい。NGNG
読み込む順番かな?
set noautoindent をやったあとで、
別なファイルをinclude したりしてない?
.vimrcの最後に書いてみたら。

とりいぞぎ。できれば識者の方フォローたのんます。
0449名無しさん@お腹いっぱい。NGNG
>>447
>>376 と同じだけど、
:verbose set autoindent
として、まずどこで最終的にそのオプションが効いているのか確かめたら?
0450447NGNG
どうも返事ありがとう。

>>448
.vimrcの最後に書いてもだめでした。

>>449
それやっても何も出てきません。
どこにも設定してないことにされてるのでしょうか。
綴りも間違えてないのですが。


vine2.6で
vim-common-6.1.265-0vl1.i386.rpm
vim-X11-common-6.1.265-0vl1.i386.rpm
vim-X11-huge-6.1.265-0vl1.i386.rpm
の3つをイン須子したのだが、これらに問題があるのだろうか。

rpmのを消して、香り屋のやつを入れようと思ったけど、
patchの当てかたも判らないので、
もうちょっと勉強してからやり直そうと思います。
0451名無しさん@お腹いっぱい。NGNG
>>450
:scriptnames
0452名無しさん@お腹いっぱい。NGNG
VisVim.NETで質問です。

当方の環境はWinXP Pro SP1, VS.NETは2002と2003を共存してます。
gvimは6.2.71です。

 ttp://www.kaoriya.net/testdir/VisVimNET-20021210.tar.bz2

を取ってきて、slnを2003に変換してビルドしたのですが、
インストーラーでインスコすると2002の方にAdd-Inが着いてしまいます…
# 2003のアドインマネージャにはVisVimが現れない。

2003で使えるようにするにはどうしたら良いでしょうか?
0453KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>452
VisVimNETSetupのレジストリ設定を変更(プロジェクト上で右クリック→表示→レジ
ストリ)して、HKCU以下の7.0となっているキー全てを7.1に変更してください。
0454名無しさん@お腹いっぱい。NGNG
Win98seでgVim6.2を使っているのですがnetupvimでアップデートしたところ起動に25秒位かかるようになってしまいました。
何が原因でしょうか。

Windows版のスレが見つからなかったので板違いと知りつつも質問させて頂きましたが問題があるようでしたら退散します。
0455452NGNG
>>453
でけますた。ありがd!

2回続けてインストールできないっぽいので、
2002と2003の両方でVisVimを使うってことは出来ないのですかね…?
0456名無しさん@お腹いっぱい。NGNG
Vimの使い方になってしまうんで恐縮ですが、
バッファに移さない削除の仕方ってありますか?

dもxもバッファに移ってしまうので…
0457今日も朝から@Vim%ChaliceNGNG
>>456
"_を頭に付ける。eg. "_dd "_x
詳しくは:h "_
0458KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>454
起動時に読み込まれるスクリプト群の問題と推測されますが、類似症状の報告は受け
ていないので詳細はわかりません。ですから次のようにコマンドラインで起動して各
スクリプトを一時的に無効化することで、ご自分で原因を調べてみてください。
  gvim -u NONE -U NONE
これでvimrc|gvimrcの読み込みが抑制されます。
  gvim --noplugin
これでプラグインの読み込みが抑制されます。以上を実行して起動速度に違いが観測
できるか、確認してみてください。

>>455
1つのセットアッププロジェクトで7.0と7.1両方書くようにしてしまうか、セット
アッププロジェクトをコピーして7.0と7.1用2つ用意すると良いでしょう。
0459455NGNG
>>458
> 1つのセットアッププロジェクトで7.0と7.1両方書くようにしてしまうか、
これで試したら出来ました。いろいろありがとうございます。

# セットアッププロジェクトでレジストリのコピーって出来ないんですね…
# まるまる手で写しました…
0460454NGNG
>>458
お返事ありがとう御座います。
教えて頂いた方法を試してみたところvimrcとgvimrcを読み込まなければ速いことが解りました。
そして色々とコメントアウトをして試してみたところ
vimrc|gvimrcの以下のところで時間がかかっていることが解りました。

if 1 && exists('$HOME') && filereadable($HOME . '/.vimrc_first.vim')

さらに削ってみたところ

filereadable($HOME . '/.vimrc_first.vim')

の記述で時間がかかっていることが解りました。

これで何か解るでしょうか。
0461KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>460
追試と報告をありがとうございます。最新のNetUp版では該当箇所先頭の1を0に変え
て一時的に無効化しました。後ほどこちらでも環境を用意して原因の詳しい調査をし
た上で、正式な処置を決定します。
0462名無しさん@お腹いっぱい。NGNG
syntax hilightとインデントについて質問があります.
当方SchemeなるLisp系の言語で色々プログラムしているのですが,
Lisp系の言語は独自の構文が作れちゃうわけです.
そのとき,仕様書通りの構文に対するインデントと自分で作った構文に対するインデントが
異なってしまい,若干不都合です.
後者は構文じゃなくてその他の状況におけるインデントになるわけです.

具体的には,defineが仕様書通りの構文に対するインデント,define-methodが後者です
(define (test1 i)
 (+ i 1))

(define-method ((<object> obj) i)
          (func obj))
↑これを何とか上と同じようにスペース2個にしたくて,
$(VIM)/runtime/syntax/scheme.vim のschemeSyntax一覧に
define-methodなどを追加したところ,色は変わったのですがインデントは変わりませんでした.
インデントに関する記述は別の所にあるのでしょうか.
0463KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>462
syntaxとindentは別物です。基本的な動作は'autoindent'や'smartindent'で記述可能ですが、
独自のインデントアルゴリズムを作りたい場合には
  :help 'indentexpr'
を参照してください。ただし決して簡単ではありません。

またファイルタイプ毎にindentを切り替えるには&rtpのindentに
ファイル(例:~/.vim/indent/scheme.vim)を置くのが慣例です。
0464KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>463 補足です。

Lisp系言語に関しては'lisp' と 'lispwords' が関係するようです。
  :set lispwords+=define-method
で行けそうです。
0465flatline@Vim%Chalice ◆r6EONKKhcc NGNG
私もLisperです.インデント規則をいじってもよさそうですが,簡単には
:set lispwords+=define-method でよいと思います.
:help 'lispwords' してみて下さい.私は逆に :set lispwords-=if としてます.
ちなみにソース書いたら :!%scheme などとするとバッファ内が
Schemeインタプリタにかけた結果に置き換わります.その後はアンドゥすればよし.
結構使いやすい方法ですよ.どこかのサイトで教わりましたが発見できませんでした.

# ちなみに香り屋さんとこのVimヘルプを丸ごとコピーしてちょっとずつ
# アップデートしてますので,よろしければ御覧下さい > ALL
# ttp://user.ecc.u-tokyo.ac.jp/~g340299/docj/
0466名無しさん@お腹いっぱい。NGNG
ぐわっ席外してたらかぶった...スマソ
0467462NGNG
>>463-464 ありがとうございます.満足な結果が得られました.
>>465 if構文は趣味が分かれますが,述語と同列にする方が多いみたいですね
ちなみにソースを実行というやつは以下のページあたりかなぁと思います
http://www.ksky.ne.jp/~sakae/sicp/schemers-vi.html
0468名無しさん@お腹いっぱい。NGNG
めちゃFAQかも知れませんが、見つけられなかったので教えてください。

:map とか :ts
とかのコマンドの出力をバッファに読み込むことはできるでしょうか?
0469名無しさん@お腹いっぱい。NGNG
>>468
:redir
0470名無しさん@お腹いっぱい。NGNG
>>469

おお、このコマンド知りませんでした。まだ知らないことたくさんあるなぁ。
ありがとうございました。
0471名無しさん@お腹いっぱい。NGNG
行末にある連続する空白スペースを取り除くにはどうすればいいのですか?

%s/\s$//g

だと空白一つしか削除できなかったのですが。
0472名無しさん@お腹いっぱい。NGNG
>>471
%s/\s\+$//
:h pattern
0473名無しさん@お腹いっぱい。NGNG
s/\s\+$//
0474名無しさん@お腹いっぱい。NGNG
>>472,473
あれ? ”+”もエスケープしちゃうの?
0475名無しさん@お腹いっぱい。NGNG
>>472-473
サンクスコ
+ の前に \ が必要なのか。
0476KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>474-475
そのあたりは設定で変更可能です。
  :help 'magic'
  :help /\m
Perlと異なることに違和感を覚える人がいるようですが、一説にはソースコードを検
索するのに都合良いように現行のメタ文字になっている、と読んだ記憶があります。
0477名無しさん@お腹いっぱい。NGNG
:h pattern読み直しました。
magicかnomagicでも \+ が正解みたいです。
magicの影響を受けるのは、どうやらgrep正規表現のメタキャラみたいです。
あと、grepと違うのは \{n,m\} と書かずに、\{n,m} と書くところくらいでしょうか。
0478KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>477
+はmagicではダメですけど\v使えばメタ文字になりますね。
0479454NGNG
>>461
アップデートしてみたところ今までどおり素早く起動するようになりました。
調査の方ご面倒おかけします。
0480名無しさん@お腹いっぱい。NGNG
なんか最近トゲトゲしくないですか?
まったりいきまそ。
0481名無しさん@お腹いっぱい。NGNG
foldに関して質問を2つほどお願いします。
1)
    aho
    baka
    manuke
という3行をfoldすると、 fold後はahoがコメントになりますが、
それをbakaにすることは可能ですか?

空行を含む複数行のfoldを
    ////// 空行を含む複数行のfold ///////
と表した時、
    hoge

    ////// 空行を含む複数行のfold ///////

    hage
とあってhogeの下にカーソルがあると仮定して、 } で
hageの上まで飛ぶことは可能ですか?

# foldしててもその上でddするとfold全体を1行として
# 扱うかのように複数行deleteするのに対し、
# } ではfoldの中の空行を渡りあるいてカーソルが
# foldの上でたたずんでることがちょっと納得行きません。
0482KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>481
1つめは要スクリプトの知識ですが'foldtext'で設定可能です。
詳細は :help fold-text を参照してください。

2つめはfolddoopenを用いてmapすることが可能です。
:folddoopen normal! }
0483KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>480 補足。2つ目の } の問題は6.2.086で修正されるようです。
0484名無しさん@お腹いっぱい。NGNG
若い、のか?若すぎるのかぁ?とりあえず終了します。
自分を正当化するのが当たり前な今日この頃この業界こんばんはビルJでs(略
0485名無しさん@お腹いっぱい。NGNG
今読み込んでいるプラグインの一覧って出せる?
0486名無しさん@お腹いっぱい。NGNG
>>485 scriptnames
0487485NGNG
>>486
サンクス。皆よく知ってるね。ビクーリ
0488名無しさん@お腹いっぱい。NGNG
http://www.theregister.co.uk/content/4/32780.html
0489名無しさん@お腹いっぱい。NGNG
http://www.theregister.co.uk/content/4/32780.html
0490名無しさん@お腹いっぱい。NGNG
taglist.vimがversion 2.8に。
http://www.vim.org/scripts/script.php?script_id=273

2.3使ってたんで、感動するぐらい便利になっちょる。
TlistUpdate最高。
0491名無しさん@お腹いっぱい。NGNG
Autodate.vimなんですがdefaultで更新しないっていうオプションが
あってもいいのではと思うのは漏れだけですか?
undoで日付が変わるのが嫌で自分で一回だけ更新したい人もいるかと. . .

autocmdでAutodateOFFしてもいいんだけどね
0492名無しさん@お腹いっぱい。NGNG
キタ━━━━(・∀・)━━━━!!
0493KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>491
autodate.vimは「自動で更新すること」が目的ですから、それに対してオプションと
はいえ手動更新の優先機能つまり「自動更新の無効化」を追加してしまえば、そもそ
もの存在意義に矛盾しますよね。どうしても手動だけでやりたいのならば
:let plugin_autodate_disable = 1
した上で、現在日時を入力するためのmapなりプラグインを自分で書いた方がマシな
んではないでしょうか。
0494名無しさん@お腹いっぱい。NGNG
autodate_vim: disable:
みたいにファイルの前後5行に書いておくと日時入力を無効にできる、
というのもありかと。
0495KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>494
使いたくないならばキーワードを変えるか、書かなければ良いだけです。
0496名無しさん@お腹いっぱい。NGNG
キタ━━━━(・∀・)━━━━!!
0497名無しさん@お腹いっぱい。NGNG
指定範囲の複数の行頭に文字を挿入する方法を教えてください。
0498名無しさん@お腹いっぱい。NGNG
行をまたぐ文字列をコピー(ヤンク)する方法を教えて下さい。

abcdefghijklmnopqここから〜
〜ここまでrstuvwxyz
0499名無しさん@Vim%ChaliceNGNG
>>497
Vで範囲指定して
:'<,'>s/^/strings to insert/

>>498
vで範囲指定してy
0500名無しさん@Vim%ChaliceNGNG
      ∧ ∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ( ゚Д゚) < ついでにムーンウォークで折り返し地点ゲトー!!
     ./ つ つ  \_____________
  〜(_⌒ヽ      (´⌒(´
     .)ノ `J≡≡≡(´⌒;;;≡≡≡
         (´⌒(´⌒;;
    ズザーーーーーッ
0501名無しさん@お腹いっぱい。NGNG
>>499
お陰で快適な編集作業が得られました。
0502名無しさん@お腹いっぱい。NGNG
キタ━━━━(・∀・)━━━━!!
0503454NGNG
>>497
<C-V>で数行分の行頭をブロック選択。
Iで挿入したい文字を入力して<ESC>で終わり。

ここの人たちには邪道って言われそうだ・・・
0504名無しさん@お腹いっぱい。NGNG
名前残ってた・・・
0505名無しさん@お腹いっぱい。NGNG
(;´Д`)
0506名無しさん@お腹いっぱい。NGNG
>>503
初めて知りました。
便利ー。

しかし、>>497氏はこっちを求めていると推測してみる。
http://members.jcom.home.ne.jp/advweb/index_p1_s9.html
0507名無しさん@お腹いっぱい。NGNG
helpによると, set enc=japanした時は,
    「2   japanJapanese: on Unix "euc-jp", on MS-Windows cp932」
だそうで, じゃあcygwinの時は? と思ってやってみたらcp932なんですね.

cygwinのterminal(rxvt)がeucj modeなのでeuc-jpと判断されたら嬉しかったのにぃ〜
0508KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>507
ネイティブなコンソールがcp932なので、そういうパッチが送られ採用された経緯があります。
+iconvならtermencodeを使うと上手く行くかもしれません。
0509名無しさん@お腹いっぱい。NGNG
範囲を指定して、「!」でコマンドラインのコマンドを呼び出すと、
その指定した範囲の行が置きかえられてしまうでしょう?

 :51,58!sort

この範囲指定のコマンドの実行を、現状のテキストを置き換えないで実行して
結果を取りたいのですよ。
で、なにか簡単にできる方法ってあったりしますか?

ちなみに今はこんなふうにしてます。
 :51,58w temp.txt
 :!sort temp.txt
0510509NGNG
あーそういや、実行して、すぐにuで元に戻すってのがありますね。
この方法でいいのかな。
0511507NGNG
>>508
なるほど.

ところで, 507で書いたようにeucjなterminal@win + cygwin環境で,
cp932のファイルを開くと文字化けしてしまいます.

encは無理矢理euc-jpにし, Kaoriya版のvimrcを$HOME/.vimrcに使わせて頂いているので,
encをeuc-jpにした時, fencsは
  ucs-bom,ucs-2le,ucs-2,iso-2022-jp-3,utf-8,cp932
です.

echo has('iconv')には1を返すし, iconv -f CP932 -t EUCJP XXX.txtでは
正しく読めています.

うむむ謎…

tencというのは知らなかったので, ちょっとこいつを弄んでみます.
0512KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>509
必要な範囲を新しいバッファへ切り出して、そっちをフィルタにかける方法もありま
す。

>>511
Cygwinで./configure && makeしてもWin32APIを使ってたような記憶があります。
なのでencを無理矢理euc-jpにするにはソースを弄らないと意味が無いハズです。
Windowsで使うのならば基本的にencはcp932にして、rxvtを組み合わせたい時には
tencをeuc-jpにすれば、理論上は動作することになります。
0513511NGNG
>>512
仰せの通りにして問題なく表示されました.
あいかわらずKoRoNさんの知識には脱帽です.
ありがとうございました.
0514名無しさん@お腹いっぱい。NGNG
if has("autocmd")
  autocmd FileType changelog
  map ,d ggi<CR><CR><ESC>kki<C-R>=strftime("%Y-%m-%d")<CR>
  \ 774 <774@hoge.jp ><ESC>o<CR><TAB>*
  \ | map ,n ggo<CR><TAB>*
endif

というコードを.vimrcに貼り付けたら
gvimを起動するたびにダイアログが表示されるようになりましたが、
いちいちダイアログを閉じるのがめんどくさいので、表示しないように
する方法はありますか?
0515KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>514 単純にmap ,dの前に\を付け忘れているんじゃないですか?
0516名無しさん@お腹いっぱい。NGNG
>>515
すみません、\をmap ,dの前に入れたら動かなくなりました。
0517KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>516
そもそもどういうダイアログが出て問題になっているのかわからんです。514に書かれ
た設定は、ft=changelogの時にだけ有効になるmapをしようとしているものだと推測さ
れますが、文法的にはmapの前に\が無いことが問題になります。なので515という指摘
をしたのです。

他に考えられる問題点として、行頭の \ で行を連結するというのは特定の条件下では
使えません。
:help cpo-C
あとautocmdの中で直接mapするよりはfunction定義してその中で定義したほうがエレガ
ント、というのがあります。
if has("autocmd")
  function s:AutocmdFiletypeChangelog()
    map ,d ggi<CR><CR><ESC>kki<C-R>=strftime("%Y-%m-%d")<CR> 774 <774@hoge.jp><ESC>o<CR><TAB>*
    map ,n ggo<CR><TAB>*
  endfunction
  autocmd FileType changelog call <SID>AutocmdFiletypeChangelog()
endif
0518名無しさん@お腹いっぱい。NGNG
最近のNetBSD-currentのcitrus iconvでコード変換がうまくいかないので調べてみました。
具体的には
VIM6.2.098で
set encoding=japan
set fileencodings=ucs-bom,iso-2022-jp,utf-8,ucs-2le,ucs-2,cp932
のとき,どんなファイルを読んでもiso-2022-jpとして処理されてしまう。
というものです。

わかった事は,
fileio.c の readfile() 内の iconv() の戻り値の処理が
0と-1の処理しかないので,おかしくなっているみたい。

1以上の値が返ったときもエラーとして扱えばうまくいってる。

そもそもコード変換できないときの処理として
GNU iconv は-1を返すけど
citrus iconv は 変換できなかった文字数を返す
ってことなんだけど
iconvの仕様として
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/iconv.3.html
これ見ると,変換できない文字数が返るときもあるみたいに読めます。

んで,結局何がいいたいかというと
VIMのサポートしているiconvシステムはGNU LIBICONVしかないのか?
ってこと。

外人にパッチ投げる勇気もないのでここに書いてみました。
#VIMのソース汚すぎ(;_; よく分からん。
0519KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>518
> そもそもコード変換できないときの処理として
> GNU iconv は-1を返すけど
> citrus iconv は 変換できなかった文字数を返す
違うようです。GNU libiconvではマップできない文字(入力エンコードとして不正な
シーケンス)を発見した際に-1を返すのですが、Citrus iconvでは計算アルゴリズムな
どで無理矢理マップした上で非可逆変換した文字数として返しているのでしょう。この
動きはMacのiconv相当APIであるTECと似た動作です。Macの場合はSnifferという入力
シーケンスのエンコードを検証するモジュールがあるので、それを用いてそのような無
理矢理な変換を検出することができます。
# ただしiso-2022-jpについてはこのSnifferが無茶苦茶遅いという問題がありますが。

Vimの抱えている問題点の1つに、エンコードの判定をiconvに頼っていることがありま
す。GNU libiconvの場合はそれでうまく行っていますが、Citrus iconvではそうは行か
ないということでしょう。正確にはPOSIX iconvの定義ではエンコード判定に使えるか
は保証できない、というべきです。これを材料にfencs=guessみたいな仕組みを提案す
ることはできるかもしれません。

しかしCitrusにもまったく問題が無いとは言い切れません。恐らくiso-2022-jp→
euc-jpへの変換などは計算アルゴリズムでガッツリ変換するように実装されているので
はないでしょうか?。だとすると入力エンコードとして不正なシーケンスのチェックは
一切行なっていないことになり、これはCitrusをvim-devでの議論の材料にした際に弱
点になる可能性があります。

Citrusがそのあたり正確にはどうなってるかを調べて、見るべきソースの入手場所、
ファイル名、行数等を教えて貰えないでしょうか?。それがわかればvim-devへ私がメー
ルを投げることができるようになり、もしかしたらCitrusにとってもVimにとっても幸
せなソリューションが生まれるかもしれません。もしも単にVimで漢字コード変換を使
いたいだけなら、Citrusは忘れてGNU libiconvを導入したほうが手っ取り早く幸せにな
れます。
# 余談ですがVimのソースなんて綺麗な方です。
0520518NGNG
KoRoNさんありがとう。勉強になりました。

はじめに言い忘れたけど,僕は単なるユーザーです。
Citrus iconvについて詳しいわけじゃないし,POSIX iconvが
どうなってるか,分かりません。

fencs=guessとかがとっても正しい姿な気がします。
でも自分はとりあえず使えればいいので
どんなところでも使えるGNU libiconvを使えって言われれば,そうするつもりです。

結局,vim-devの人たちを説得するだけのパワーは僕にはありません。

ものすごい独り言でごめんなさい。
0521KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>520
> でも自分はとりあえず使えればいいので
> どんなところでも使えるGNU libiconvを使えって言われれば,そうするつもりです。
残念ですが、そういうことでしたらそのようにしてください。

> 結局,vim-devの人たちを説得するだけのパワーは僕にはありません。
以前より現行のfencsの仕組みはあまりに使い憎いと感じていたものですから、この
件に関しては時間がかかるかもしれませんが材料を整えてなんとかするつもりです。
■ このスレッドは過去ログ倉庫に格納されています