vim-jp / issues

有志で既知のバグや要望を検討・管理し、オフィシャルへの還元をしていきます。
https://vim-jp.org/
341 stars 11 forks source link

Kaoriya版のシステムのvimrcの副作用が大きすぎる #331

Open thinca opened 11 years ago

thinca commented 11 years ago

330 より。

Kaoriya版で用意されている vimrc ファイルは常に強制的に読み込まれるにも関わらず多くのことを設定していて、自分の設定を持っているユーザからは邪魔になることがあるようです。実際、このvimrc ファイルを消しているユーザもいます。専用の処理を書くことなく無効化する方法が欲しいです。

thinca commented 11 years ago

330 の @koron さんのコメントより。

私は$VIM/_vimrcを提供する案も$HOME/_vimrcを自動生成する案もどちらも強く反対です。 前者の理由はすでに述べたとおりです。 後者は特に余計なことをやり過ぎですし、その生成スクリプトをどこに書くんじゃいとなります。 これ実質vimrcに書くしかなく、そんな複雑なことするくらいなら 読んでカスタマイズ方法がわかる今の形式のほうがはるかに良いです。

$VIM/_vimrc に書けば良いと思います。デフォルトの vimrc を別ファイルで用意しておき、$VIM/_vimrc には $HOME/_vimrc の存在チェックと、存在していなかった場合にコピーする処理、そして最後に $HOME/_vimrc:source するだけ書いておけば良い。次回以降は自動的に $HOME/_vimrc が読み込まれます。

@thinca さん

_vimrc はユーザ設定用と広く知られているのでユーザは $VIM/_vimrc を書き換えてしまう可能性が高い。

初心者にとっては vimrc だろうが _vimrc だろうが違いはわかりません。恐らく現状でも vimrc を書き換えてしまう人は書き換えてしまうでしょう。

そうではありません。すでに _vimrc を書き換えるという情報は多くありますし、 また現在の vimrc 自体にもどうすべきかは記載されています。 書き換えようとした時点で正しい情報に触れられるようになっています。

$VIM/vimrc を読んでもらう前提ならば、それこそそこにコピーするよう指示しておけば良い話です。(自動コピーするならば必要ないですが)

koron commented 11 years ago

$VIM/switches/enabled/disable-vimrc.vim というファイルがあったら読み込まない(vimrcの先頭部分でfinishする) というのではダメ? すでに $VIM/switches/enabled/disable-vimdoc-ja.vim を置くと vimdoc-ja が無効になる仕組みは作ってあります。

以上のような方法はまず受け入れられません。

koron commented 11 years ago

$VIM/_vimrc に書けば良いと思います。

そこに書いたとしても同じ事です。勝手にファイルを作るべきではない。

koron commented 11 years ago

本来なら _viminfo だって作らせたくないですなぁ。

koron commented 11 years ago

こっちでやるべきだったので転載:

from #330 by @mattn

僕が初心者で、欲しいとしたら、~/_vimrc を簡単に作れるウィザード形式のプラグインかな。 ユーザ主導で、かつexampleを読み込むかどうかも質問に入れたらいい。

thinca commented 11 years ago
  • まったく用意しない (使いにくい)
  • 初回起動時にファイルを作る (余計な処理が多すぎる)
  • 初めて設定を書いた時にデフォルト設定が全部失われたようにみえる (ユーザの予想に反する動作はしてはならない)
  • アップデート時にユーザの変更が失われる (ユーザの資産が失われるのは論外)

初回起動時にファイルを作るについて、副作用で混乱すると言うのならわかるのですが、余計な処理が多すぎるとはどういうことでしょう。私はそうは思いません。5行くらい出かけるし、大した処理ではない。

本来なら _viminfo だって作らせたくないですなぁ。

作らせたくないなら、標準の設定ファイルに set viminfo= と書いておけば良いです。私はこれを消すのは反対ですが。

mattn commented 11 years ago

どこ書けばいいw 携帯からなので追えないw

On 3/13/13, MURAOKA Taro notifications@github.com wrote:

こっちでやるべきだったので転載:

from #330 by @mattn

僕が初心者で、欲しいとしたら、~/_vimrc を簡単に作れるウィザード形式のプラグインかな。 ユーザ主導で、かつexampleを読み込むかどうかも質問に入れたらいい。


Reply to this email directly or view it on GitHub: https://github.com/vim-jp/issues/issues/331#issuecomment-14785846

koron commented 11 years ago

@thinca さん

$VIM/switches/enabled/disable-vimrc.vim というファイルがあったら読み込まない(vimrcの先頭部分でfinishする)

私のこの案に対する意見はありませんか?

thinca commented 11 years ago

