トップページ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あたり。
0081名無しさん@お腹いっぱい。NGNG
自己解決しました。お騒がせしました
008276NGNG
>>77
g<C-]>は知りませんでした。ありがたう。
んでも、<C-]>で大抵大丈夫みたいッス!
0083名無しさん@お腹いっぱい。NGNG
デフォルトのコンパイラを変更するにはどうしたらいいのでしょうか?
今のところ、$VIMRUNTIME/ftplugin/c.vimに

compiler bcc

を追加してしのいでいるのですが、
_vimrc では設定できないのでしょうか?
0084KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>83
.vimrcに「compiler bcc」を書けば変更されます。変更されていることは
  :echo current_compiler
で確認でき、未設定の場合エラーがでます。

特定のファイルタイプの時にだけ替えたいのであれば、83に書かれたようにftplugin
を使うのがスマートです。ただしVim付属のファイルを書き換えるのは止めて、ユー
ザかマシンローカルの設定にしたほうが良いでしょう。また
  :autocmd FileType c compiler bcc
のように.vimrcでFileTypeを使う方法もあります。
0085名無しさん@お腹いっぱい。NGNG
>>84
ありがとうございます。
autocmd で解決できました。

また一つ、gvim の深みに入ってしまった気がします。
0086名無しさん@お腹いっぱい。NGNG
バグ(?)報告です。
挿入モードの状態で、<esc>Oを高速に押すと、Oと表示されて、約1秒後に通常の動作
になります。<esc>oでは起きません。
vim6.2.14 vim6.1.474で確認しました。gvimでは問題ないです。
性善説のサーバでもできたので、僕の環境だけではないと思います。(tera termのせ
いかも知れませんが。)
0087名無しさん@お腹いっぱい。NGNG
>>86とは直接関係ないが、
   0(ゼロ)を押すとカーソル位置に0と表示されて、約0.5秒後に行の先頭に
   移動します(通常の動作になります)
となる。私の場合、TeraTermPRO上だけでなくkterm上で起動したvim(gvimではない)
でも発生します。おそらく端末の反応速度が遅いからではないのかと(私は)考
えてます。得に害があるというわけではないし、Vimの仕様ではないのかなー
と(勝手に)解釈しています :-)
0088KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>86 X上のgvimですか、それともWindows GUI?
008988@Vim%Chalice ◆8XALICEsdk NGNG
申し訳ない。寝ぼけてたみたいです。変わりにOSのバージョンを教えてください。
009086NGNG
>>88
X上のgvimとwindowsのkaoriya版gvim.exe, vim.exeでは発生しません。
teraterm, xterm, ktermなどの端末上のvimで発生します。
009190NGNG
>>89
teratermはWindows XPです。
redhat 9のデフォルトのxterm, kterm, /bin/vi, /usr/bin/vim, とvim6.1.474, vim6.2.14
で確認しました。>>87のは再現しませんでした。
0092名無しさん@お腹いっぱい。NGNG
間に何かキーを食うプログラムが入ってたりしない?screenとか。
009388@Vim%Chalice ◆8XALICEsdk NGNG
>>92
あ、あとOや0で始まるキーマップを設定していないか確認してください。
  :nnoremap On foo
  :nnoremap Of bar
