トップページunix
988コメント268KB

Vim Part21

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2012/07/16(月) 01:09:05.70
Vim 6以降に関する話題、Part21です。
http://www.vim.org/

前スレ
Vim Part20
http://toro.2ch.net/test/read.cgi/unix/1322212163/

関連情報は>>2-6あたり。
0021名無しさん@お腹いっぱい。2012/08/12(日) 18:53:21.32
>>20
おっしゃるとおりどうも上書きされててたっぽいです
vimrcで
color hogehoge
したあとに変更するぶんだけ追加してるんですが
Normal ctermbgだけhogehogeの設定になってしまいます(他は変更されてる)
なんか面倒なんでhogehogeの内容をそのままvimrcにコピーしました
0022名無しさん@お腹いっぱい。2012/08/13(月) 07:03:40.39
検索を済ませたあと
もうハイライトしなくていいよって時
滅茶苦茶な入力を検索させてわざと検索失敗させることでハイライトを消してるんですが
正統にはどうすべきですか?
0023名無しさん@お腹いっぱい。2012/08/13(月) 07:20:48.67
:nohl
<Esc><Esc>とかにマッピングするのが定番…だと思う
0024名無しさん@お腹いっぱい。2012/08/13(月) 09:18:36.09
>>23
あり^^
0025名無しさん@お腹いっぱい。2012/08/13(月) 12:52:02.29
検索関連で便乗質問

1.visualで選択状態にある語句をそのまま検索ワードに入れるのってどうすれば良いの?

2.似てるというか同じ事かもしれんが
ヤンク・コピーしたものを検索ワードや置換語句としてコマンドの中に貼り付けるのってどうすれば良いの?
0026名無しさん@お腹いっぱい。2012/08/13(月) 13:15:44.44
C-rC-w
0027名無しさん@お腹いっぱい。2012/08/13(月) 13:44:34.26
いや2はC-r"だったか
>>26はカーソルの下の単語を貼り付け
1はわからん
0028名無しさん@お腹いっぱい。2012/08/13(月) 14:00:40.91
素なら、yした後で/c-r0 かな?
今はstarrangeっていうプラグイン使ってるけど
0029名無しさん@お腹いっぱい。2012/08/13(月) 19:33:10.79
1はvisualstar.vimを使うという手もある
0030名無しさん@お腹いっぱい。2012/08/14(火) 03:30:06.58
xnoremap * "py:let @/ = @p<CR>nzv

拾って使わせてもらってる奴。s/p/好きなレジスタ/g
0031302012/08/14(火) 03:54:42.31
ああごめん。引用元は多分fudistさんだったかな、念のため。
0032名無しさん@お腹いっぱい。2012/08/16(木) 14:59:16.14
コマンドラインのパイプみたいに、あるコマンド結果に更にコマンドを実行することは可能でしょうか?

例えば、gコマンドで対象行を絞って、その対象にsコマンドで置換を掛けるなど
0033名無しさん@お腹いっぱい。2012/08/16(木) 15:18:07.86
>>32
:g/hoge/s/hage/hige/

とかできるけど? これのこと?
0034名無しさん@お腹いっぱい。2012/08/16(木) 15:21:02.02
>>32
%sで対象行及び対象自体絞れる気がするけど…
0035名無しさん@お腹いっぱい。2012/08/16(木) 15:30:42.87
>>33
できました!

ありがとうございます。
0036名無しさん@お腹いっぱい。2012/08/16(木) 15:37:44.97
>>32
素直にshellを使うよろし。

:%! grep 'hoge' | sed 's/hage/hige/'
0037名無しさん@お腹いっぱい。2012/08/16(木) 15:41:54.42
>>36
それじゃ、hogeが含まれてない行が全部消えちゃうだろw

>>34
範囲指定なら sだけでもいけるけど、/hoge/マッチ複数行が対象だと g 併用必要。
0038名無しさん@お腹いっぱい。2012/08/16(木) 16:13:27.80
>>37
> 範囲指定なら sだけでもいけるけど、/hoge/マッチ複数行が対象だと g 併用必要。複数行にまたがるならhogeで複数行選択しちゃったら良いんじゃない?
検索結果の複数行にあてるなら/gつければいいだけだし
0039名無しさん@お腹いっぱい。2012/08/16(木) 16:21:06.43
>>38
そういう意味じゃないよ。
/hoge/ が含まれる行が「飛び飛びに」2行以上ある場合。