@koron アップデートスクリプト使用時にそのファイルが消されないのなら個人的にはアリです。 (ちなみに今はアップデートスクリプトを叩く度に vimrcgvimrc を手動で消している…)。 個人的には、と書いたのは、恐らく世の中にはディレクトリを丸ごと入れ替えて更新する人もいると思われるので(現に私が更新スクリプトを利用し始める前まではそうしていた)、そういう人に対しては全く助けにならないかな、と思うからです。

koron commented 11 years ago

@thinca さん

アップデートスクリプト使用時にそのファイルが消されないのなら~アリ

消されません。そのための仕組みです。

あとこれまでの @thinca さんの案は総じて「ある程度使い込んでいる人」の立場に立っているように見受けられます。 「ちょっとVimを試してみたい&ダメなら綺麗サッパリ手軽に消したい」 そんな風に考える人の立場で少し考えなおして&見なおしてみてください。 これまでの案でできあがるものはどう映りますか?

h-east commented 11 years ago

おちけつ! もっといろんな人の意見が聞きたいなぁ。。。普通のVimmerとか最近使い始めたVimmerとか

この流れでそういう人が書き込んでくれるか微妙だけど:grimacing: 勇気を出して書き込んで頂けると嬉しいです。

mattn commented 11 years ago

僕は、vimだからこそ、初心者も中級者も上級者も救えるべきだと思う。

そういう点でthincaさんが今回「じゃあkaoriya版やめればいいじゃん」とならずに意見した所にGJと言うべきだと思う。

初心者はvimrcがどう作用するか知らないし、情報はネットが多い。またswitchesの知識をこのタイミングで教えるべきでない。

中級者、上級者は逆に「好きな風にやらせろよ」な人なので、~/_vimrc があれば優先する仕組みとして、初回の作成を補助(まだexampleが欲しいかどうかも聞く)する仕組みがあればいい。

On 3/13/13, h_east notifications@github.com wrote:

おちけつ! もっといろんな人の意見が聞きたいなぁ。。。普通のVimmerとか最近使い始めたVimmerとか

この流れでそういう人が書き込んでくれるか微妙だけど:grimacing: 勇気を出して書き込んで頂けると嬉しいです。


Reply to this email directly or view it on GitHub: https://github.com/vim-jp/issues/issues/331#issuecomment-14786837

thinca commented 11 years ago

ダメなら綺麗サッパリ手軽に消したい

たしかにこの視点は抜けてましたね。これを考えるとコピーはよろしくないですね。

あとこれまでの @thinca さんの案は総じて「ある程度使い込んでいる人」の立場に立っているように見受けられます。

初心者と上級者、両方の意見に立っていたつもりです(そうは言っても本当に初心者ではないので視点が抜けていたわけですが)。

thinca commented 11 years ago

@h-east ここで想定している初心者はそもそもこんなところ覗かないだろうなぁw (覗いた時点で初心者とは思えないw)

koron commented 11 years ago

初回に自動生成 するという仮定で、お風呂でいろいろシミュレーションしてみたけど $VIM/_vimrc しかないだろうと思った。この場合 _viminfo$VIM に生成するよう設定したほうが良い。 そうすれば$VIMを消せば全部消えてくれる。自動生成をやるならWindowsは概ねコレでハッピー。

ただコレUNIX系ではツライ。

thinca commented 11 years ago

これは、$VIM/vimrc$VIM/_vimrc を自動生成する、と言うことですね。 パッケージに直接 $VIM/_vimrc を入れた場合との違いは何があるでしょうか。

mattn commented 11 years ago

自動生成はオヌヌメしないなー。

ynkdir commented 11 years ago

私も自動生成はいまいちと思います。

$VIM/_vimrc, $VIM/switches

カスタマイズのために Program Files 以下をいじるかたちはどうかと…

もしかしてライブCDみたいなお試し環境やポータブルVimみたいな方向性なんですか。

heavenshell commented 11 years ago

MacVim Kaoriya の事を考えると $VIM は /Applications/MacVim.app/Contents/Resources/ になるので、まず初心者はそんな所を触らないというのを留意していただければ。 (本当の Vim 初心者が MacVim Kaoriya をどのくらい使ってるかは置いといて)

koron commented 11 years ago

@thinca

パッケージに直接 $VIM/_vimrc を入れた場合との違いは何があるでしょうか。

ないですね。加えて $HOME/_vimrc の自動生成はやはりアレなので、自動生成自体なしかなぁ…

switchesを置く位置は了解。 switches/catalog はいまの場所のままにするとしても、 enabledの位置は ~/ 以下のどこかにできたほうが良さそうですね。

ちょっとユーザーストーリーをまとめたほうが良いかも。