のように設定をしている場合、Oが押されてから実際に実行されるまで、時間が空きます。
009490NGNG
>>92
それが一番恐いです。(恥ずかしいから)
screenを使っていない環境で試しました。
それとnviでは発生しませんでした。
009590NGNG
se noesckeysでなおりました。
F1が^[OPだからですね。
おさわがせしました。
009687@ヘタレNGNG
>>92
(・∀・)ソレダ
0097名無しさん@お腹いっぱい。NGNG
viスレと仲良く並んでいるね
0098名無しさん@お腹いっぱい。NGNG
エロ画像スレとも仲良く並んでるわけだが。

96: vi 2nd (424)
97: Vim6 Part6 (97)
98: 連番のH画像を一気にダウンロードする (628)
0099あぼーんNGNG
あぼーん
0100名無しさん@お腹いっぱい。NGNG
/word
で検索するときに、マッチしたパターンが合計何個あるか調べる方法はありますか?
0101名無しさん@お腹いっぱい。NGNG
>>100
:h count-items

# kludgyな方法しかないけど。
0102名無しさん@お腹いっぱい。NGNG
>>86と関連あるかも知れないけど、Insert modeからEscで抜けたときに
1秒くらい待たされるのは、何とかならんのでしょうか。
se noesckeysでは効果ないし…。
0103KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>102 環境やインストール方法(ソースからとかRPMからとか)を書いてください。
0104名無しさん@お腹いっぱい。NGNG
>>102
gvim -u NONE -U NONEで起動して試せ。
0105名無しさん@お腹いっぱい。NGNG
gvimではないヨカソ
0106名無しさん@お腹いっぱい。NGNG
コンソール版のVim6.2.14をソースからコンパイル。configureオプションは
マルチバイト対応とPythonスクリプト対応あたりをenable、X関係をdisableに
しています。(ごめんなさい。詳細は忘れました。)
screenごしのrxvt上で確認しましたが、screenなしとか、kterm上でも起こります。
今気づきましたが、:でコマンドを入力している途中でEscしても1秒程度遅れます。
動作としては正常なんだと思いますが…。
0107KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>106 <ESC>叩いた後に、そのまま続きをタイプしたらどうなりますか?
0108名無しさん@お腹いっぱい。NGNG
>>86のようになる場合と、すぐに反映される場合があるのですが
その違いが何に左右されているかは、分かりません。(今いろいろ試してますが、
こういうときに限って前者のパターンが発生しない…。)
ただ、0以外をタイプした場合にも起こることがあるのは確かです。
希望としては、後者のパターンであっても、もたついているような感じがするので
あまり嬉しくないですが。
0109104NGNG
>>105
gvimだったら、screenとか、ターミナルとか気にしなくていいかなと思ったので。
0110名無しさん@お腹いっぱい。NGNG
>:でコマンドを入力している途中でEscしても1秒程度遅れます。
たしかにこれはあるな。gvimではならない。なんでだろう?
0111名無しさん@お腹いっぱい。NGNG
part4になってまともになった。
【徹底的】プログラマーが語るviとemacs 4【バトル】
http://pc.2ch.net/test/read.cgi/prog/1059814696/
0112名無しさん@お腹いっぱい。NGNG
vim -u NONE -c 'set hidden' -c 'set acd' -c 'new' -c bn
Vim: 致命的シグナル SEGV を検知しました
Vim: 終了しました.
zsh: 24204 segmentation fault  vim -u NONE -c 'set hidden' -c 'set acd' -c new -c bn
このコマンドで落ちました。vimのバージョンは6.2.57で、configureのオプションは
multibyteとfeatures=bigです。OSはredhat9です。
0113KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>112
-c 'set acd'を抜いたら落ちないのですか?。逆に-c 'set acd'だけでも落ちるので
しょうか?。試して見てください。
0114112NGNG
>>113
set hiddenはなくても落ちました。-c 'set acd'だけでは落ちません。そのあとに
newしてbnかbpで落ちます。
0115KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>114 Vim起動後に手作業でやっても落ちますか?
0116114NGNG
>>115
はい
0117KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>116 次のパッチを試して下さい。結果が良好であればvim-devに送ります。

--- src/buffer.c.orig2003-08-03 16:28:42.000000000 +0900
+++ src/buffer.c2003-08-03 16:29:21.000000000 +0900
@@ -1317,7 +1317,7 @@
 
 #if defined(FEAT_NETBEANS_INTG) || defined(FEAT_SUN_WORKSHOP)
     /* Change directories when the acd option is set on. */
-    if (p_acd && vim_chdirfile(buf->b_ffname) == OK)
+    if (p_acd && buf->b_ffname != NULL && vim_chdirfile(buf->b_ffname) == OK)
 shorten_fnames(TRUE);
 #endif
0118名無しさん@お腹いっぱい。NGNG
>>117
パッチをあてたら、set acd, new, bnで落ちなくなりました。
ありがとうございます。
0119名無しさん@お腹いっぱい。NGNG
諸事情から使い慣れたエディタを捨て、emacsとviを平行して使ってみようとしています。
gvimでutf-8でencodingされた文書を読み込むと文字化けしますが
どのように設定すればよろしいのでしょう?
0120KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>119
某バトルスレの影響ですか(笑)?。UTF-8を使う上での基本はコレです。
:set enc=japan
:set fileencodings=ucs-bom,utf-8
詳細は使っているOSやライブラリにも依存します。
もちろん+iconvでコンパイルされている必要があります。
0121名無しさん@お腹いっぱい。NGNG
>>120
いえ、今までVz→Wzを使ってきたのですが、さすがに限界を感じまして。
レスありがとうございます。Win2kにてgvimを使っています。
ちょっと色々調べてみて頑張ってみたいと思います
0122KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>121
http://www.kaoriya.net/
でvimとlibiconvを入手してください。
両者を正しくインストールすれば、特に設定しなくともUTF-8が使えるようになります。
もしも日本語以外の文字が含まれているUTF-8を開く場合には
  :lang mes en
  :set enc=utf-8
  :set fencs=ucs-bom,iso-2022-jp-3,cp932,euc-jisx0213,euc-jp,ucs-2le,ucs-2
こうすると良いでしょう。
0123名無しさん@お腹いっぱい。NGNG
gvim6.2.57をソースからコンパイルして使っています。configureオプションは
--enable-multibyte --enable-xim --enable-fontset --with-features=big
を指定しました。gtk2はインストールしていないので、gtk1.2とリンクされています。

gvim上の日本語入力にskkinput2を使うため、.gvimrcに set imactivatekey=S-space
と書いたところ、起動時に E474: Invalid argument: imactivatekey=S-space
とエラーが出てしまい、imactivatekeyが設定されません。
(起動後に :set imactivatekey?  として確認したところ、 imactivatekey= と表示され、
何も設定されていませんでした。)

ただ、起動後に :set imactivatekey=S-space とすると、エラーも出ず、
:set imactivatekey? で確認すると、 imactivatekey=S-space と表示され、
きちんと設定されているようです。また、skkinput2を用いた入力も問題なく出来ます。

imactivatekeyが設定されていない状態で起動後初めて挿入モードに入った時は
S-spaceでskkinputを有効にすることが出来ます。一旦挿入モードから抜けてから
もう一度挿入モードに入ると、skkinputを用いた入力も出来ず、S-spaceでskkinputを
有効にすることは出来ません。

.gvimrcを読み込んだ時にエラーを出さずに、imactivatekeyを設定出来るようにするには
どうしたらよいのでしょうか。
0124名無しさん@お腹いっぱい。NGNG
>>123
うちではAtok使っててやはり同じ問題が出ます。
.gvimrcでは「set imactivatekey XF_Zenkaku_Hankaku」がエラーになるので
仕方なく起動後に同じコマンドを入力して使ってます。
0125名無しさん@お腹いっぱい。NGNG
>>123-124
そういえばそんなのあったね。
.gvimrcに

autocmd GUIEnter * set imactivatekey=S-space

と書いて凌いだのを思い出した。
0126名無しさん@お腹いっぱい。NGNG
>>102
se timeout
se timeoutlne=0
se ttimeoutlen=0
で直らない?
>:でコマンドを入力している途中でEscしても1秒程度遅れます。
これもなくなると思う。
0127名無しさん@お腹いっぱい。NGNG
>>126
:set timeout ttimeout timeoutlen=0 ttimeoutlen=0
残念ながら効果なしです。
timeoutとttimeoutはon|offで効果が現れるけど、
t?timeoutlenは効いていないようです。(どんな値を指定しても変わらない。)
0128127NGNG
すいません。上の一部ウソでした。
:コマンド入力中の<Esc>にはt?timeoutlenの効果がありますが、
インサートモードから抜けるときには効果がありません。
ただし、t?timeoutlen=0にしても、どちらもタイムアウト時間はゼロにならず
0.5sec(?)くらいになります。
最新のパッチ6.2.58まで当てて試してみたが、結果は同じ。
0129KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>123-125
.gvimrcにてguiコマンドの後にset imactivatekey=してみてください。
    gui
    set imactivatekey=s-space
っていう感じで。
0130名無しさん@お腹いっぱい。NGNG
hoshu
0131名無しさん@お腹いっぱい。NGNG
>>122
結局色々試した結果、vimとiconvをインストールした上で
set enc=utf-8とやればうまくいきました。ありがとうございます

xmlファイルなので出来れば自動認識してほしかったのですが、
プログラム開発ツールだと考えれば、まぁ仕方ないですね。
デフォルトの文字コードをUTF-8にして使うことにします。
0132KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>131
> xmlファイルなので出来れば自動認識してほしかったのですが、
日本語Windows下のvimではenc=cp932がデフォルトであり、あらゆる文字列が内部では
cp932で扱われます。そのため正しく認識はしていても、utf-8からcp932にマップでき
ない文字があると結局変換に失敗してしまうのです。enc=utf-8とすれば内部的にutf-8
で処理されるようになるので、上手く行くというわけです。

他にもKaoriYa版だとverifyenc.vimの影響なども考慮に入れなければなりません。
0133名無しさん@Vim%ChaliceNGNG
>>129
123の人や125の人じゃないけどさ。
同じことで困っていたんですが、その方法でうまくいきマスタ。
vim6.2.056 (Kaoriya/im-custom両方無し)
FreeBSD5.1Rです。

関係ないけど、6.2.056を+kaoriyaしたい時は、
(1)本家ソースにパッチ当て
(2)unix版差分PKGをとって来てコピー
(3)Windowsにてnetupしたものからdiff/kaoriya.diffをとって来て当てる、
というながれでいいんですかね?
0134KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>133
大体OKです。

スクリプトやドキュメントに修正が入ってることもあるので、
必要ならばruntime/以下もコピーしてください。
0135名無しさん@お腹いっぱい。NGNG
+kaoriyaって、何が変わるんですか?
0136KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>135
日本語向けの最新のバグフィックス、ちょっと便利なスクリプト、それにMigemo等の
実験的な機能が追加されます。詳細はKaoriYa版のドキュメントやソース差分を参照
してください。
0137名無しさん@お腹いっぱい。NGNG
>>136
ありがとう。まさにその概要が知りたかったのです。詳細はあとで調べてみます。
0138名無しさん@お腹いっぱい。NGNG
既出っぽいけどいいなここ。
http://kansai.anesth.or.jp/gijutu/vi/howto-vi.php
0139名無しさん@お腹いっぱい。NGNG
文字コードUTF-8はうまくいったのですが、
そのあとvimが出すエラーメッセージが文字化けしてくれます。

この文字化けを回避する方法ってどんな手段がありますか?
個人的には英語モードで起動すればよさそうな気がしています。
0140KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>139
>>122に書いてあるように :lang mes en しましたか?
0141名無しさん@お腹いっぱい。NGNG
あ、なるほど。utf-8日本語しか無かったので
そこを飛ばして読んでいました。ありがとうございます。
0142名無しさん@お腹いっぱい。NGNG
初めてWin版ですが、gvim使ってます。。
普通の商用UNIX上のviは良く使っていたのですが、
ただのviとは違って奥が深そうですね。。
逆に色々ありすぎて覚えきれないほど凄い。。。

0143名無しさん@お腹いっぱい。NGNG
windows2000でVim6.1を使い始めました。
で、ちょっとつまづいてることがあるのでアドバイスいただきたいです。

エクスプローラから 新規作成→txt file で空のファイルを作ってから
エディタで開いて編集、ということをよくやるんですが、
そうして開いたファイルをVimに「【常に】euc-jpで開いてeuc-jpで保存させたい」のです。
しかし、sjisで開いてsjisで保存してしまいます。

OSがwindowsだからsjisがデフォルトになってしまうのか、
香り屋さんのサイトから導入したiconv-1.8-dllが働いてくれているのか、
_vimrcの設定内容次第でどうとでもなる問題なのか、
そこの見極めも付けられない有様です。

ポインタお待ちしてます。
0144KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>143
:help fencs
:e $VIMRUNTIME/plugin/verifyenc.vim
この2つが主に関わっています。euc-jpのファイルしかVimに渡さないという前提ならば、.vimrcに
:let g:plugin_verifyenc_disable = 1
:set fencs=euc-jp
とだけ書けば要求に近い動作になるでしょう。
0145名無しさん@お腹いっぱい。NGNG
>>144
早速のお返事ありがとうございます。

「このエディタを快適に使うならスクリプトを知ることが大事なのだろうなぁ」
とは薄々感じていたのですが、やはり要勉強だと実感しました。

勉強できる良い機会と思って、試行錯誤してみようと思います。
(幸い、VimScriptのスレもあるようだし)
0146名無しさん@お腹いっぱい。NGNG
スクリプトかぁ
vimは、かなり大変だ
それを乗り越えると他のエディッタには
乗り換えられないだろうな
0147名無しさん@Vim%ChaliceNGNG
consoleでvimを使うと, タイトルが
    Thanks for flying Vim
となるのがウザいんですが, 勝手にタイトルを変更
しないようにすることはできますか?
0148KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>147 :set notitle でどうですか?
0149名無しさん@お腹いっぱい。NGNG
awkと組み合わせると結構なんでも出来るなぁ
0150名無しさん@お腹いっぱい。NGNG
vimは奥が深い
0151名無しさん@お腹いっぱい。NGNG
vim使いの人って何のメーラ使ってるんですか?
やっぱmutt?
0152名無しさん@お腹いっぱい。NGNG
http://esenden.com/rank/network/ranklink.cgi?id=mercury
0153名無しさん@お腹いっぱい。NGNG
>>152は無関係な広告

>>151
muttでーす。
某氏がvim6上で動作するメーラを極秘開発中という噂を耳にしたので
密かに楽しみにしてまつ
0154147@Vim%ChaliceNGNG
>>148
いや, set titleして, Vim起動中はtitlestringの内容を表示してほしいんですが,
終了した時に*termのタイトルが「Thanks〜」になるのがイヤなんです.
0155名無しさん@お腹いっぱい。NGNG
>>154
よくわからんけど、titleoldかな?
0156名無しさん@お腹いっぱい。NGNG
>>153
同じく、私も楽しみにしております。
もう、hjkl無しでは生きていけないのです。
0157名無しさん@お腹いっぱい。NGNG
ノーマルViを使ってきた俺でもvimは使いこなせていない。。
0158154@Vim%ChaliceNGNG
>>155
titleoldのhelpを見ると,
This option will be used for the window title when exiting Vim if the
original title cannot be restored.
って書いてあるぐらいだから, Vim的に元のタイトルを復元できないんですね.

結局, Vim以外のアプリからもshellのタイトルを変えられる可能性はあるわけで,
shell側の設定で恒久的対策(precmdを使う)をすることにしますた.
0159名無しさん@お腹いっぱい。NGNG
NetUpVimを使ったら自分で設定したファイルまで
全部上書きしてしまった(´・ω・`)ショボーン
0160KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>159
KaoriYa版についてくるデフォルトのvimrcやgvimrcは書き換えないほうが良いでしょう。
代わりに_vimrcや_gvimrcを作って、そちらに設定を書きましょう。そのようにvimrcと
gvimrcの中に書いてあるでしょう?。
0161名無しさん@お腹いっぱい。NGNG
>>160
なるほどちゃんと見てなかったでつ。
どうもありがとうございました。
0162名無しさん@お腹いっぱい。NGNG
(Win版の話をしてもいいのかなぁ・・・)

1.色分けが時々おかしくなるんですが、どうにかなりませんか?
(画面スクロールしてると直りますが…)

2.ヤンクした文字を他のWinアプリに貼り付けたり、
 あるいは他のWinアプリからコピーした文字をVimに貼り付けたりできませんか?

Version6.2
0163名無しさん@Vim%ChaliceNGNG
>>162
(1) win版に限らず、時々なるね。「どうにか」は…神に祈ろう
(2) :h gui-clipboard
0164KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>162
(1) syntax highlightingはマジメにやると非常に遅くなってしまうので、ある程度
の範囲を調べて「えいやっ」と色を付けてしまっています。そのため複雑なsyntaxで
はおかしくなる場合があります。一時的におかしくなったものならば<C-L>をタイプ
して再描画することで修正されます。

また、遅くなっても構わないということであれば:syntax sync maxlines=9999のよう
にsync-maxlinesを増やすのも良いでしょう。このあたりの詳細は
:help syn-sync
を参照してください。

(2) 163が正解です。要約するとレジスタ * を使う、ということになります。
    例: "*y10j "*p
0165162NGNG
>>163-164

おぉ、速レスありがとうございます!
(しかも神な方までいらっしゃるとは…)

これでより楽しく使えそうです^^
ありがとうございました
0166名無しさん@お腹いっぱい。NGNG
>>164
> 一時的におかしくなったものならば<C-L>をタイプ
> して再描画することで修正されます。
経験則では、<C-L>では直らないような。
一度スクロールアウトさせないとダメな感じでつ。
0167KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>166
2タイプあります。Makefileのコマンド部のエラーように短いのは<C-L>で治ります。
Perlスクリプト内のヒアドキュメントやPODのように長いのだとmaxlinesの再設定が
必要でしょう。

まぁプログラムの場合には、必要も無いのに長いブロックで書くのはメンテの観点か
らも良くないですから、この際ほどほどのところで切り分けるスタイルを身に付けて
しまうのも手かもしれません。
0168名無しさん@お腹いっぱい。NGNG
syntax highlightに関してはEmacsよりよっぽど優秀だと思う。あっちはすぐ
におかしくなる。
0169名無しさん@お腹いっぱい。NGNG
> この際ほどほどのところで切り分けるスタイルを身に付けて
> しまうのも手かもしれません。
人様のプログラムを弄る場合にはそうも言ってられないわけで・・・

でっかい#if 0のブロックの色分けに失敗されるとチョトツラーイ
さんざ修正した挙句に「え、これコメントアウト?」
0170名無しさん@お腹いっぱい。NGNG
>>167
コーディングスタイルに縛りを設けちゃうようなソフトウェアってどうなんだろう…、
とふと思った。

ソースの切り分けは大事で、それはそれでやるべきなんですがね。
それこそ、ソフトウェアの問題とコーディングスタイルの問題とで切り分けるべきかと。

大変でしょうが、そういう発言をKoRoNさんの口から
聞きたくはなかったなぁ・・・・・・・・(´・ω・`)
0171名無しさん@お腹いっぱい。NGNG
>>162
C-c, C-x, C-v あたりの挙動を標準的な win32 アプリに合わせてしまうのも
一手。

so $VIMRUNTIME/mswin.vim
behave mswin
0172KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
定義可能で完璧で高速なsyntax highlightingなんていうのが、アルゴリズムだけでは
どうにかなら無いということをご理解いただいていると仮定した上で、maxlinesの設定
を増やすことはそれ自体が「重さ」に直結するので、必要な人がそのトレードオフを理
解した上で実行するべきなんです。

>>169
「ガンバ」です。頻繁にそのようなソースを弄るならばmaxlinesを大きく設定してくだ
さい。結果遅くなるようなら…上司様に激速PCを直訴するか、Vimのソースコードを弄
るかしてもらうしかありません(^-^;。あとは…「リファクタリング」と称してその部
分を修正する工数を割いてもらう、くらいでしょうか(苦笑)

>>170
167後半は冗談交じりではありますが、残念ながらVimに関してはコーディングスタイル
どころか、通常の文章の入力・編集スタイル、その操作スタイルさえもソフトウェアが
縛ってしまっているのが実情です。「エディタが代わるとjjjjjjを入力している」とい
うお決まりの現象も、まさにその現れといえるでしょう。
0173KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
(>>172の続き)
ただ正確にはどちらも破ることはできます。単にそれから外れると、少々Vimが本来持
つパフォーマンスを発揮できないとか、ちょっと操作が面倒くさいとか、独自に設定を
書かなければならないという程度の縛りです。コーディングスタイルを縛るのはsyntax
や、あとはcinoptionsなどのインデント系でしょうか。ですが、この程度の束縛は気が
付いてないだけで他のソフトウェアにもあるとは考えたこと、感じたことはありません
か?。

あるソフトウェアを使うということはどんなにカスタマイズが広範に可能でも、多かれ
少なかれそのスタイルを強要されているのに同義です。またもしもVimがそれ以外のス
タイルを許さないとか、それによって利用者のクリエイティビリティを大きく制限して
いるのであれば大問題でしょうが、事実はそうではありません。以上を踏まえた上での
167後半の発言と考えてください。

ソフトウェアを書く身としは、なるべく「スタイルの強要」が無いようにするべきだ、
という意見には同意しますが、現実問題として強要を減らすための労力を充分にかけら
れることは稀です。そしてVimには、パフォーマンスを発揮させるための特殊な利用ス
タイルというものが確実に存在します。利用者はすべからくそれを追求しなければいけ
ないというわけではありませんが、追求してみるのも面白いでしょう。
0174KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>170 一点忘れてました。

> それこそ、ソフトウェアの問題とコーディングスタイルの問題とで切り分けるべきかと。
もちろんそのとおりで理解していますが、敢えて「ソレをキッカケにコーディングスタ
イルを考え直してみるのも面白いかもね」と書いたのです。結局、ソフトウェアによる
解析にとって分かりにくいコーディングは、人間にとっても分かりにくいものなわけで
す。だとすれば完璧に解析できる専用ツールを使うか、分かりにくいまま編集を続ける
か、ソースを分かりやすく変更するかのどれかです。

Vimは汎用テキストエディタですから、完璧な解析を求めるのは酷と言うものです。そ
れに正しく色づけられないことが本当に問題だと考えるならば、ソースコードも色づけ
の仕組みも公開されているのですから、そう考えた人が改良することができますよね。
それがオープンソースの利点じゃないでしょうか。
0175名無しさん@お腹いっぱい。NGNG
ただで完璧な色分けができるならそのほうがいいけど
ただじゃないからねー。
重くなるのは嫌だ
0176名無しさん@お腹いっぱい。NGNG
You cannot eat your cake and have it.
0177KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>175
完璧を求める姿勢は評価に値するけれど、悪い癖であるとも言えますよね。完璧を期
するあまりレアケースのために、全体の速度を犠牲にしたり極端にコストを増大させ
たり、ソフトウェアを構築する過程ではついつい「やり過ぎ」たくなっちゃうもので
す。そのバランスを上手く取れるようになりたいものです。
0178名無しさん@お腹いっぱい。NGNG
シンタックスの部分をスクリプトでやるのではなくコンパイル済みのバイナリでやるとかどうだろ。
速度の問題がスクリプトで処理しているからと言う理由ならそれで解決できたりして。
思想がに反する気はするけど。
0179KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>178
> シンタックスの部分をスクリプトでやるのではなくコンパイル済みのバイナリでやるとかどうだろ。
シンタックスエンジンは汎用的なルーチンになっているんで、そいつに渡すデータ設
定にスクリプトという形を使っています。ランタイムでスクリプトの解釈系が走って
いるわけではありません。ですから遅くなったり色がおかしくなるのは複雑な構文を
持ったシンタックスだけです。その点から言えばシンタックスファイルの最適化とい
う考え方はあるかもしれません。

提案されるようにシンタックス毎に決め打ちなルーチンを埋め込むという方法につい
ては、程度はともあれ速くなることは期待できるでしょう。でもそのためのAPI切り
から現行のシンタックスの移植から何からやるのって相当時間がかかります。それに
例えCで決め打ちルーチンを作ったとしても、拡張性が低くなるのは勿論、本質的に
遅くなってしまうシンタックスというのは存在するでしょう。そう考えると手間に対
する報酬のバランスが悪いでしょう?。
0180名無しさん@お腹いっぱい。NGNG
スレとあまり関係ないけど、クエスチョンマークの後ろに句読点を付けてるのが
キモ過ぎるんですけど…。
0181KoRoN@Vim%Chalice ◆8XALICEsdk NGNG
>>180 許して?。
■ このスレッドは過去ログ倉庫に格納されています