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

Vim Part22

■ このスレッドは過去ログ倉庫に格納されています
0001ほらよ2013/04/04(木) 19:32:22.37
Vim 6以降に関する話題、Part22です。
http://www.vim.org/

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

関連情報は>>2-6あたり。
0131名無しさん@お腹いっぱい。2013/06/02(日) 21:11:11.14
せやな
0132名無しさん@お腹いっぱい。2013/06/03(月) 22:01:48.10
すんません、HMLって何の事ですか?
0133名無しさん@お腹いっぱい。2013/06/03(月) 22:16:51.48
shift-h
shift-m
shift-l
0134名無しさん@お腹いっぱい。2013/06/03(月) 22:30:56.35
あ、了解です。
0135名無しさん@お腹いっぱい。2013/06/04(火) 00:59:07.75
>>121
accelerated-jkっていう押しっぱなしでj k移動が高速になるプラグインがあるんだが、
それを参考にhやlにも応用すれば、あるいは希望通りの動作になるのでは
0136名無しさん@お腹いっぱい。2013/06/13(木) 12:56:04.66
>>121
vimじゃなくキーリピートの設定を変えるとはやくなるよ。
以前hjklをバカみたいに速くしてたけど、
思い通りのところに止まらないトラブルなど頻出したので普通に使ってる。

板違いだけど、このソフト設定が分かりやすい
http://www.forest.impress.co.jp/article/2000/06/23/kbdacc.html
0137名無しさん@お腹いっぱい。2013/06/15(土) 13:48:45.70
そういえば最近速くしたなあ。
元々 repeat で正確に止めるのは無理があるんで(結構遅くしないと)
その辺はあまり気にしない。
vim の話じゃないけど。まあ関係はするし、いいかな。
0138名無しさん@お腹いっぱい。2013/06/15(土) 21:41:41.66
なんかあれだな Unix 文化の大衆化に伴う現象だとはいえ
おまえらが無理して vi 系エディタを使う意味はないと思うよ
キーリピートの遅い端末上でも速いカーソル移動を実現する目的で
豊富なキーアサインを用意するというのが vi 系の考え方なんだから
おまえらには gedit っていうもっといいのを勧めるよ
0139名無しさん@お腹いっぱい。2013/06/15(土) 21:46:31.24
おにいさん、今の針のトレンドはSublime Textとかですぜ
0140名無しさん@お腹いっぱい。2013/06/16(日) 19:26:39.14
>>138
あんたにとってはキーリピートが利くならgeditの方がいいわけね。
俺にとっては他にもvimの利点があるんで簡単に乗り換えられないんだが。
0141名無しさん@お腹いっぱい。2013/06/16(日) 19:34:56.72
>>138
端末が遅いゆえに数えるほうが速かった時代の話をされましても。
というか、その思想を大事にするってことは色もハイライトも範囲選択もつかわないの?
0142名無しさん@お腹いっぱい。2013/06/16(日) 20:54:01.53
ViとVimは違うとおもうの
0143名無しさん@お腹いっぱい。2013/06/17(月) 00:05:49.29
vim の話じゃないっつってんのに、困った人だなあ。

というか下手な考えで人の心配はしない方がいい。
的外れだし無意味だ。
0144名無しさん@お腹いっぱい。2013/06/17(月) 11:24:24.34
スレ知だとおもうの
0145名無しさん@お腹いっぱい。2013/06/22(土) 00:35:46.05
{ と } で直前、直後の空行まで移動って操作を最近覚えて使い始めたんですが、
どうやら先頭にタブや空白などがあると空行とはみなされずスルーされてしまいます。