koron commented 11 years ago

達成すべきユーザーストーリー的なものまとめてみます。

以上は結構重要だと考えてます。その他、雑多なところ。

とりあえずこんなところ。

BTW: Xubuntu に kaoriya vim入れたらデフォが enc=euc-jp(japan) になった。ありえないわw

koron commented 11 years ago

~/_vimrc の先頭数行になにかおまじない(コメント内にキーワードとか)を書いておくとデフォルト設定は何もしない というのはどうだろう。昔はバッファで読まなきゃで嫌だったけど、今ならそんなでもない気がする。

thinca commented 11 years ago

~/_vimrc の先頭数行になにかおまじない(コメント内にキーワードとか)を書いておくとデフォルト設定は何もしない というのはどうだろう。昔はバッファで読まなきゃで嫌だったけど、今ならそんなでもない気がする。

それは、コメントに書くという点と、本来意識したくない kaoriya の設定を意識する必要があるという点が良くない気がします。

mattn commented 11 years ago

僕も kaoriya を意識した vimrc を書かせるのは筋が悪いと思う

koron commented 11 years ago

んじゃぁスイッチファイルで良いの?

デフォ設定はある前提で、それをアップデートに影響を受けない形で無効化する手段としてどういう方法が良いのかな?

h-east commented 11 years ago

.zipではなくてsetup機能付きの.exeで配布するとか。 (setup内で今の環境を検知&表示してユーザにいろいろ選択させたりするとかしないとか)

mattn commented 11 years ago

世の中いろいろ言う人には2種類いて

・初心者で分からん!と言う人 ・中級者で勝手な事するな!と言う人

後者はどの環境でも同じvimrcを使おうとして、kaoriya版の設定が邪魔になる。 前者はkaoriya依存でもなんでも良いので迷いなく設定したい。

中級者は上級者になるにつれ「kaoriya版便利だから使い続ける派」と「自前でビルドするよ派」に分かれてるんだけど、この使い続ける派は実際なんとかなるはずなので放置で良くて、初心者だけ救えればkaoriya版としての役目が遂行できるんじゃないなか。 koron さんはどの層をターゲットにしてるんだろう。

koron commented 11 years ago

先のユーザーストーリーに書いたことから読み取れるかもだけど 初級に軸足を置きつつ、可能な限り上級側にもって感じで。

koron commented 11 years ago

@h-east

.zipではなくてsetup機能付きの.exeで配布するとか。

NSIS でできるけど…ちょっと面倒かも。 個人的にはインストーラーには抵抗あるけど、今時なら気にしなくても良いかしらね。 VimならZIPよりも小さくなる可能性もありそうだし。

ただちょっと本題とは違う(どのユーザーストーリーを実現できるのかわかりにくい)かなぁ。

heavenshell commented 11 years ago

~/.vim/switches とかに no_vimrc_example.vim とか no_plugins_kaoriya_plugin_hz_ja.vim とかがあれば読み込まないみたいな感じではどうでしょうか? Kaoriya 版の vimrc 自体を読まないのは no_kaoriya.vim があれば最初で finish しちゃう。 現状と違うのがファイルの中身まではみなくて、ファイルの存在だけでロードの有無を判別する。

初心者ユーザは ~/.vim/switches とか触らないだろうから良きに計らった Vim が使える。 デフォルトが嫌なユーザは面倒だけどファイル置いてねと。

wiredool commented 11 years ago

システムのgvimrcを厄介に感じたことがあります。 設定を一つの_vimrcで管理しようとすると、gvimrcが設定する部分は上書きしにくいのです。

先に読み込まれている _vimrc から gvimrc の読み込みを簡単に止められると良いかなと思います。

現在 gvimrc の読み込みを中止する g:gvimc_local_finish などは特定のファイルが無いと発動しません。 gvimrc以外の分は、最後に読まれている自分の_vimrcで上書きするればどうにかなるような気もします。

thinca commented 11 years ago

今一番問題になっているのは、

初級に軸足を置きつつ、可能な限り上級側にもって感じで。

とのことなので、まあスキルレベルを考えても中級者以上の方に多少の負担をしてもらうことになるかな、と思います。 ここまで、認識に問題はないでしょうか? 問題がなければ、以降は「デフォルトの設定を無効化する方法の提供方法」に話題を絞って議論できるかと思います。

h-east commented 11 years ago

もうちょいいろんな意見を聞いてもええやん。まとめとか方向性とかは本人( @koron さん)にまかせたらええやん。

thinca commented 11 years ago

もうちょいいろんな意見を聞いてもええやん。

はい、なので、

ここまで、認識に問題はないでしょうか?

ここでみんなの意見を確認したつもりです。わかりづらかったらすいません。