:/hoge/s/hage/hige/

では、最初の/hoge/の行しか変換されない。

:g/hoge/s/hage/hige/

でやっと目的通り。

まあ、テストファイルで試してみろ。
0040名無しさん@お腹いっぱい。2012/08/16(木) 16:29:13.51
>>39 に補足すると、
たとえ、
:/hoge/s/hage/hige/g
ってやってもダメ。
これは、最初の/hoge/の行1行内の複数のhageをhigeに変換するだけ。

よって、>>38 に書いてる「/gつければいいだけ」は間違い。

>>39 が正解。
0041名無しさん@お腹いっぱい。2012/08/16(木) 16:31:46.43
>>39
ん?
:/hoge/s/hage/hige/
じゃなくて:%s使った場合ね
:/hoge/s/hage/hige/
でも
/gに関しては%s表記でも:/hoge/s/hage/hige/gでも
最後に/gでもいいじゃないってこと
0042名無しさん@お腹いっぱい。2012/08/16(木) 16:35:22.63
>>41
%s/hage/hige/
ってこと?

%s じゃ、全行対象だから全然駄目じゃん。何がしたいの?

/hoge/が含まれてる行だけのhageをhigeに変換だよ。
0043名無しさん@お腹いっぱい。2012/08/16(木) 16:48:23.42
hogeとかhageとかわかりにくいなぁ

vi の :%s/BBB/CCC/ → sed s/BBB/CCC/ に相当 → NG

vi の :g/AAA/s/BBB/CCC/ → sed /AAA/s/BBB/CCC/ に相当 → OK

ってことでしょ。
0044名無しさん@お腹いっぱい。2012/08/16(木) 16:53:44.68
いや、スマン
正規表現使ってhogeが含まれる行内で前後方一致で特定部位を置き換え出来るでしょと言いたかったがvimでは無理だった
0045名無しさん@お腹いっぱい。2012/08/16(木) 18:07:45.22
まー正規表現も挙動も含め全てのプログラムで標準化してもらいたいところ
0046名無しさん@お腹いっぱい。2012/08/16(木) 19:10:21.46
そのときは是非vimは例外にしてもらいたいがね
0047名無しさん@お腹いっぱい。2012/08/16(木) 19:21:41.57
:%s/.*hoge\&.\{-}hage/hige/g
0048名無しさん@お腹いっぱい。2012/08/16(木) 19:22:26.57
みすった
:%s/.*hoge\&.\{-}\zshage/hige/g
0049名無しさん@お腹いっぱい。2012/08/16(木) 19:37:25.13
>>46
例外が横行すると正規の意味ないし
0050名無しさん@お腹いっぱい。2012/08/16(木) 19:43:17.05
POSIX...
0051名無しさん@お腹いっぱい。2012/08/16(木) 19:44:21.02
「正規表現」を名乗るのに拡張的な正規以外と捉えられる表現は正規表現ではない、という問題
実際自分もどこまでが標準的な正規表現なのかはわからない…
この辺はperl使いの人が詳しそうと思っている
0052名無しさん@お腹いっぱい。2012/08/16(木) 19:46:21.12
Vimにケチ付けたい点の一つ正規表現
0053名無しさん@お腹いっぱい。2012/08/16(木) 19:50:46.78
プログラムによって使える正規表現があったりなかったりは面倒
0054名無しさん@お腹いっぱい。2012/08/16(木) 19:55:20.44
>>48
んー、うまくいかなかった
----
hoge hage hige
----
とか可変させて複数行書いて試してみたけどPattern not foundになってしまう
0055名無しさん@お腹いっぱい。2012/08/16(木) 20:04:24.40
結構Vimの正規表現好きだけどなー
0056名無しさん@お腹いっぱい。2012/08/16(木) 20:06:20.34
珍しくスレ伸びてると思ったら正規表現の話か… 