かといって autoindent を切ることもしたくないのですが、{ と } 愛好家の皆さんは
どうやって対応していますか?
0146名無しさん@お腹いっぱい。2013/06/22(土) 01:10:25.94
smartindent 使うといいかな?
0147名無しさん@お腹いっぱい。2013/06/22(土) 01:33:43.89
>>145
help見てみたけどわからんかった
そういう関数作るしかないんやろか…
0148名無しさん@お腹いっぱい。2013/06/22(土) 04:09:47.06
>>145
https://github.com/deris/parajump
0149名無しさん@お腹いっぱい。2013/06/22(土) 06:13:25.81
>>145
'cindent'や'smartindent'だったら空行作るときにインデント削除すると思う。
今ある/^\s\+$/な行は:%s/^\s\+$//で空白削除すれば良いのでは。
0150名無しさん@お腹いっぱい。2013/06/22(土) 07:51:03.33
>>145
EasyMotion
0151名無しさん@お腹いっぱい。2013/06/22(土) 07:54:49.91
EasyMotionって何か好かんのだよなあ
便利だろうけど美しくないというか
0152名無しさん@お腹いっぱい。2013/06/22(土) 12:00:46.45
EasyMotionは直感的な操作ができないからな。
vimのデフォルトのコマンドはすべてダイレクトだ
01531452013/06/23(日) 00:21:16.28
わ。こんなに早くレスつくと思ってなく遅くなりました。

個人的には >>148 の parajunp が最適解でした。
私は Vundle 使っているので、.vimrc に

Bundle 'deris/parajump'

して BundleInstall で OK でした。

作者の方のエントリーも張っておきますね。
http://deris.hatenablog.jp/entry/20120209/1328806168

他のレスくれた方もありがとうございました。
0154名無しさん@お腹いっぱい。2013/06/24(月) 12:05:57.16
>>153
その作者さんもこう書いてる。
> 空行がSpaceやTabでインデントされているソースコード
> 自前であればそもそもそんなコードにならない
0155名無しさん@お腹いっぱい。2013/06/27(木) 08:10:32.08
パッチ多すぎわろた
0156名無しさん@お腹いっぱい。2013/06/27(木) 15:53:51.43
わろた
0157名無しさん@お腹いっぱい。2013/06/28(金) 18:44:07.79
neocomplcache.vim
でタグ補完を補完リストに出さないようにするか
1番下にしたいのですが方法ありませんか
0158名無しさん@お腹いっぱい。2013/06/29(土) 05:56:48.07
WindowsでVimを使う場合は自分でビルドすることを強く勧める
バイナリ配布されているのはPythonインターフェースのバージョンが古い
パッチ全部入りのソースをGithubから持ってきてMinGW上でビルドできる

