vi 2nd

■ このスレッドは過去ログ倉庫に格納されています
1名無しさん@お腹いっぱい。
垢版 |
NGNG
vi原理主義者の集い 2nd。
歴代スレは>>2。関連スレ・サイトは>>3
2011/05/06(金) 23:55:57.91
ttyにはedがふさわしい

viは甘え
2011/05/07(土) 01:23:27.30
>>792
お前こそ意味分からん。
2011/05/07(土) 13:08:30.52
edだと jでスペース入らないんだな。
スペースを入れるようになったのは exからか。
2011/05/09(月) 11:39:07.07
>>796
いや、せっかくvi使ってんのに、例えば横約80文字くらいの文章書くときに
その幅に合わせて手動で文中に改行入れたり消したりと、ご苦労なことだなぁとさ
2011/05/09(月) 11:50:30.61
>>798
> 例えば横約80文字くらいの文章書くときに

えらく前時代的な仮定だなw
2011/05/09(月) 12:06:17.73
>>798
ワープロで、単語の途中で改行にならないように
行単位で書式いじる非効率な奴の事を思い出した
801名無しさん@お腹いっぱい。
垢版 |
2011/06/03(金) 07:00:34.90
vi ってホントコマンドをマスターするとかなり効率的に文字が入力出来るね。
マウスを使わなくても何でも出来るから快適w

ほーんとviが大好きになっちゃいますたw
2011/06/28(火) 11:41:30.43
質問良いでしょうか?
現在行から、マーク(仮にmとします)した行までの各行の先頭に#を挿入するにはどうすれば良いでしょうか?
要するに範囲をコメントアウトってことです
803名無しさん@お腹いっぱい。
垢版 |
2011/06/28(火) 11:42:10.44
念のためageます
2011/06/28(火) 12:08:46.99
>>802

:,'ms/^/#/
2011/06/28(火) 19:18:14.76
この人は何て素敵な名前なんだろう・・

http://vihart.com/

vi と関係無いけど pi を無くそうという運動があるらしいね
806802
垢版 |
2011/06/29(水) 05:38:22.44
>>804
マークの位置によっては逆に :'m,s/^/#/ とかやる必要もあるみたいですね
ありがとうございます、できました
2011/06/29(水) 07:34:24.64
>>806
お礼の返事が遅いと思ったらそんなところで悩んでたのかw
2011/06/29(水) 08:15:44.16
>>807
遅くてすみません…確かに私は範囲に対して編集するとき
範囲の開始行でマークを付けて、後ろから指定することが多いです(dとか>とか)
でも本当に役に立ちました、お陰で答えに辿り着くことができました
2011/07/01(金) 15:36:11.60
あ、俺もだ。
forループもカウントダウンして、0と比較して終了条件にすることが多いな。
2011/07/23(土) 19:40:31.83
初心者向けのテキストに:wqでなくZZを教えてるものが多い気がするがなぜだろう。
慣れたらまったく使わなくなるのに。
2011/07/23(土) 19:47:36.11
>>810
ん?

慣れたら :x だろ?
:wq は更新がなくても強制書き込みするから糞コマンド。使わない方がよろしい。
2011/07/24(日) 00:16:11.25
>>811
:wq というか、:w で上書きしない方がクソ仕様だろ。
2011/07/24(日) 01:15:51.59
>>810>>812
同意できない
>>811
同意
2011/07/24(日) 04:55:57.46
>>810
設定ファイル弄るときにはZZのが好きかな
ミスって設定読まずに起動するしかない場合に
コロンは場所が違っちゃったりするからね
でも俺も、少なくとも初心者向けとしては:wqのが体系的に覚えられて良いと思う
2011/07/25(月) 11:48:28.63
初心者こそZZ(or :x)だろ
mtimeが書き換わる:wqが癖になる必要はない。
2011/07/25(月) 20:24:57.21
>>815
:w、:q、:q!、:wqをセットで覚えて使い分けるべきってことさ
2011/07/25(月) 20:41:13.56
:x :q :q! :w の順に覚えるべき。

