vi 2nd

■ このスレッドは過去ログ倉庫に格納されています
1名無しさん@お腹いっぱい。
垢版 |
NGNG
vi原理主義者の集い 2nd。
歴代スレは>>2。関連スレ・サイトは>>3
2011/04/24(日) 23:12:24.73
Macのターミナル上のvimについてなんですが挿入モードのときカーソルを細い縦線にすることはできないのですか?
常にカーソルが1文字分の幅があって右左どちらに挿入されるのかわかりにくいです…
2011/04/24(日) 23:20:43.53
>>766
ターミナルの環境設定で変えられるよ
2011/04/25(月) 00:40:49.93
>>767
MacVimみたいに挿入モードと通常モードで切り替わるようにできないでしょうか?
2011/04/25(月) 02:42:48.03
>>765
誰かのメールシグ姉ちゃんに有ったけど、
「それはptyの仕業なんだよ」

ESC+キー入力、なのかエスケープシーケンスなのか、HP-UXのpty越し
には区別付かない。他にも色々問題有ったような。
リモートログインせずに、直接HP9000のコンソールで作業するか、
HP9000なんて窓から投げ捨ててLinux PCに移行しろ。
770名無しさん@お腹いっぱい。
垢版 |
2011/05/02(月) 22:16:28.79
ファイルをエディットしていざセーブしようとしたら
パーミッションがないとかでエラーになってセーブできません
慌てて隣のPCからtelnetしてファイルをプロンプトでchmodしたのですが
それでもセーブでエラーが出て書き込めません
1時間以上の作業がパー??
数行ずつマウスでコピペして文字救出しかないですか?
2011/05/02(月) 22:20:13.86
:w foo
2011/05/02(月) 22:49:13.77
>>771
それやってみましたがセーブできません
2011/05/02(月) 23:07:14.38
>>772
:w /var/tmp/foo とか :w /tmp/foo とか :w ~/foo とか
2011/05/02(月) 23:40:35.67
FSをroでマウントしてんじゃねぇのかい?
2011/05/03(火) 06:10:53.37
>>773
パスで指定してみましたがセーブできません
2011/05/03(火) 07:52:23.90
>>775
分かってると思うけど、書き込めるところに退避しろってことだよ
2011/05/03(火) 08:08:14.08
>>776
chmod +w したので書き込めるファイルです。

>>774
マウントは問題ないはずです。chmod +w はできたので。

でもセーブできません><
2011/05/03(火) 09:34:55.32
あんた馬鹿ぁ?

viを起動する時点で書込めなかったら、viはずっと書込み不可って憶え続ける。
だから、
:w! 別名
ってしなきゃならない。ってかchmod +wしたのなら、
:w!
だけで書き込めなイカ?


もしくはCVSで正しくcoできてないとか、誰か(たいてい自分自身)と共有open
してしまってるとか。
2011/05/03(火) 10:32:45.25
:set noreadonly
で読み込み専用フラグを落としてから
:w
とか
2011/05/03(火) 11:26:16.10
>>779
できましたあぁぁ!!!感謝!!!!!

他のハズレ回答の知ったかさん乙です(笑)
2011/05/03(火) 11:45:17.54
ウチの vim ちゃんは chmod 444 したファイルは :w /tmp/foo で保存出来るし、
:w! すれば書き込めるわ。しかも :w だけだとちゃんと "E45: 'readonly' option is
set (add ! to override)" って知らせてくれる。

素の vi だと違うのかな?
2011/05/03(火) 19:01:42.25
>>780
他人を笑う前に、自分の勉強不足を恥じろ。
お前の泣き言はすべてマニュアル読めば解決する話。
Read onlyのファイルで泣きべそかいて2ちゃんで厨質とか小学生でもしないぞ。










ああGW真っ最中だったかw
2011/05/03(火) 20:47:52.99
連休も休日出勤、乙でありますwww
2011/05/03(火) 22:05:48.39
viでhtmlを書きだしたんですが改行を消す方法が解りません。

<html>
<head>
これを
<html><head>
にしたいんですけど<html>_ ←ここでDELでもダメ
ここでBSでもCtrl+Hでもダメ→ _<head>
上記の '_' はカーソル位置です

viはbusyboxです
よろしくお願いします
2011/05/03(火) 22:09:30.90
>>784
shift+j => x
2011/05/03(火) 22:11:58.39
>>785
速い回答ありがとうございます
shift+jして空白が入ったところをxで出来ました
半角空白が一個入るんですね
2011/05/04(水) 12:28:59.76
>>786
gJでいけない?あれvimだけだっけ。
2011/05/04(水) 12:30:11.39
>>770
cmap w!! %!sudo tee > /dev/null %
2011/05/04(水) 13:53:45.81
しかしshift+jしたときにスペースを入れることの価値が
未だに分からん
2011/05/04(水) 14:32:01.17
これなかったら、CとかPerlみたいに文末記号があるソース編集するとき困る。
2011/05/04(水) 16:11:20.68
>>789
おまえ、英語の文章書いたことないだろw


スペース入れたくなきゃ、:j! な。(常識)
2011/05/04(水) 19:04:04.68
>>791
意味分からんかったが、もしかして手動で改行入れてるタイプなの?
2011/05/05(木) 08:17:01.85
電子計算機ばっか使ってないで、たまにはタイプライタに戻ってみな。
2011/05/06(金) 21:24:46.77
ウホ!9年物なスレか〜
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に害がある。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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