>>51
正規なのに標準を気にする辺り終わってる気がしないでもないが仕方ない
社内の規約など深く考えないことが精神的には重要なんだ、対決し出すと死んじゃう
0057名無しさん@お腹いっぱい。2012/08/16(木) 20:47:03.22
Vi使いってカオスだしカオスであることに誇り持ってるよね
ソースはオレ
0058名無しさん@お腹いっぱい。2012/08/16(木) 21:14:37.10
viの人はサーバとか少なからずサーバの挙動とかちゃんと知ってて話が通じる
個人的にはね

emacs使いはセキュリティ知識皆無もいいとこでよくも偉そうにして語ってんね、ってぐらいひどいのでemacs使い=頭がおかしいという偏見がある

0059名無しさん@お腹いっぱい。2012/08/16(木) 21:21:38.86
emacsじゃなくてプログラム専門のJavaとかphp辺りの人ののような…
0060名無しさん@お腹いっぱい。2012/08/16(木) 23:29:12.67
emacsは糞
0061名無しさん@お腹いっぱい。2012/08/17(金) 09:38:47.95
流石にvimスレでemacsマンセーする奴はいないか…

だがそれでも敢えて言いたい
Vi(m)とEmacsの併用が無敵だと?
0062名無しさん@お腹いっぱい。2012/08/17(金) 18:43:15.56
俺の中ではEmacsはエディタと言うよりIDEだな
なので用途が違うワケで併用は何ら不思議じゃない…と言うか
何故GIMPとInkscapeで優劣付けるようなことしたがるんだ???と思う
0063名無しさん@お腹いっぱい。2012/08/17(金) 19:49:00.72
併用ってのがランタイム以下が自分で把握できるレベル以上に
vimscriptとelispが使えるって意味ならあまりに要領悪いというか・・・
0064名無しさん@お腹いっぱい。2012/08/18(土) 01:50:58.31
まあEmacs=IDEと思ってる俺も、いわゆるEmacs小指を経験してからほとんど使ってないんだけどな
0065名無しさん@お腹いっぱい。2012/08/18(土) 01:53:20.86
EmacsをVimのキーバインドに変更できれば・・・
0066名無しさん@お腹いっぱい。2012/08/18(土) 02:21:08.11
terapadとか普通のエディタより、操作が難しいvimを覚えた方が良いですか?
0067名無しさん@お腹いっぱい。2012/08/18(土) 02:50:03.35
>>66
いいです。と言いたいところだけど今使ってるので不自由してないならいんじゃない。
私は、強力な正規表現が使えるからVimを使い始めました
0068名無しさん@お腹いっぱい。2012/08/18(土) 13:14:50.10
>>66
UNIX系の環境を何種類か扱うなら覚えて損はない
特にサーバ管理者とかやるならvimに限らずnvi辺りも含めてになる
MacOSXなんかでもデフォで入ってるエディタとしては高機能
WindowsでもコマンドプロンプトやCygwinなどを頻繁に使うなら
コマンドプロンプト上で出来ることが増えて便利かもね

だが、WindowsオンリーでGUI作業がメインでエディタ間に合ってます
…なんて人だと覚えるの途中でやめちゃうかもね
h,j,k,l,i,a,x,:w,:q覚えて終わりみたいな
0069名無しさん@お腹いっぱい。2012/08/18(土) 15:51:44.91
>>65
hjkl-mode/hjkl-mode.el at master · ainame/hjkl-mode · GitHub
https://github.com/ainame/hjkl-mode/blob/master/hjkl-mode.el
>hjkl-mode is a minor-mode on emacs. It provides vim keybindings for moving cursor.
0070名無しさん@お腹いっぱい。2012/08/18(土) 16:01:06.49
>>66
WindowsのVC++から入ったプログラマだけど
Vimはほんと素晴らしいと思う
動作が軽くて扱いやすくて
キーボードだけで済むから
覚えてしまうとWin上でもjjjjjjとかやっちゃうwww
Emacsも良いらしいけどサーバーによっては入ってなかったり
客の環境だったり、社内規則だったり
状況によっては入れられなかったりする
(自分は結局これが障害になってEmacs覚え損ねた)
その点Vi、Vimはどんなサーバーにも必ず入ってる点が強い


