Vim6 Part10
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001名無しさん@w3m
NGNGhttp://www.vim.org/
前スレ
http://pc5.2ch.net/test/read.cgi/unix/1086135625/
関連情報は>>2-7あたり。
0827名無しさん@お腹いっぱい。
05/02/17 18:11:09それはそうだけど、gvim じゃないと無理じゃないか?
0828名無しさん@お腹いっぱい。
05/02/18 00:45:46マーク使わなきゃダメなんでしょうか?
0829名無しさん@お腹いっぱい。
05/02/18 01:02:03<C-o>
''
``
0830名無しさん@お腹いっぱい。
05/02/18 01:17:260831名無しさん@お腹いっぱい。
05/02/18 21:40:49何度も重複して検索している単語から印刷して、勉強したい。
0832KoRoN@Vim%Chalice ◆8XALICEsdk
05/02/18 22:09:45申し訳ありませんが、KaoriYaで配布するdicwinにそのような機能を実装する予定は
ありません。
0833名無しさん@お腹いっぱい。
05/02/18 22:12:270834名無しさん@お腹いっぱい。
05/02/18 22:22:03漏れは昔棒辞書ソフトにその機能要望したら無視された
便利と思うんだがなあ
0835名無しさん@お腹いっぱい。
05/02/18 22:23:010836KoRoN@Vim%Chalice ◆8XALICEsdk
05/02/18 22:34:52dicwinは学習支援を目的としてはいないからです。またそうする予定もありません。
本当に勉強する気ならば、いきなり人が書くスクリプトには頼らず、まず手動で履歴
を残していくという手段を取ってみてはいかがでしょう。手動でやることが面倒にな
れば、キーボードマクロとして定義するのも良いでしょう。
<C-K><C-W>yj<C-W><C-P>:sp +$ ~/dichist.txt<CR>p<C-W><C-C>
こんな感じですかね。
# 個人的には、紙の辞書でひいたほうが遥かに覚えが良い、と考えています。
0837名無しさん@お腹いっぱい。
05/02/18 23:07:39switch
case
case
とか
if
else if
else if
とかって対応できますか?
とりあえずこんなかんじで書いてみたものの、ifと最初のelseで行
ったり来たりしてしまう。
let b:match_words =
\ '\%(^\s*\)\@<=\%(if\|switch\)\>:' .
\ '\<\%(else\|else\s\+if\|case\)\>'
0838名無しさん@Vim%Chalice
05/02/19 00:09:26>>831
> dicwin で、検索した単語の履歴保存してくれませんか?
s:OpenDictionary(dic, word) 関数の、「Output result」と書いてあるとこらへん。
sp + ~/dichist.txt
call append('$', a:word)
xit
0839名無しさん@Vim%Chalice
05/02/19 00:15:33ヒント
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]\>'
0840名無しさん@お腹いっぱい。
05/02/19 00:32:46改行してもcaseの位置までインデントが戻りません。これは正常な動作ですか?
0841名無しさん@お腹いっぱい。
05/02/19 00:45:300842名無しさん@お腹いっぱい。
05/02/19 01:06:08うーん。if else if elseはなんとかできたけど、最後のelseがな
い場合はうまくいかない。switchは全然だめ。
let b:match_words =
\ '\%(\%(^\|;\)\s*\)\@<=if\>:' .
\ '\<else\s\+if\>:' .
\ '\<else\>\%(\s\+\<if\>\)\@!,' .
\ '\<switch\>:' .
\ '\<case\>'
0843名無しさん@お腹いっぱい。
05/02/19 01:10:10次のcaseで元に戻るからいいじゃん。
0844名無しさん@お腹いっぱい。
05/02/19 01:44:28> # 個人的には、紙の辞書でひいたほうが遥かに覚えが良い、と考えています。
ソースコードを編集するときもVimなんて使わずに
紙にプリントアウトして鋏と糊で切り貼りすればいいじゃん。
0845名無しさん@お腹いっぱい。
05/02/19 02:18:45epwing の辞書引きながら履歴残してくやつ。
重要単語なのに何度も引いてるような単語を重点的に覚えたりできたので、
使えないことはなかった。
0846名無しさん@Vim%Chalice
05/02/19 02:23:53勘違いしているね。
Vim の if には必ず endif が付いている。
C の if には、そういうものがない。
if( 1 ) puts("hello world");
だから C の if には、match_words の定義がない。
0847842
05/02/19 02:33:34まあそうなんだけど、elseやelse ifがあったときはそこを経由し
て巡回したいなと思って。
特にswitch文でcaseを辿りたいときは便利かなと。
0848名無しさん@Vim%Chalice
05/02/19 02:57:49>>847
>まあそうなんだけど、elseやelse ifがあったときはそこを経由し
>て巡回したいなと思って。
"else if のない if" と、"else if のある if" が入れ子になったらどうなる?
> 特にswitch文でcaseを辿りたいときは便利かなと。
case は1つですか? 複数の場合があるでしょ。
switch に、一意に対応しない。
:h 'matchpairs'
ここからはじまったの
0849847
05/02/19 11:08:17caseはもちろん複数あるよ。
switch -> case 'a' -> case 'b' -> case 'c' -> switch
switch (a) {
case 'a':
case 'b':
case 'c':
たぶんmatchitではできないんだろね。あきらめるよ。
0850849
05/02/19 11:13:35がどのswitchに対応するかわからないということですね。
switch
case
case
switch
case
case
case
case
0851850
05/02/19 11:32:43ど、まあいいや。
\ '\<switch\>:' .
\ '\<case\>:' .
\ '\<default>\:'
0852名無しさん@お腹いっぱい。
05/02/19 11:34:39if 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
0853名無しさん@お腹いっぱい。
05/02/19 19:03:07- 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 を使ってます。
パッチと説明が以下に続きます。
0854853
05/02/19 19:10:10#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*BH@.30R+#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
0855853
05/02/19 19:12:20:help で表示されるファイルのエンコードを 'fileencodins' に指定してても
ちゃんと表示されない原因についての説明です。
ファイル読み込み部で 'fileencodings' をなめる前に、
:help からの呼び出しだったら utf-8 か latin1 で処理する、
というコードが入り込んでます。
これが原因で 'fileencodings' が効きません。
この部分を削ると 'fileencodings' を見てくれるようになります。
コメントを読むと 『ヘルプファイルは utf-8 か latin1 じゃなきゃだめ』
と読めますが、別にユーザに任せてくれれば良いような気が。
#変換による情報の欠落をおそれてるのかなぁ。
バグではないのだろうけど、どうなんでしょ?
0856853
05/02/19 19:13:40vim のソースを読むきっかけとなった問題です。
: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 になってます。
0857853
05/02/19 19:16:26ファイル読み込み時は、'fileencodings' の先頭から
エンコード名抜き出しチェックしていきます(ここでは fenc とします)。
処理の流れを簡単に説明すると次のような感じです。
1. fenc から 'encoding' へ iconv が変換できるかチェック (iconv_open)
- ここでは iconv がそのエンコードの変換に対応しているか調べるだけ
+ファイルがどのエンコードかは、この段階で不明
- iconv が対応してなければ次の fenc にチャレンジ
- 対応していれば iconv ディスクリプタをゲット
2. iconv ディスクリプタを元にエンコードの変換を試みる (iconv)
- 変換失敗(fenc とファイルとのエンコードが異なる場合)で次の fenc にチャレンジ
- 成功すると 'encoding' に変換されたデータをゲット
という処理を 2. が成功するまで 'fileencodings' をなめながら行います。
#そして成功時の fenc が 'fileencoding' になると。
0858853
05/02/19 19:17:57が、ソースを読むと、fenc と 'encoding' が同じならば、
1. のチェックを省くというように書かれてます。
#同じエンコードならば iconv のチェックの必要がないと考えた?
ただ、そうしてしまうと、iconv_open が呼ばれないわけで、
iconv ディスクリプタが手に入らなくなります。
そして、2. の処理の前には iconv ディスクリプタが有効かのチェックがあって、
無効だと iconv の変換が必要ないと判断され、2. の処理がスルーされます。
で、fenc とファイルのエンコードが一緒かどうか判断しないまま、
fenc を 'fileencoding' としたうえ iconv での変換もされません。
これでは、エンコードが違った場合は文字化けしてしまいます。
なので、1. の処理前にある『func と 'encoding'が同じなら〜』の判定を省き、
ちゃんと iconv_open を呼ぶようにしました。
0859853
05/02/19 19:20:22普通に動作しているようですが、一点問題があります。
: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 のバージョンを上げて調査したい所ですが、
エネルギーが切れてきたので、とりあえず報告だけということで。
0860853
05/02/19 19:22:39長くて誰も読まないヨカーン。
0861KoRoN@Vim%Chalice ◆8XALICEsdk
05/02/19 20:02:281について。そういう仕様ですし「むしろ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
0862KoRoN@Vim%Chalice ◆8XALICEsdk
05/02/19 20:17:56> Gaucheのようなしっかりした判定アルゴリズムを積みたいところですが…Bram氏を納得
> させるには難しい面があります orz
一応、認識している問題を具体的にしておきます。
1. 文字コード判別ライブラリとして(世界規模で)スタンダードなものがない。
2. 判別ルーチンは変換ライブラリが持っているのが自然に思われる。
しかし、POSIXで定義されるiconvにはその口が無い。
3. Vimの現在の方法はある程度以上、妥当に働いてしまう。
0863853
05/02/19 20:36:371はやはり仕様なんですか。
政治的なことは面倒なんで放置プレイかしらん。
>Vimは「encへの変換をfencsの値を先頭から順番に試して成功したところで止める」と
私もそう理解してますが、
変換に成功してない(試していない)のに成功と判定するのは変だと思ったのです。
何をもって変換成功とするかのとらえ方の問題ですかね。
>>862
はい、文字コードを判別する仕組みが iconv に無いことは調べてる最中にわかりました。
そしてそれで苦労している人がたくさんいることも。:)
日本語だけならまだしも、全コードとなると大変ですものね。
0864名無しさん@お腹いっぱい。
05/02/19 21:56:44> 1について。そういう仕様ですし「むしろhelpの翻訳はUTF-8で書くべし」と考えた方が
> なにかと都合が良いです。特に原文の文字を残したい場合など、CP932やEUC-JPでは表
これってencがutf-8以外だと変換(表示)できなくてむしろ困る気がする。
結局は変換できない文字をつぶさなきゃなんないし、
最低限、encに合わせて変換した物を利用できるようにすべきだと思う。
そのほうがチープな環境もサポートするって意味でvim的な感じがする。
ていうか現状そうなってると思うんだけど、違うんかな。
0865名無しさん@お腹いっぱい。
05/02/19 22:06:26後ろばかり見ているのはいかがなものかと。
0866KoRoN@Vim%Chalice ◆8XALICEsdk
05/02/19 23:00:55> 何をもって変換成功とするかのとらえ方の問題ですかね。
あるコードから同じコードへの変換は、どのような入力であっても明らかに成功する
とわかっている(仮定している)から、ということなのでしょうね。むしろ変換に成功
しないような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ではリファクタリングするとか宣言してたと思うけど、本当にするのかな?
0867853
05/02/19 23:56:44うっ、私の書き方が悪かったせいで誤解されてるヨカン。
>>856-858 で言いたかったのは
'fileencodings' の中で 'encoding' と同じエンコード*名*が出ただけで
変換作業をスキップしてしまうのはマズイのでは、
ということです。
これによって、実際のファイルのエンコードと 'encoding' が異なるのに
変換が行われない問題が起きています。
#んで、その問題を直すパッチを書いたと。
>>859 で言ったのは私の iconv 環境の問題で vim は悪くありません。
同じ A => A のエンコード変換を設定している所に
B のエンコードを突っ込んだらエラーも出ずに B が出た、
というのがその問題です。
#本来なら想定してない B のエンコードを突っ込んだ時点でエラーにならなきゃおかしい。
全然別の問題を一緒に書いたのがまずかったですね。
0868名無しさん@お腹いっぱい。
05/02/20 00:54:02iconvの場合は実際に変換してみてデータが不正なら変換に失敗するってのは「副作用」であって、
本来は入力がAであることを利用者(プログラマ)が保証すべきなんじゃないかな。
だからiconvにデータの検証を求めるのはそもそもおかどちがいだし、
「A->Aの変換」とかいう無駄を避けるのも妥当な選択。
副作用が必然である以上はそれを利用するのも妥当だと思う。
0869853
05/02/20 01:41:57あー、そういうものなんでしょうか。
個人的には A のエンコード以外の入力は全部不正なデータのエラーにしてくれる方が好みです。
もちろん、B のエンコードがきても不正なデータとして認識できない可能性もあるから
データの検証を iconv にさせるのは正しくないと思います(そのための関数でもないだろうし)。
0870名無しさん@お腹いっぱい。
05/02/20 02:55:04> 個人的には A のエンコード以外の入力は全部不正なデータのエラーにしてくれる方が好みです。
> データの検証を iconv にさせるのは正しくないと思います(そのための関数でもないだろうし)。
矛盾してるんだが。
矛盾してないとすれば別に検証してから変換かけろってことか、
両方をするプログラムを書くってことだが、どっちも無駄な労力だろう。
0872名無しさん@お腹いっぱい。
05/02/20 15:29:06・判別ルーチンは変換ライブラリとは別にして、判別は変換前にする
・判別ルーチンは指定可能にする
がいいと思う。
0873KoRoN@Vim%Chalice ◆8XALICEsdk
05/02/20 18:29:29> ・判別ルーチンは変換ライブラリとは別にして、判別は変換前にする
> ・判別ルーチンは指定可能にする
もちろん、それが直近で実現可能な方法の1つなのですが、その判定結果がそのまま
変換ライブラリに渡されることを考えると、どうにもスッキリしないんですよね。
iconvのほうを直して、fromにautoみたいにしておけば良いようにする手も無くは無
いですが…あ〜そうなるとVimがfencを決定できませんね。
0874名無しさん@お腹いっぱい。
05/02/20 19:47:54判別法は複数候補があっていいはず。
判別ルーチンを iconv に実装してそれに固定するのは
うまくないような。iconv で指定可にする手もあるか。
なんて。
0875名無しさん@お腹いっぱい。
05/02/20 21:01:32とかって出来ますっけ?
0876名無しさん@お腹いっぱい。
05/02/20 21:09:08vim: set fenc=cp932 nomodified:
って感じ?
0877名無しさん@お腹いっぱい。
05/02/20 21:16:22最初に開いたときは文字化けするけど、:eで読みなおすと化けなく
なる。
0878KoRoN@Vim%Chalice ◆8XALICEsdk
05/02/20 21:24:46Gaucheのヤツはかなり賢くて、完全には絞り込めなくても点数(確率みたいなもんで
す)が計算されて、順位付けされます。
# 構造も綺麗で、さすがScheme屋さんだと感心しました。
複数候補があったとしてもプログラムで使う以上、最終的に1つを選択しなければな
りません。その意味でもGaucheの方法は妥当と言えます。それに失敗した場合はもう
仕方ない。Webブラウザが文字セットの判定に失敗するのと同じですね。敢えていえ
ば、絞られた複数の候補とその順番を取得する仕組みが欲しいかもしれません。
0879mattn@Vim%Chalice
05/02/21 09:29:13fenc の設定によって、見えなくなってしまうようではヘルプの意味が無くなりますし
その上で utf-8 で統一しようという風に決まったと記憶しています。
local additionals の判断も、utf-8 前提でしか処理していません。patch 6.3b.018
0880名無しさん@お腹いっぱい。
05/02/21 10:41:48日本語入力すると、確定前とか、複数候補選択時とか、
文字化けする(というかカーソルの進みが1半角分しか進まない感じ)
のは、うちだけでしょうか?
0881名無しさん@お腹いっぱい。
05/02/21 10:57:13uim-fep作者です。
おそらくvimは関係ありません。
uim-fep単体で動かしても同じ症状が出ますか?
再現方法はわかりますか?
スレ違いでしたらこちらにお願いします。
http://pc5.2ch.net/test/read.cgi/linux/1105419571/
0882名無しさん@Vim%Chalice
05/02/21 11:48:01画面が閉じずに続けてコマンドを選択実行したいのですが
方法はあるでしょうか?
C-cしてエンター押してもだめでした・・・
0883880
05/02/22 10:19:14PCいじっている時間がなく、しばらく返答できないです。
再現性などその他情報まとめましたら、改めて質問させて頂きます。
0884名無しさん@お腹いっぱい。
05/02/23 11:31:50vim-latexっていうのを入れてみたんですが、どうもimapがうまくいってないみたい
0885名無しさん@お腹いっぱい。
05/02/23 12:09:03プラットフォームはなんですか?
0886名無しさん@お腹いっぱい。
05/02/23 12:14:16別に何も使ってないなぁ
大昔に書いたMakefileで :make と、foldmethod=marker にして
適当に折りたたみしてるくらいかな?
0887名無しさん@お腹いっぱい。
05/02/23 13:11:28これをなくすにはどうすればいいのでしょうか
今やってみたのは
1. IMEのキー設定で<ESC>にIMEオフを割り当てて
2. vim内で :map <ESC> <ESC><ESC>
としてみたのですがなぜかずっとノーマルモードで〈ESC〉を押したときの音がいつまでも鳴りつづけて操作できなくなるんですがどうしてなんでしょう。
0888名無しさん@お腹いっぱい。
05/02/23 13:17:47ESC 入力のループになるでしょ。
0889名無しさん@お腹いっぱい。
05/02/23 13:19:53どうすればいいんですか?
0890名無しさん@お腹いっぱい。
05/02/23 13:35:18inoremap <silent> <esc> <esc>:se imi=0<cr>
0891名無しさん@お腹いっぱい。
05/02/23 14:05:57ありがとうございます!!
勉強不足でコマンドの意味はわからないのですが試してみます。
0893名無しさん@お腹いっぱい。
05/02/23 17:47:34僕は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+=_
0894名無しさん@お腹いっぱい。
05/02/23 18:03:52そういうの初めて知りました。
で、abbreviationのヘルプ見たら、うまくいかなかった原因はset pasteしてたせいだとわかりました。
どうもです。
0895名無しさん@お腹いっぱい。
05/02/24 23:13:00ヘルプ見たら:makeでC(Cはまったく知らない)とかだったら出来るみたいなんですがpythonでやると出来ない見たいみたいなんですが実際どうなんでしょう?
0896名無しさん@お腹いっぱい。
05/02/25 00:40:15:makeが何をする物か分かってる?
0897名無しさん@お腹いっぱい。
05/02/25 00:49:37pyunitっていうのが使えるみたい
0898名無しさん@Vim%Chalice
05/02/25 20:37:36マクロを組んで、
:redir! @a
:g/String/number
:redir end
:Scratch
"aP
:set buftype=quickfix
までやったのですが、エラーフォマットが問題なのか動きません。
やろうとしてることが無理なのでしょうか。
0899名無しさん@お腹いっぱい。
05/02/25 22:13:32:g/String/echo bufname("%").":".line(".").":".getline(".")
:redir end
:"適当に空行削除
:cfile tmpfile
出力フォーマットについては:help 'errorformat'
0900名無しさん@お腹いっぱい。
05/02/27 12:42:39例えば、0x82 や 0xFF などなど
0901名無しさん@お腹いっぱい。
05/02/27 12:49:05C-vx82
C-vxff
0902名無しさん@お腹いっぱい。
05/02/28 00:53:08また前のファイルにもどりたくなったら :eで開くしかないのでしょうか?
screenを使っているのですが Vimではできないのかと思いました
0903名無しさん@お腹いっぱい。
05/02/28 00:55:080904名無しさん@お腹いっぱい。
05/02/28 01:01:25縦なら C-w 5+ とかで変えれるんですけど・・
0905名無しさん@お腹いっぱい。
05/02/28 01:19:040906名無しさん@お腹いっぱい。
05/02/28 02:57:59:bp もありかな。
0907名無しさん@お腹いっぱい。
05/02/28 03:13:38Ctrl-^が楽だよ。前のバッファに移動する。
ちなみにCtrl-W Ctrl-^で分割して移動もできる。
:lsでバッファリスト表示させて、番号とCtrl-^で任意のバッファに移動も可能。
0908名無しさん@Vim%Chalice
05/03/01 10:51:260909名無しさん@お腹いっぱい。
05/03/01 13:45:530910名無しさん@お腹いっぱい。
05/03/01 13:47:15結構FAQなので過去スレとかに書いてある
0911名無しさん@お腹いっぱい。
05/03/01 15:24:27変えやがるのが気に入らないんだが…。
0912名無しさん@お腹いっぱい。
05/03/01 15:39:110913名無しさん@お腹いっぱい。
05/03/01 17:06:12Dはd$
Cはc$と動作が同じなのに
Yはyyと動作が同じ
よく使うコマンドだけに
Yからくらべるとy$はキーストロークが一つ多いからなんか困る。
こうなった理由ってなんかあるんですか?
0915名無しさん@お腹いっぱい。
05/03/01 17:59:42nnoremap Y y$
0916名無しさん@お腹いっぱい。
05/03/01 18:11:30具体的にはカレントバッファの単語を補填したいのですが、可能でしょうか。
inputの履歴もいいのですが。
0917913
05/03/01 18:38:22その、いろんな環境を使わなきゃいけなくて、(viの設定ファイルすらおけないものもある)
基本的にデフォルト状態から変更せずに、使いたいんです。
だから、仕方がないからy$を使っているんですけど、
なぜ、こう、ちゃんとコマンドが考えられていそうなviで、
こういうキーバインドがあるのかと疑問に思ったもので。
0918名無しさん@お腹いっぱい。
05/03/01 18:47:36> なぜ、こう、ちゃんとコマンドが考えられていそうなviで、
> こういうキーバインドがあるのかと疑問に思ったもので。
むしろviらしい。考えたわけではなくて、いきあたりばったりなかんじ。
0919KoRoN@Vim%Chalice ◆8XALICEsdk
05/03/01 19:13:43http://www.kaoriya.net/testdir/2ch_vim6_template.html
リンク切れやdat落ちなど一通りチェックして、Vim7に向けて言い回しの修正もしま
した。
「このリンクは止めよう」とか「是非ともこのリンクを入れて」というのがありまし
たら言ってください。
0920名無しさん@Vim%Chalice
05/03/03 12:25:40検索文字があったか、なかったかのステータスを知ることはできますか。
0921KoRoN@Vim%Chalice ◆8XALICEsdk
05/03/03 12:55:06実行前後でline('.')とcol('.')を比較すればある程度わかるのではないでしょうか。
でもステータスを知る目的ならば、search()使ったほうが簡単です。カーソルの下の単
語はexpand('<cword>')で取れるので、それを\<\>で囲めばほぼ#と同じ動作になります。
0922名無しさん@Vim%Chalice
05/03/03 14:11:23ありかとうございます。今回はline、colでトライしてみます。
0923名無しさん@Vim%Chalice
05/03/03 16:33:46以下のようなものを作ってみました。
例えば、
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
もっと改良するつもりです。
0924名無しさん@お腹いっぱい。
05/03/03 16:44:41:help ins-completion
:help compl-tag
0925名無しさん@Vim%Chalice
05/03/03 17:06:24そうですね。最初は使用していたのですが。C++やjavaだとクラス名+メソッド名で
うまく補填できなかったので、オリジナルを考えました。
あと、候補が複数あるときに、すべてをリスト表示したかったので
ない知恵絞ってやってみました。
0926名無しさん@Vim%Chalice
05/03/03 17:27:05http://vim.sourceforge.net/scripts/script.php?script_id=747
コード補完についてはIntellisenseって言うのがポピュラーらしいですね。上のはWin
専用で、スクリプト+αにより実現されています。
スクリプトの書き方について3つ。行頭の「:」はいらないです。正規表現中の
[[:space:]]は\s(逆は\S)と書いた方がスッキリします。mapよりはnoremap、さらにい
えばnnoremapのほうが良いでしょう。
Vim7ではネイティブレベルで、もう少し作りやすくなるような意気込みだったと記憶し
ていますが、現状どうなっているんでしょうか…気になるところです。
レス数が900を超えています。1000を超えると表示できなくなるよ。