:wq は害があるので覚えない方がよろしい。
2011/07/25(月) 22:55:59.71
順番で言ったら:q!が最優先だと思うが。
vi知らずに起動してしまった場合、パニックでいろいろやらかしても
ESCと:q!だけ知ってればエスケープできるし。
2011/07/26(火) 07:04:30.88
>>817
閉じるのは:q、それが効かない場合には:q!と:wqとを選ぶ、と教えるんだよ
ZZは常用させると保存しちゃいけないときに保存しちゃうし
体系的にほかのコマンドとの関連がないから覚えにくい
2011/07/26(火) 07:09:45.37
あ、いやその場合も:wqは要らんか
:wの後に改めて:q、と教えるほうが良いな
何れにしろZZや:xは教えるべきじゃない
821名無しさん@お腹いっぱい。
垢版 |
2011/07/26(火) 07:29:43.68
:x は、保存の意思を持って使用するコマンド。
その結果、ファイルが更新されていなければ
不用意にタイムスタンプをいじらないから合理的。

:wq で終了、と刷り込まれてる人は
ファイルの内容を見るためにviを起動して
:wq で終了してタイムスタンプ更新しちゃうから最悪。
2011/07/26(火) 07:33:17.98
>>821
常用しちゃうとそれを終了に使っちゃうわけよ
だから保存と終了を兼ねるコマンドは教えてはならない
保存は:w、終了は:q、破棄は:q!と教えるべきかと
2011/07/26(火) 07:39:38.71
>>822
ちがう。

最初から、保存したい時は :x
保存したくない時は :q で、駄目だったら破棄覚悟で :q! と教える。

:x で、保存したいファイルが保存されなかったということはない。

:wq は廃止するべき。
2011/07/26(火) 08:44:50.65
>>822
ハゲ同意

意図しない保存を防ぐ為に、:wと:qを使い分ける。

viに限らず、WinやMacのエディタやエクセルなどのソフトでも保存と終了は使い分ける。
2011/07/26(火) 12:20:55.78
>>822
>>823
どっちも合理的。

>>824
> viに限らず、WinやMacのエディタやエクセルなどのソフトでも保存と終了は使い分ける。

同意できない。
2011/07/26(火) 15:01:43.19
>WinやMacのエディタやエクセルなどのソフトでも保存と終了は使い分ける。
とっくの昔にautosaveなのだが…
2011/07/26(火) 16:37:02.56
>>823
じゃあ、保存だけのために終了するのかい?
保存だけを単品でするクセを付けたほうが良い。
終了するときだけ保存、というのはやめたほうが良いよ。
何時間も編集してたのがdだらどうすんのさ。
2011/07/26(火) 16:55:01.81
>>827
もともとの話の前提が違う。
元の話は >>810 に対する反論。
言いたいことは「:wqは使うな」

vi初心者にviの終了コマンドを教える時に、
「保存して終了なら :x」
「保存せず終了なら :q を試して駄目なら :q!」
と教えろという話。

viを終了せずに保存する話はしていない。
2011/07/26(火) 18:11:16.20
>>827
viを使い方としては特殊だろw > 何時間も立ち上げっぱなし
2011/07/26(火) 19:35:45.66
>>826
そのautosaveとctrl+sは機能が違うよね。
autosaveでオリジナルファイルを勝手に更新されたら、たまったもんじゃない。
それは、クラッシュした時の保険だよ。
2011/07/26(火) 21:59:19.13
>>810-830
お前ら、どうでもいいだろそんな話。
スレ伸びてると思ったら、大概にしろお前ら。
低レベルの話題しかできないなら、保守だけしてろよ。
2011/07/27(水) 00:48:05.23
タイムスタンプなんてあやふやなものに頼ってる人と一緒に作業したくないな。
共同編集するならバージョン管理使う。エディタの仕事じゃない。
2011/07/27(水) 07:37:54.70
>>832
タイムスタンプが確固たるものではないことは同意だが、
だからと言って無編集のファイルのタイムスタンプを :wq で不用意に更新していい
という理由にはならない。

あ、ちなみに共同編集でバージョン管理は当然使ってるし。
2011/07/27(水) 08:40:07.01
>>829
常用エディタとして使うと結構、長時間起動するもんよ
まあ無保存でってのは無いだろうけどさ

んで、やっぱ保存と閉じるのは別物だと思う
その上で、:w →:q とすべきであって
:x や ZZ で覚えてしまうと「viは閉じる=保存のエディタなのか」と誤解されかねない
:wq は :w →:q をセットにしたものだよ、と体系的に覚えられるのが利点