まとめとか方向性とかは本人( @koron さん)にまかせたら

@koron さんが、vim-jp 公式のデフォルトにしたいと言っていたので、みんなで取り組むべき問題かなーと考えていたんですが、流石に気が早すぎましたかね。

h-east commented 11 years ago

ところで、1台のWindowsマシンを複数のユーザで使用する(その中にVimmerが複数)環境は考慮する必要はないでしょうか? この場合は個別の設定や _viminfo を $VIM に置くのはよろしくない感じかな?

koron commented 11 years ago

@wiredool Thanks!

@thinca

スキルレベルを考えても中級者以上の方に多少の負担をしてもらうことになるかな、と思います。

同意です。ただ、ドキュメントはしっかりしておくべきですね。

@h-east

1台のWindowsマシンを複数のユーザで使用する(その中にVimmerが複数)環境は考慮する必要はないでしょうか?

私も最初は ねーだろ、そんなの と思ってたらなんどか要望が来ましてね… vimrc_local はその時にできた機能なんです。 個人的には要らないですが、いつ引き合いがあるかはわかりません。

ynkdir commented 11 years ago

最初におすすめ設定ファイルを $HOME/_vimrc にコピーしてもらうというのはやっぱりなしですか。

mattn commented 11 years ago

オススメの設定の先頭で

if filereadable(expand("~/_vimrc"))
  finish
endif

でいいと思うけどなー。

koron commented 11 years ago

@ynkdir

ダウンロードやインストールした直後に起動して(日本語で)使いやすい(=デフォルト設定)

に反するので、手動で何かしてくださいってのはなしです。

@mattn

  • ユーザがカスタマイズする時に、大きな断絶がないようにする
    • デフォルト設定がいきなり全部なくなったらびっくりしてしまう

一見これに反しそうにみえるけど、そうはならないまだ書いてないアイデアはありますか?

thinca commented 11 years ago

一見これに反しそうにみえるけど、そうはならないまだ書いてないアイデアはありますか?

今ちょっと考えたんですが、

デフォルト設定がいきなり全部なくなったらびっくりしてしまう

通知を行うことくらいはできるかもしれません。少し煩雑ですが。

" $VIM/vimrc (システムデフォルトvimrc)

" なんか適当なマーク用のファイル。なんでもいい
let s:using_default_mark_file = $VIM . '/.using_default'

if filereadable('~/_vimrc')
  " ユーザが作った vimrc が見つかった場合
  if filereadable(s:using_default_mark_file)
    " ユーザは新しく vimrc を作った
    " デフォルトの設定が適用されないことや必要ならコピーする旨を通知
    call confirm('ついに vimrc を作ってしまったのですね…', 'OK')
    call delete(s:using_default_mark_file)
  endif
elseif !filereadable(s:using_default_mark_file)
  " ユーザが作った vimrc がない(=vimを新しく始めるユーザである)ことを記録しておく
  call write([], s:using_default_mark_file)
endif

やるならもうちょっとしっかりやる必要がありますが。 (こうしたい、と言うよりも、こういう方法もあるよ、程度に受け取ってください)

mattn commented 11 years ago

デフォルトの設定で物足りなくなった人って、まず人のコピーから始めると思うんです。

僕が考える初心者の道のり

  1. vimrc 分からない。デフォルトのまま使う。
  2. ちょっと気に入らない所出てきた。弄りたい。_example.vim を弄る。
  3. vimrc ってので出来るらしいぞ。_vimrc置く。

この3の地点では、既にvimrcに興味があって、_vimrcを置いた事は自分で分かっているはずかと思います。 なので、デフォルトに戻ってもまったく大丈夫だと思います。

koron commented 11 years ago

1つアイデア。gvimrc系は省略&UNIX系の話は無視して書きます。

初心者がファーストステップを踏み出す際のハードルを少しだけ上げ、中級者以降に配慮したことになると思う。

thinca commented 11 years ago

投稿タイミングシンクロしすぎw

mattn commented 11 years ago
call confirm('クックック...デフォルトのvimrcがやられたか…', 'OK')
koron commented 11 years ago

初心者像を まず人のコピーから始める としたアイデアは良さそう。

koron commented 11 years ago

コピーの元となるいくつかの設定を同梱配布するってアイデアも行けそう。

thinca commented 11 years ago

そしてウィザードへ…。

koron commented 11 years ago

そして thinca版、ujihisa版、shougo版などのデフォルト設定が同梱されます。

thinca commented 11 years ago

誰が使うんだw

koron commented 11 years ago

「まずあの人達がどう使ってるか知りたい」「同じ環境で使ってみたい」ってのがあるかも、とw