個人的にはscreenも標準インストールになってくれると嬉しいんだが…
0071名無しさん@お腹いっぱい。2012/08/18(土) 17:12:05.17
>>70
ある環境で標準的なインストール先になかったことがあった
/usr/binでも/usr/local/binでなくて
後になって誰かが変なところにインストールしてみたいで
/usr 以下に変なディレクトリが20個以上あってそのどれかに入ってたらしい
結局最後になるまで気付けず,edを使ってた
0072名無しさん@お腹いっぱい。2012/08/18(土) 19:26:11.86
ttp://cpplover.blogspot.jp/2012/08/vim-vs-emacs.html
なんか宗教戦争起こすのってどっちも精通してなさそうな人だよね
0073名無しさん@お腹いっぱい。2012/08/18(土) 20:10:10.46
両方精通してる人なんてそんなにいないよな
実際は先に覚えた方を理由つけて応援してるだけな気がする

あと両方精通してる怪人はEmacsの良い機能をすかさず
移植してくれる可能性があるので崇め奉ること!
0074名無しさん@お腹いっぱい。2012/08/18(土) 20:30:22.49
Emacs禁止とか今でも有るもんなんかね
あんまりよく知らんけど
0075名無しさん@お腹いっぱい。2012/08/18(土) 20:53:12.89
>>74
禁止というよりデフォルトでは入っていなくて
ソフトウェアの追加ができないとなっているところは結構ある.
0076名無しさん@お腹いっぱい。2012/08/18(土) 22:51:13.25
「Emacs はいろいろ使えて便利だよ」というが、容量の問題があった。
インターネットが一般に広がったときでも、ナローバンドで落とすのが大変だった。
最初の Java の JDK と同じぐらい大きかった。
だからやっぱりEmacsは開発環境なんだと思ったよ。
0077名無しさん@お腹いっぱい。2012/08/18(土) 23:25:34.28
Emacsの話はもういいよ。
0078名無しさん@お腹いっぱい。2012/08/18(土) 23:28:26.73
VimスレなのにEmacsの話ばっかしやがって
0079名無しさん@お腹いっぱい。2012/08/19(日) 01:56:33.07
>>73
Emacsのが先に覚えたけど小指痛めてからvi応援するように
つーても小指以外では不満なかったから悪く言うつもりもないな
0080名無しさん@お腹いっぱい。2012/08/19(日) 03:21:16.36
>>67、68、70
ありがとうございます。
vimを使ってみようと思います。
0081名無しさん@お腹いっぱい。2012/08/19(日) 07:29:08.49
>>67
でもVimの正規表現って方言キツいよね
0082名無しさん@お腹いっぱい。2012/08/20(月) 03:00:24.02
正規表現なんてどこも独自の拡張しまくってるじゃないですかー。
0083名無しさん@お腹いっぱい。2012/08/20(月) 03:07:36.04
GNU grepなら \< と \> 使えるじゃないですかー
0084名無しさん@お腹いっぱい。2012/08/20(月) 03:14:21.17
>>71
which vimしなかったの?
0085名無しさん@お腹いっぱい。2012/08/20(月) 03:35:48.52
パス通ってたらwhichする以前にvim起動するじゃん
0086名無しさん@お腹いっぱい。2012/08/20(月) 06:43:44.80
which(笑)
0087712012/08/20(月) 13:35:47.30
>>84
管理者が要望のたびにソフトを追加してるだけで
パスの設定には何も追加してなかった.
0088名無しさん@お腹いっぱい。2012/08/20(月) 16:43:53.55
vimを使い始めたんだけど、ノーマルモードへのESCのキーバインドって
どうしてますか?普通にESCを押すのはちょっと遠いし、ctrl+[を使うとなると
Emacsと差別化出来ない(小指的な意味で)と思ったんだけど、どんなキーにしてますか?

あと、行末とか行頭に移動して入力するっていう操作はEmacsよりステップが多くなるものなのかな?
Emacsは ctrl + A or E で済むけど、
Vimは ESC→^ or $ → i or a(挿入)って感じになりません?
0089名無しさん@お腹いっぱい。2012/08/20(月) 16:54:40.38
Escapeは無変換に割り当ててる。
行頭行末に挿入はIとA
プロはInsertモードはほとんど使わないから実はEscape押す必要ないらしい。
0090名無しさん@お腹いっぱい。2012/08/20(月) 16:59:04.41
挿入モードから抜けられない俺は<C-o>を常用してる
0091名無しさん@お腹いっぱい。2012/08/20(月) 17:21:38.91
Happy Hacking使ってる人いわく「Ctrl-[は別に押しにくくない」らしい
0092名無しさん@お腹いっぱい。2012/08/20(月) 17:35:58.36
前は小指の付け根の骨で押してたな
今hhkだけど前の方が早かった気がする
0093名無しさん@お腹いっぱい。2012/08/20(月) 19:11:46.41
HHKだとESC自体が遠くない
0094名無しさん@お腹いっぱい。2012/08/20(月) 19:35:28.83
Ctrl + [ を押しにくい人がいる
を知ってびっくりした
0095名無しさん@お腹いっぱい。2012/08/20(月) 19:52:25.44
>>89
Insertモード使わんでどうやって入力すんの?
0096名無しさん@お腹いっぱい。2012/08/20(月) 22:36:09.92
emacsは作者がパスワード要らんという人だし。
セキュリティなんざ糞食らえだぜ。
0097名無しさん@お腹いっぱい。2012/08/20(月) 22:44:38.75
>>88
vimだってctrlの使用頻度は高いよ。
でもノーマルモードの便利なコマンドが指に馴染めば
emacsと意識して差別化する必要も感じなくなると思う。
他人のスタイルにケチ付けるわけじゃないけど
もしインサートモードで単語ジャンプなんてマッピングしてたらすぐにやめた方がいい。
それからキーボードがアスキー配列じゃないようなら替えるのを勧める
0098名無しさん@お腹いっぱい。2012/08/20(月) 22:58:38.60
>>88
俺は右Altだな
j連打で抜けるようにしている人もいるらしいけど
0099名無しさん@お腹いっぱい。2012/08/20(月) 23:10:35.99
>>97
ctrl+[をそのまま使う感じなんすかね〜
インサートモードでマッピングっていうのは、ctrl+Aで行頭に飛んで〜っていうのですか?
便利そうだから導入しようかと思ったんですが、そんな風に使うもんじゃないんですかね
アスキー配列っていうのはUSキーボードのことですか?
当方USキーですが、VimにはJISの方が向いてるのかなと感じています。
コロンがシフト無しで使えたり・・・
0100名無しさん@お腹いっぱい。2012/08/20(月) 23:12:53.08
>>88
Insert -> Normalは、俺は特にマッピングしてない。Esc遠いなら、他の人が言うようにjjとかkkとかにマッピングしたらおけ。
Insertモードで行頭、行末は、素の状態なら<Esc>Iか<Esc>A。それか、<C-o>^。
Emacsと同じにしたければ、inoremap <C-a> <Esc>I などすればおけ
0101名無しさん@お腹いっぱい。2012/08/20(月) 23:14:43.72
>>99
コロンはus配列でも
nnoremap ; :
nnoremap : ;
ってしとけば楽だよ
0102名無しさん@お腹いっぱい。2012/08/21(火) 01:43:17.79
>>99
原理主義みたいな事が言いたいわけじゃなくて、インサートモードで
キーを連打して移動するのが合理的じゃないっていうだけの事なんです笑
アスキー配列を勧めたのはctrl-[が近い以上の理由はないけど
何か挙げるならノーマルモードの[プリフィックスのコマンドは便利なのが多いとか。
でもまぁこんなものは代わりに別のキーが遠くなってるだけなので好みの問題かな
0103名無しさん@お腹いっぱい。2012/08/21(火) 02:02:43.84
>>99
お客さんのサーバで設定ファイルいじれないとかじゃなければ、自分の好みにマッピングしてしまえばok
やりすぎると素のVimを使わざるを得ない時に発狂しそうになるけど…
ascii配列は、'と"がほぼホームポジションてのがいい
0104名無しさん@お腹いっぱい。2012/08/21(火) 02:51:15.26
>>101
話は違うけど、今一歩理由が分からないんだけど、
このよく見るマップ、トラブルがあるらしいんで、ずっとためらっている。
なんか実際のトラブル例があれば教えて。

http://stevelosh.com/blog/2010/09/coming-home-to-vim/
>I don’t remap : back to ; because it seems to break a bunch of plugins.
0105名無しさん@お腹いっぱい。2012/08/21(火) 04:46:30.25
>>104
壊れているのは、そのプラグインの製作者の頭
nnoremap hoge : と書くべきところを nmap hoge : とすると : にどこかでマッピングが定義
されている場合、不具合が生じる。本当はvimのhelpのそうなっているところを修正しなけ
ればならないが言い出しっぺの法則で誰もvim_devで言及しない。
0106名無しさん@お腹いっぱい。2012/08/21(火) 05:06:30.35
VimのおかげでUNIX/Linuxの文化好きになったお!
プログラミングの楽しさが増えたお!
VisualStudioでも使える様にして欲しいお!

もう一生VimでC/C++,VC++,C#,Pythonだけ書いていたいお

キーボードを使う世の中の全ての環境がVimのキーバインドになって欲しいお!
hjklで上下左右に動いてggでトップに行って、Gで最後に行ってってなって欲しいお!
0107名無しさん@お腹いっぱい。2012/08/21(火) 05:24:05.58
全部のtextboxがいちいちiを押さないとinsertモードにならない世の中なんてイヤだ。
0108名無しさん@お腹いっぱい。2012/08/21(火) 13:04:54.72
Lynxとか
0109名無しさん@お腹いっぱい。2012/08/21(火) 18:32:21.27
vim使いはHHKとリアフォどっちが多いのだろうか
0110名無しさん@お腹いっぱい。2012/08/21(火) 18:37:31.61
1300円で買ったBUFFALO製の日本語109キーボード
0111名無しさん@お腹いっぱい。2012/08/21(火) 18:59:28.31
最初からついてるやつ
0112名無しさん@お腹いっぱい。2012/08/21(火) 19:01:23.14
>>104
行儀が悪いプラグインだと影響ありそう。
俺はそのマッピングしてないけど、影響あるのってnormalしてるところだけじゃないんかね。
他何があるのかわからんわー。
0113名無しさん@お腹いっぱい。2012/08/21(火) 19:28:23.66
>>109
86Uと87UB。右Ctrlいるでしょ
0114名無しさん@お腹いっぱい。2012/08/21(火) 20:26:44.78
HHK派だな
もうリアフォすらでかくて邪魔
0115名無しさん@お腹いっぱい。2012/08/22(水) 00:15:32.13
リアフォも持ってるがHHKメインで8年目突入
和田先生がEmacs派でLisp使いでも
キーボードというインターフェイスは使い慣れた馬の鞍の様に変えないもの
必要な機能だけに絞るがキーボード本来の打ちやすさは失わない
という思想に共感

静電容量式のしっとりした打ち心地にハマったのも大きいかな
まさか一生使い続けると誓ったIBMのモデルMから乗り換える程気持ちいいとは思わなかった
0116名無しさん@お腹いっぱい。2012/08/22(水) 00:42:15.39
Appleのキーボード使ってるや…日本語キーボードだけどctrlがAの隣なので
0117名無しさん@お腹いっぱい。2012/08/22(水) 01:15:35.41
CTRL A S D の配列はイラついたw
0118名無しさん@お腹いっぱい。2012/08/22(水) 01:34:30.94
むしろ昔はその配置のキーボード結構あったんだよ
最近は少なくなったなあと思う
0119名無しさん@お腹いっぱい。2012/08/22(水) 01:38:01.10
俺の周囲はみんなCtrlとCaps Lock入れ替えて使うのが当たり前になってるな。
入れ替えてないのは俺だけ。
0120名無しさん@お腹いっぱい。2012/08/22(水) 01:45:32.91
VimユーザはAの横Ctrlにしてると思ってたけどそうでもないのかね
■ このスレッドは過去ログ倉庫に格納されています