「保存するという明確な意思がある」なら尚更タイムスタンプなんて更新する前提だろ
保存するという明確な意思があるのに、無変更ってそれどんな場合だよ
2011/07/27(水) 08:49:29.97
>>834
「保存するという明確な意思がある」なら :x でいいじゃん。
なんでタイプ数の多い :wq 使うの?

> :w →:q をセットにしたものだよ

:w と :q をセットで使うのは無駄。セットで使ってはいけない。
2011/07/27(水) 09:07:58.03
>>835
同じような機能を覚えるのがめんどうです。

ZZは、初心者が終了できない地獄に陥ったときに、簡単で覚えやすい為だけにあると思う。
2011/07/27(水) 09:15:17.12
>>836
なんだ、viの機能使いこなしてないユーザーのたわごとだったか。

結論「:wq は使うな」
2011/07/27(水) 10:37:26.04
そんなひっぱるほどの話か?
2011/07/27(水) 12:37:05.51
年寄りはやることないから会話に飢えてるんだよ。
2011/07/27(水) 12:42:40.42
>>837
始めから初心者に教える場合の話をしてただろ
2011/07/27(水) 16:07:04.51
>>821 の考え方だと、ファイルの内容を見ただけなのに :x で閉じてしまう。
2011/07/27(水) 16:14:00.30
>>841
それでOKだが。
>>821 には「保存の意思を持って」とちゃんと書いてある。

ファイルの内容を見ただけなのに :wq で閉じてはいけないという主張だよ。
2011/07/27(水) 16:27:37.32
>>842
いや見るだけなら保存の意思なんて無いじゃん。
保存の意思が無いなら :wq だって使うべきではないよ。
>>821 は上段と下段で前提が変わっちゃってるのよ。
2011/07/27(水) 16:38:00.76
>>843
前提は >>810 に対する反論で、:wq ではなく :x (原文はZZだが)を
教えろという主張

ファイル開いて時間が経って
多分編集はしてないはずだけどもしも編集していたら保存はしたい
でも編集してなければ無闇にファイルを触らないで欲しい
という状況は良くあることで
そういう時にいつも :x を使えということ
2011/07/27(水) 16:51:46.42
>>844
う〜ん…その状況だとまず :q じゃね?
:wq の利点は、そこから :q や :w に発展できることであって、理想はその :w や :q だと思うのよ

ZZ から教えてしまうと、ZZ 単体で学習が止まってしまって、発展しない
結果としてZZの常用になりがちになってしまう

でもZZは保存コマンドであって終了コマンドではないのよ、常用すべきじゃない(それは :wq も一緒)
:w や :q に辿り着けるようなものにすべきだと思うのが俺の主張かな
2011/07/27(水) 17:04:47.58
>>845
発展の方向が逆だよ。

:x のあと、:q や :w を(:wqよりも)先に教えるから。(:wqは教えないけど)
:wqを先に教えて :qと:wに発展? させることはない。

それに、:wqなんてコマンドが使えるなら、
:we file2 とかも使えるの? とか、横道にそれちゃう。

:wqコマンドはviの設計ミスだね。
2011/07/27(水) 19:41:42.85
>>846
:x → :q や :w は発展ではなく、完全に別のコマンド体系じゃん。
もちろん :wq だって別のコマンドではあるんだが、覚えやすい。
:we は試してみれば判る話だろ。
2011/07/27(水) 19:51:39.30
>>847
完全に別のコマンドというか、独立した別のコマンドを教えたいんだから
問題なし。なんで「発展」とやらにこだわるの?


>:wq だって別のコマンドではあるんだが、覚えやすい。
「覚えやすい」が理由かよw
ということは :wq の害悪性については認めたんだなw
2011/07/27(水) 21:10:29.44
>>848
害悪さで言えば :wq も ZZ も害悪だと思う。
2011/07/27(水) 23:16:26.01
俺も:wqの害悪の方が酷いと思う。
2011/07/28(木) 00:04:09.51
まだやってたの!
2011/07/28(木) 10:47:47.97
>>848
何度も書いたが、:wqやZZ、:xで落ち着いてはいけない。
でも:xやZZというコマンドを最初に説明してしまうと、それが常用のコマンドとの誤解を与え兼ねない。
:wqの場合「実は:wと:qってコマンドがあって、これが元になってるのだよ」っていう風に素直に進めるの。
2011/07/28(木) 10:50:38.88
もっと言えば、:wq、:x、ZZのいずれも教えてはならない、と思う。
ただ、あえて最初に挙げられた両者のどちらかと言うならば、:wqのほうが:wと:qにすんなりたどり着けるだろう、ということ。
2011/07/28(木) 11:24:53.43
:x は常用のコマンド。