Linuxの場合はディストロに入っているVimが無難
0159名無しさん@お腹いっぱい。NGNG?2BP(1000)
>>158
デイリーでビルドしたパッケージとか公開されてないの
0160名無しさん@お腹いっぱい。2013/07/06(土) NY:AN:NY.AN
Vim7.4a BETA release.
0161名無しさん@お腹いっぱい。2013/07/15(月) NY:AN:NY.AN
ノーマルモードで、カッコに囲まれた中に
カーソルを置いて
di(
と打つと、カッコの中の文字全てが削除されるという
便利な動作をするコマンドがあるのだけど
このdiの「i」にはどんな役目があるのでしょうか。
インサートモードに入る「i」とは違いますよね?
0162名無しさん@お腹いっぱい。2013/07/15(月) NY:AN:NY.AN
テキストオブジェクトでググれ
個人的にはVimの一番の美点だと思う
0163名無しさん@お腹いっぱい。2013/07/15(月) NY:AN:NY.AN
di(
1 delete
2 inner
3 ()オブジェクト

123 ()オブジェクトの中の文字列を消去する
0164名無しさん@お腹いっぱい。2013/07/19(金) NY:AN:NY.AN
全体をある特定の正規表現で検索して、特定行だけを表示しておいて、
「それを編集した後」検索を解除してまた全文表示に戻す、という機能があった、気が、した
(元にもどせるので ex の g/re/なんとか とは違う)

が、思い出せない。キーワードだけでも教えてくれませんか。ありがとう
0165名無しさん@お腹いっぱい。2013/07/20(土) NY:AN:NY.AN
Windows で起動時に $HOME\vimfiles\plugin\*.vim~ が読み込まれる ・ Issue #389
https://github.com/vim-jp/issues/issues/389

vim_devにも報告しましたが直す気は無いみたいです。
https://skydrive.live.com/?cid=0426991A3A631B5F&;id=426991A3A631B5F%21105
の ignore_short_filename.patch
このパッチを当ててvimをコンパイル。
0166名無しさん@お腹いっぱい。2013/07/20(土) NY:AN:NY.AN
>>165
なんでvim-jpに現れないの?
vim_dev直でもいいけどさ
0167名無しさん@お腹いっぱい。2013/07/20(土) NY:AN:NY.AN
追われている身なので
0168名無しさん@お腹いっぱい。2013/07/24(水) NY:AN:NY.AN
windows7でdiffが使えないんですが分かる方いませんか?

http://nanasi.jp/articles/howto/diff/vimdiff_in_windows.html

↑に書いてあるとおりdiffに必要なファイルは実行パスに置いてるんですが、
:Diff、:vertical diffsplitなどのコマンドが

E97: 差分を作成できません。

となってしまいます。
vim UTF-8 日本語版、kaoriya版どっちもだめでした。
winのことで申し訳ないですが・・・diff使えないとつらいです。
0169名無しさん@お腹いっぱい。2013/07/24(水) NY:AN:NY.AN
まずは本当にPATH通ってるか確認してみたら?
:!diff --version
01701682013/07/24(水) NY:AN:NY.AN
>>169
やってみました。
:!diff --version

C:\Windows\system32\cmd.exe /c (diff --version)
diff (GNU diffutils) 2.8.7
Written by Paul Eggert, Mike Haertel, David Hayes,
Richard Stallman, and Len Tower.

大丈夫だと思います。
01711682013/07/24(水) NY:AN:NY.AN
HOMEのvimrcが原因だったみたいです。
初期化したら正常に動きました。
0172名無しさん@お腹いっぱい。2013/08/11(日) NY:AN:NY.AN
Vim 7.4
0173名無しさん@お腹いっぱい。2013/08/13(火) NY:AN:NY.AN
Windows での、kaoriya-vim74 gvim で、"Alt + h" を
"M-h" として認識させる方法わかる方いませんか?

どうしても、メニューのヘルプにフォーカスが移ってしまい、
M-h の入力が出来ずに悩んでいます。

どなたかお教え頂けませんでしょうか。
0174名無しさん@お腹いっぱい。2013/08/13(火) NY:AN:NY.AN
se wak=no
0175名無しさん@お腹いっぱい。2013/08/13(火) NY:AN:NY.AN
>>174
おお。
ありがとうございます。
0176名無しさん@お腹いっぱい。2013/08/21(水) NY:AN:NY.AN
下のようなコマンドを使うと1つずつ確認しながら置換できますが
カーソル行から置換を開始するように&最終行に到達したら最初に戻って欲しいんですが
どのようにしたらいいでしょうか?

#↓だとファイルの最初から置換になってしまう
:%s/hoge/huga/gc
#↓だと最終行で止まってしまう
:,$s/hoge/huga/gc
0177名無しさん@お腹いっぱい。2013/08/21(水) NY:AN:NY.AN
>>176
ヘルプみてみたけどわからん。。。
:.,-1s/a/b/c みたいなのはE16でるからダメだし
そういう関数作らんできないのかも
0178名無しさん@お腹いっぱい。2013/08/22(木) NY:AN:NY.AN
/hoge<CR>Ncwhuga<Esc>n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.n.
ってやる
0179名無しさん@お腹いっぱい。2013/08/22(木) NY:AN:NY.AN
あ、それをマクロにしたらええんや (名案
0180名無しさん@お腹いっぱい。2013/08/22(木) NY:AN:NY.AN
hogeが単語とは限らないのでやっぱあかんかった
0181名無しさん@お腹いっぱい。2013/08/22(木) NY:AN:NY.AN
>>176
単純にnで移動して
置換したいやつの1個目だけはcwで変えて
次から . とかで楽をするのはだめか?
0182名無しさん@お腹いっぱい。2013/08/22(木) NY:AN:NY.AN
kaoriyaさんのVim7.4をダウンロードしたんですけど
セキュリティソフトでxxd.exeが隔離されますね
ZBotが検出されるみたいです
誤検出ですかね
Vim7.3でも同様な結果です
0183名無しさん@お腹いっぱい。2013/08/22(木) NY:AN:NY.AN
そのセキュリティソフトのサポートに聞いた方がいいんじゃね。
0184名無しさん@お腹いっぱい。2013/08/22(木) NY:AN:NY.AN
vim(gvim) で、正規表現を使わない置き換えって出来る?
'[' を含んだ文字列を置き換えたいんだけど、'[' が正規表現と解釈されてしまって
エスケープしないと置き換えれない。
0185名無しさん@お腹いっぱい。2013/08/22(木) NY:AN:NY.AN
無理です
0186名無しさん@お腹いっぱい。2013/08/22(木) NY:AN:NY.AN
>>176
適当やけどこんなんでどうすか
function! SuperSubstitute(pat, after, flags)
while search(a:pat, 'cw') > 0
exe printf('s/%s/%s/%s', a:pat, a:after, a:flags)
endwhile
endfunction
cal SuperSubstitute('hoge', 'huga', 'gc')
0187名無しさん@お腹いっぱい。2013/08/22(木) NY:AN:NY.AN
>>184
正規表現使わないのはできないけど、nomagic使えばちょっとは楽か?
:sno/[a/(x/
0188名無しさん@お腹いっぱい。2013/08/23(金) NY:AN:NY.AN
>>182
ウチも最近なるな
たぶん前回のうpデートで誤爆してんじゃないかな
バグレポ送ってExceptionsにブチ込んでおけば
そのうち治るだろ
0189名無しさん@お腹いっぱい。2013/08/24(土) NY:AN:NY.AN
>>184
\Vをパターンの前につけると正規表現を使わなくなる
0190名無しさん@お腹いっぱい。2013/08/25(日) NY:AN:NY.AN
>>176
:,$s/hoge/huga/gc | 0,s//~/gc ってやればいいんじゃね?
0191名無しさん@お腹いっぱい。2013/08/25(日) NY:AN:NY.AN
vim7.4にしちゃった
0192名無しさん@お腹いっぱい。2013/08/25(日) NY:AN:NY.AN
>>189
さすがにウソいいすぎやろ
:h \V
Use of "\V" means that in the pattern after it only the backslash has a
special meaning. "very nomagic"
0193名無しさん@お腹いっぱい。2013/08/25(日) NY:AN:NY.AN
>>192
すまん、適当に言い過ぎたわ。
\Vをパターンの前につけたら、[とか*とか正規表現に使う記号を
記号そのままの文字として検索出来るってことを言いたかったんだわ。
バックスラッシュでエスケープするのが面倒くさいって話だったし

ちなみにこの時は\*みたいにバックスラッシュつけたら正規表現の意味になる。
0194名無しさん@お腹いっぱい。2013/08/25(日) NY:AN:NY.AN
たしかに正規表現を使わない検索という意味では結構近いけどなw
0195名無しさん@お腹いっぱい。2013/08/25(日) NY:AN:NY.AN
誰かvimrcいじるだけでvisual modeでステータスラインの色変える方法知らない?
insert modeならautocmdのInsetEnterとInsetLeaveでなんとかなるんだけど
0196名無しさん@お腹いっぱい。2013/08/25(日) NY:AN:NY.AN
>>195
CursorHoldでmode()判定するとかかな
:h mode(
0197名無しさん@お腹いっぱい。2013/08/25(日) NY:AN:NY.AN
>>196
visual modeに入るときに色変える関数呼び出すようにmapして、
normal modeにもどったときにCursorHoldで色戻すようにしたわ。
助言ありがとな
0198名無しさん@お腹いっぱい。2013/08/25(日) NY:AN:NY.AN
ステータスラインの色変えるだけやったらpowerlineとかvim-airlineとか入れるのも多げさやもんな
0199名無しさん@お腹いっぱい。2013/08/26(月) NY:AN:NY.AN
>>161
テキストオブジェクト昨日のインナー
0200名無しさん@お腹いっぱい。2013/08/26(月) NY:AN:NY.AN
:set background dark
と入力すると
未知のオプションです
とエラーがでます
どうすればいいでふか?
0201名無しさん@お腹いっぱい。2013/08/26(月) NY:AN:NY.AN
>>191
で、なにかいいことありましたか?
0202名無しさん@お腹いっぱい。2013/08/26(月) NY:AN:NY.AN
いえ、別に。
0203名無しさん@お腹いっぱい。2013/08/26(月) NY:AN:NY.AN
>>200
:se bg=dark
0204名無しさん@お腹いっぱい。2013/08/26(月) NY:AN:NY.AN
>>203
できない
02051762013/08/26(月) NY:AN:NY.AN
>>181
それだとキー入力が多くなってしまうのでもうすこし楽な方法を探したいです…

>>186
それだと単語単位での置き換えしかできないのでちょっと希望に合わないんです
注文が多くてすみません

>>190
これすごくいいです!
これを使わせていただこうと思います
ありがとうございます

答えてくださった方々ありがとうございました
0206名無しさん@お腹いっぱい。2013/08/26(月) NY:AN:NY.AN
>>205
>>186は関数に与える正規表現によって単語単位とは限らんやろ
解決したみたいやからええけど
0207名無しさん@お腹いっぱい。2013/08/27(火) NY:AN:NY.AN
>200
set background=dark かな
0208名無しさん@お腹いっぱい。2013/08/27(火) NY:AN:NY.AN
>>200
set background=dark かな
0209名無しさん@お腹いっぱい。2013/08/27(火) NY:AN:NY.AN
>>205
それから考えなおしたんだけど、
:ma a | .,$s/hoge/fuga/gc | exec "normal 'a" | 0,.-1s//~/gc
ってやれば重複なしで止まれる。
どんな挙動求めてるか知らないからよけいなお世話かもしれないけど、一応
0210名無しさん@お腹いっぱい。2013/08/27(火) NY:AN:NY.AN
これ別に.いらんね
:ma a | ,$s/hoge/fuga/gc | exec "normal 'a" | 0,-1s//~/gc
0211名無しさん@お腹いっぱい。2013/08/27(火) NY:AN:NY.AN
>>200
se bg=dark
0212名無しさん@お腹いっぱい。2013/08/27(火) NY:AN:NY.AN
ヤンクしたものを複数行に渡ってペーストするにはどうすれば
0213名無しさん@お腹いっぱい。2013/08/27(火) NY:AN:NY.AN
>>212
複数行ペーストする
0214名無しさん@お腹いっぱい。2013/08/27(火) NY:AN:NY.AN
>>213
おにいちゃん、コマンドおしえてー
0215名無しさん@お腹いっぱい。2013/08/27(火) NY:AN:NY.AN
>>212
p
1行を3行に複製したいなら
yy2p
0216名無しさん@お腹いっぱい。2013/08/29(木) NY:AN:NY.AN
くまのり
0217名無しさん@お腹いっぱい。2013/08/29(木) NY:AN:NY.AN
てs
0218名無しさん@お腹いっぱい。2013/08/29(木) NY:AN:NY.AN
行の先頭にカーソルがあるときに、ci'で''内を編集できるように
ci(でも同じようにしたいんですけど
%ci(ってみなさんしてますか?
それと複数''があった場合ってf'を何回かしてからci'ですか?
0219名無しさん@お腹いっぱい。2013/08/29(木) NY:AN:NY.AN
>>218
あれなんで挙動違うんやろな…
f(ci( ってやってるわ
0220名無しさん@お腹いっぱい。2013/08/29(木) NY:AN:NY.AN
ci'がそんな挙動になってることを初めて知ったわ
0221名無しさん@お腹いっぱい。2013/08/29(木) NY:AN:NY.AN
a[a]a bbb (ccc) 'ddd'

[ ]がカーソル位置

ci' →
aaa bbb (ccc) '[]'

ci( →
a[a]a bbb (ccc) 'ddd'  (変化なし)

ほんとだ
0222名無しさん@お腹いっぱい。2013/09/04(水) 03:06:39.62
シェルスクリプトの編集時
(( a = ((b+1)/(c-1)) ))
みたいに数式評価の (( )) 内に))があると、外側の )) が赤く警告を出すんですが
どうすれば解決できますか?何かお勧めなプラグインとかありますか?
0223名無しさん@お腹いっぱい。2013/09/04(水) 15:29:01.94
(( a = (b+1)/(c-1) ))
じゃだめなの?
0224名無しさん@お腹いっぱい。2013/09/04(水) 16:13:56.50
>>222
シェルの種類によって色々やってるからなんとかなるかもしらん

ここかねえ
if exists("b:is_kornshell") || exists("b:is_bash")
syn region shDblBrace matchgroup=Delimiter start="\[\[" skip=+\\\\\|\\$+ end="\]\]" contains=@shTestList
syn region shDblParen matchgroup=Delimiter start="((" skip=+\\\\\|\\$+ end="))" contains=@shTestList
endif

echo b:is_kornshell
echo b:is_bash
ってやったらどっちか1になる?
0225名無しさん@お腹いっぱい。2013/09/04(水) 21:50:49.62
便乗してシンタックス関係で質問なんだけど、set cindentしてる状態で
C言語で下みたいな感じにコメント中に括弧が残っちゃってる時に
インデントがずれるんだけど、対処法知ってる人いない?
もちろんコンパイルは出来るんだけどなんか気持ち悪い。

int main(){
 for(int i=0; i<5; ++i){
  //if( hoge == 0 ){
  printf("hello world");
 }
 return 0;
 }
0226名無しさん@お腹いっぱい。2013/09/04(水) 22:54:57.63
Emacs 板でわからず(evil-surround)、こちらにお邪魔します。

教えてください。
下記の aaa~ccc を矩形選択し surround を利用して "" で囲む場合は
どのようにすればできるのでしょうか?

---aaa---
---baa---
---ccc---

---"aaa"---
---"baa"---
---"ccc"---

やったこと
visual mode で矩形選択し、s" としても所望の動きにならず。
# evil-surround ではできないかもしれませんが、
# Vim のやり方も覚えておきたいと思いまして。
0227名無しさん@お腹いっぱい。2013/09/04(水) 23:18:44.64
>>226
surround.vim使用
xmap c <Plug>VSurround

aaa
bbb
ccc

を矩形選択(Visual Block)して、c" でいける
02282222013/09/05(木) 03:33:04.80
>>224
レスありがとうございます。
echo b:is_kornshellは「未定義の変数です: b:is_kornshell」ってエラーが出ましたが、
cho b:is_bashは「1」が出ました。ちなみにシェルはzshです。
0229名無しさん@お腹いっぱい。2013/09/05(木) 10:18:33.20
>>226
それ素Vimでも楽勝だよ
gg/aaa<CR><C-V>7es""<Esc>P
0230名無しさん@お腹いっぱい。2013/09/05(木) 17:18:10.18
ペースト時に自動インデントってどこで設定できますか?
0231名無しさん@お腹いっぱい。2013/09/05(木) 17:38:33.65
>>230
p したとき?
それ確かなかったと思うから
p`[V`]=
■ このスレッドは過去ログ倉庫に格納されています