ZZは入力がわかりにくいし、
:x file とか
:x! とかに相当する動作ができないので使わない。

繰り返すが、
:x は常用のコマンド。
2011/07/28(木) 12:06:10.44
:x file ねえ… :w file → :q じゃダメなのかい

:x だけ教えられた初心者は保存せずに終了したい場合や
現在のファイルに上書きした上で他のファイルにも書き込みたい場合はどうするんだ?

結局 :w や :q も教えなくちゃならなくなるじゃないか。
vi の基本操作だけでも手一杯の時期なんだから、覚えるコマンドは少なく、かつ汎用性のあるものが良い。
保存と終了がセットのコマンドは、それがセットの場合にしか使えない。
:w と :q をセットで教えるほうが、いくらでも応用が効くよ。
2011/07/28(木) 12:09:23.98
…ちょっと例えば悪いか。いずれにしろ :x は
保存と終了を兼ねるという用途でしか使えない。
それは確かによく使う組み合わせかも知れないが
それだけでは保存だけ、終了だけの場合に対応できない。

保存だけって操作はよく使うだろ?終了だけの操作もよく使う。
だったら、セットのコマンドなんて教えずに、両方を教えたほうが汎用的。
2011/07/28(木) 12:31:59.12
>>856
勘違いしてもらっては困るが、
俺は :x :q(!) :w を教えて :wq を教えるなという主張だよ。
「保存だけ(:w)、終了だけ(:q)」を教えないなんて言ってない。
2011/07/28(木) 12:34:32.11
>>853

:wq → :w :q って、この場合1例しか成り立たない特例だよ。

1例しかない特例に「発展」(笑)とかの妄想的意味づけするのはアホ。

:se ≠ :s :e
:vi ≠ :v :i
だし。

もちろん、:se :s :e :vi :v :i は実在するexコマンド。
2011/07/28(木) 12:58:36.49
>>858
そうか、んじゃ俺の最初の人に対する答えは「どっちもダメ」だな。

>>857
う〜ん、:x は何故教えるの?
2011/07/28(木) 13:14:30.53
>>859
>>821

話がループしてきたね。
2011/07/28(木) 13:35:42.01
そろそろサマリを。
2011/07/28(木) 13:42:03.51
>>860
それじゃなくて、:w と :q と :q! を教えれば充分なのに
それに加えて :x を教えるべきというのはどうして?という話。
2011/07/28(木) 14:01:30.84
>>862
例えば複数のソースファイルを複数のxterm上で別々にviで開いて
複数ファイルに跨って編集して、そのすべてを終了する場面。
本人は全体を編集したつもりでも個別の一部のファイルは
編集されていないものもある。そんな時、:x で終了すれば
タイムスタンプの更新が最小限に抑えられ
その後の makeも合理的になる。
2011/07/28(木) 14:45:16.66
>>863
ああ、今まで全く理解に苦しんでたが、それで貴方の主張が飲み込めた。
要はシステム管理・設定ファイルの編集とかでなく、開発用のエディタとしての本格的利用を前提にしてるのね。

…ただ、複数編集や make のためのタイムスタンプって、既に俺の前提では応用の域なんよね。
編集したつもりなのだから、更新されても make の時間的都合だけで実害はないかと。

もちろん開発用に本格的に使うなら覚えて欲しいが、それは応用操作であって
vi をとりあえず使えるようになるための基礎としては
:x も :wq も不用意な保存を招く、むしろ害悪なコマンドだと思うの。
2011/07/28(木) 16:05:27.63
>>862
:wは必ず書き込んでタイムスタンプ変更してしまう。
:xは必要だから、かなり初期に作られたコマンド。
2011/07/28(木) 16:06:35.82
>>864
:xに害はなく、むしろ:wに害がある。
2011/07/28(木) 17:58:54.80
>>866
つまり、保存するときは逐次終了するのが良いと?
2011/07/28(木) 18:12:55.06
>>867
それはまた別の話だ。


別の話をするなら、「終了しない:x」みたいなコマンドが欲しい。
今は、Ctrl-Gで編集の有無を確認して、編集有りの場合のみ :w する、
ということをしてる。
2011/07/28(木) 18:23:17.46
:w!があるんだから、:wは必要な時だけ書きこむことになっていればよかった。
2011/07/28(木) 18:26:17.05
その辺はedスクリプトとの互換性の問題があるから変えられなかったと思われ
edは「qして書き込んでないよって言われたら書きこめば?」って考えだと思われ
2011/07/28(木) 20:19:52.32
>>868
全部:qで閉じれば良くね?
編集したときに:wしてたら、それで閉じれないファイルって保存し忘れたファイルだけでしょ
2011/07/28(木) 20:24:56.19
>>868の言っているのは編集途中の保存でしょ。
さすがにそこまでタイムスタンプ保存にこだわることはないと思うが。
2011/07/28(木) 20:30:44.00
編集途中なら編集したかどうかって数秒前の話だと思うのだけど…
2011/07/28(木) 20:51:01.88
>>873
いいや。

>>863 の言うように複数のファイルを複数のviで同時に編集していたら、
そのうちのどれを実際に編集たかは自明ではなくなる。
2011/07/28(木) 21:22:58.79
>>874
ってことは、貴方と俺では保存のタイミングが相当に違いそうだなあ
2011/07/29(金) 00:06:03.49
ここの奴らなら目玉焼きの調味料で3スレ余裕だな
2011/07/29(金) 11:02:04.72
Emacs使いが小さなファイルならviのほうがええか、と思って何日かかけてこのスレ見てたら
いきなり伸びててタワラ。
上のほうで何度もタブー視されてるが、とりあえずvim使っときゃいいんだよな?とは言ってもvimインストールした時に20MBぐらい使ったのはうぇえ?って思ったが。
オリジナルのvi使う理由ってやっぱ軽いから?nviも入れてみて違いを体感できるような感じではなかったのでとりあえず考えるのもだるいのでvim使うと思うけど。
2011/07/29(金) 11:10:48.65
何言ってんの?
2011/07/29(金) 17:21:08.56
>>877
最初から入ってるのを使えばよろし
最近はnanoしか入ってないのとかも確かにあるが
大概はnviかvim-tinyかオリジナルか独自版のviが入ってると思われ
2011/07/29(金) 20:40:19.77
基本のviをマスターしておけば、どこのunixに行っても生きていける。
2011/07/30(土) 12:54:53.75
ありがとう、名言だな。
2011/07/30(土) 15:51:23.46
その基本のviについて質問です

カーソル位置から、次の単語の直前までを大文字化、もしくは小文字化する操作ってありますか?
vimやelvisなら v移動コマンド~ や g~移動コマンド で出来るようなのですが
nvi ではどちらも通用しなかったので、vi 全体で通用する方法はあるのかな、と疑問に思ったのです
字数数えて 数字~ ってするしかないですかね…?
2011/07/30(土) 16:12:25.00
tr,sed,perlとかではだめなの?
2011/07/30(土) 16:18:49.91
わからないなら黙ってろ
2011/07/30(土) 16:20:21.92
>>883
一括処理をしたいワケではなくて、編集中にやりたいんですよね
2011/07/30(土) 16:23:49.21
~ の一般化された方式である置換が r / R / s / S / c / C と分化している事を考えると難しそうね
2011/07/31(日) 11:19:42.40
>>882
大文字と小文字を入れ替えるだけでいいなら set tildeop して ~w。
2011/07/31(日) 11:49:24.97
>>887
nviやvimならse tildeopでいいんだが、
無印viではse tildeopも使えない。
2011/07/31(日) 20:33:14.87
vi 共通となると難しそうですね…とは言え
tildeop は知らなかったので有難いです
2011/08/26(金) 11:19:31.00
:x
2012/01/18(水) 06:17:09.44
>>3,4修正
viソースコード
http://ex-vi.sourceforge.net/

質問
上記viでインサートモードでの^HとBSが共に効きません

$HOME/.exrcには

remap ^? ^H
remap! ^? ^H

とやってるんですがこれじゃダメなんでしょうか?
(^? ^H はコントロールコードです)
2012/01/18(水) 06:57:22.86
stty erase '^h'
2012/01/18(水) 08:57:49.84
>>892
bash
ash
で試しましたが消せません
何でだろう
BusyBox の vi だと消せるのに…… orz
2012/02/15(水) 01:55:20.22
viってCRLFのCRを一括で消すことはできても
新たに一括でCRを入れる方法は無いですよね?
2012/02/15(水) 08:55:14.10
何分考えてそう思ったん?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況