トップページ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あたり。
0082名無しさん@お腹いっぱい。2013/05/19(日) 20:02:39.71
ググったらこんなの出てきた
http://stackoverflow.com/questions/894811/open-files-in-existing-gvim-in-multiple-new-tabs
0083名無しさん@お腹いっぱい。2013/05/19(日) 20:22:06.27
うおー何だそりゃ
難易度高そうだけど解読してみます!ありがとうございます
0084名無しさん@お腹いっぱい。2013/05/20(月) 00:15:59.78
>>81
stackoverflow にも書いてあるけど、gvim やったらサーバ動いてると思うから、
端末から vim --remote-tab foo.c とかやれば gvim のタブで開けるんじゃない?
0085名無しさん@お腹いっぱい。2013/05/20(月) 00:52:40.43
ありがとうございます。理想の動作を確認出来ました。
ただ一つだけ、ディレクトリを指定した時にnetrwが起動してほしいですがそれだけ出来ないですね。
英語のサイト読み飛ばしてるようじゃ駄目だなーと反省。。。
0086名無しさん@お腹いっぱい。2013/05/20(月) 01:12:38.98
>>85
ほんまやな。:e<Cr> してあげたらnetrw起動してくれるみたいやけど
vim --remote-send ':e /path/to/foo<Cr>' ならいけるから、引数がディレクトリかどうかで
よしなにやってくれるシェルスクリプトでも書いたらおkやな
0087名無しさん@お腹いっぱい。2013/05/20(月) 02:01:58.73
おお!それで行けますね。ありがとうございます。
タブで開きたいので
vim --remote-send ':tabnew /path/to/foo<Cr>'
って感じですね。
ファイルの時もこれでいけるのでこのコマンドで完結しそうです。
ただ--remote-tabはgvimが起動してなくても起動してくれるけど--remote-sendはエラーを吐きますね!どうでもいいですけどね。
0088名無しさん@お腹いっぱい。2013/05/20(月) 11:39:54.78
そこらへんは、vim --serverlist してサーバがあるかないか判断したらいけるんやないか
つか、vim --help よみなさい
0089名無しさん@お腹いっぱい。2013/05/23(木) 00:04:55.20
ついにパッチの数が4桁に突入してしまった
0090名無しさん@お腹いっぱい。2013/05/23(木) 00:30:02.08
>>89
7.3長いよな…2010年8月〜

7.4 の新機能 (予定)
(1) improve Python support
(2) include a faster regexp engine
(3) include pending patches and fix bugs

7.3 で新しく実装されたのが Vim script の float サポートとかそんなんだったときの残念感に比べたらちょっと楽しみか…
0091名無しさん@お腹いっぱい。2013/05/23(木) 12:55:57.79
windowsのgvimでpowerlineの文字化けを直すにはどおしたらいいでしょうか
0092名無しさん@お腹いっぱい。2013/05/23(木) 15:11:51.77
>>91
どちらのpowerlineでしょうか?python版?
0093名無しさん@お腹いっぱい。2013/05/24(金) 22:14:40.33
>>80
全角空白が map できないとかそういう話?
0094名無しさん@お腹いっぱい。2013/05/24(金) 22:49:41.06
gvimに乗り換えたら、半角のバックスラッシュが打てなくなってしまいました。

キーボードの右上の方にある円マークのキーです。

コンソールの中のvimだとバックスラッシュが出力されるのに
gvimだと円マークになります。
なんとかならないでしょうか。
0095名無しさん@お腹いっぱい。2013/05/24(金) 22:55:00.96
針でかいわー
0096名無しさん@お腹いっぱい。2013/05/24(金) 23:14:43.82
ウソ?
0097名無しさん@お腹いっぱい。2013/05/25(土) 01:06:52.00
>>80
autocmd InsertCharPre 使ったらいけそうな雰囲気
こゆこと?
autocmd! InsertCharPre <buffer> let v:char = (v:char == ' ' ? ' ' : v:char)
0098名無しさん@お腹いっぱい。2013/05/25(土) 01:17:36.28
>>94
どうしてもバックスラッシュっぽい文字が入力したければインサートモードにて
<C-v>u29f5
とすればそれっぽい文字を入力することができます
ただ、これは正確にはバックスラッシュではないことをご了承ください
0099名無しさん@お腹いっぱい。2013/05/27(月) 23:29:29.21
>>90
re 速くなるのか。\%v 系が速くなるといいんだが。あれ割と遅いからなあ。
でもあんまり使われてなさそうだから変わってないかも。
0100名無しさん@お腹いっぱい。2013/05/28(火) 15:36:59.70
裏でgvimで編集中のファイルをターミナル上のvimから引き継ぐ
方法って何かないでしょうか
PCの前に座っている際はgvimで編集してて、それを放置したまま
リモートからつなぎ、ターミナル上のvimで作業を継続したいの
ですが
いまはgvimをkillして、vimで開きなおしてrecoverしていますが、
スマートじゃないので
0101名無しさん@お腹いっぱい。2013/05/28(火) 15:44:56.30
screenとか使わないのかな。
0102名無しさん@お腹いっぱい。2013/05/28(火) 15:46:07.96
あ、GUI必須ならだめか。
0103名無しさん@お腹いっぱい。2013/05/28(火) 15:56:19.24
そもそもなんでgvimなんて使う?
0104名無しさん@お腹いっぱい。2013/05/28(火) 16:33:12.89
なんて、ってw
0105名無しさん@お腹いっぱい。2013/05/28(火) 16:40:50.99
>>104
あれ?
>そもそもなんでgvimなんて使う?
って、日本語としておかしかった?
0106名無しさん@お腹いっぱい。2013/05/28(火) 17:08:02.08
んにゃあ、単純にgvimの方が使いやすいと思ってるので
日本語周りとかでターミナル側の設定とか?で悩まなくてすむし
ターミナルの方はtmux越しのことが多いので、
はじめからリモートで作業するのが分かってればvimにするんですけど
0107名無しさん@お腹いっぱい。2013/05/28(火) 17:24:12.51
>>105
日本語としてはおかしくないけど
gvimを悪く言わなくてもいいじゃない、と思ったもので。
0108名無しさん@お腹いっぱい。2013/05/28(火) 17:25:34.46
mksessoinじゃだめかな。
あんまり変わらんか。
0109名無しさん@お腹いっぱい。2013/05/28(火) 18:01:50.96
>108
ああ、なるほど
remote-sendと組み合わせられるならいけるかもですね
0110名無しさん@お腹いっぱい。2013/05/28(火) 18:15:49.74
試してみました
編集中のファイルを上書き保存して問題ない場合は
gvim --remote-send "<C-?><C-N>:mks!<CR>:wq!<CR>"
vim -S
でいけそうです

保存してない変更もそのまま引き継げればベストですが
まあgitか何かで差分修正がすぐできるなら、これでもいいか
0111名無しさん@お腹いっぱい。2013/05/28(火) 18:33:25.24
>>110
そこまでやる必要があるかどうかは別として、スワップファイル使えば保存済みかどうかも含めて復元できるで
vim -r /path/to/swapfile
0112名無しさん@お腹いっぱい。2013/05/30(木) 02:37:50.35
MacVim kaoriya版を使用しています
PHPでインデントが行えません
smartindnt, autoindentともにダメです HTMLならできるのですがPHPだと必ず行頭に戻ってしまいます
解決法をご存知のかたは教えていただけたら幸いです
0113名無しさん@お腹いっぱい。2013/05/30(木) 10:15:17.43
追加
エラーメッセージは、large indent deactivedと表示されます
0114名無しさん@お腹いっぱい。2013/05/30(木) 23:31:12.61
>>112
一度開発版試してみたら
ttps://github.com/2072/PHP-Indenting-for-VIm
安定版(?)はこっちらしい
ttp://www.2072productions.com/to/phpindent.txt

indent/php.vim ちょっとみたけど、長々と色々やってるから途中であきらめた…
0115名無しさん@お腹いっぱい。2013/05/31(金) 16:23:04.00
>>114
開発版の方はすでに試していましたが治らずといった感じです
設定をいろいろ触ったせいか概ねのものにはちゃんとインデントしてくれるのですが
どうしても閉じタグだけ勝手に行頭に戻ってしまいます
0116名無しさん@お腹いっぱい。2013/06/01(土) 00:38:33.93
>>115
トライ済みか…
現象を再現できる最小限のコードを示して開発者に投げるのが手っ取り早そう
0117名無しさん@お腹いっぱい。2013/06/01(土) 01:15:46.02
>>116
わかりました これを気にgitHubも利用してみます
わざわざありがとうございました
0118名無しさん@お腹いっぱい。2013/06/01(土) 01:28:07.82
閉じタグて ?> のこと?
Issuesにこんなん登録されてるけど同じ現象?
0119名無しさん@お腹いっぱい。2013/06/01(土) 01:33:01.76
>>118
そうです

具体的には
<div>
<?php
?>
</div>
と書いても勝手にこうされてしまいます
<div>
<?php
?>
</div>
0120名無しさん@お腹いっぱい。2013/06/01(土) 01:35:04.98
すみません Issuesのものよりもっと単純なことでした
0121名無しさん@お腹いっぱい。2013/06/02(日) 16:38:46.56
hjkl で移動するとき、もっと早く移動する方法しらない?
0 とか $ とか 4h とかそういうのじゃなくて、
1秒間 k 押したら 6行移動したとして、何か設定加えると 1秒k押したら 12行移動てきるようなの。

俺の移動速度より3倍くらい早い vim 使いを タリーズでみたけど、あの設定を知りたい。
0122名無しさん@お腹いっぱい。2013/06/02(日) 16:54:48.02
そりゃ設定じゃなくて別の移動コマンド使ってるか
システムのキーリピート間隔の問題じゃないのか
0123名無しさん@お腹いっぱい。2013/06/02(日) 16:57:14.58
>>121
1秒k押し続けるより12kのほうが速いだろ?
0124名無しさん@お腹いっぱい。2013/06/02(日) 17:21:44.49
キーリピートの設定はvim側じゃなくてOS側だな。
0125名無しさん@お腹いっぱい。2013/06/02(日) 17:37:41.09
早くし過ぎたら12行ぴったしで止めるの難しいから
>>123の言う通り12kの方が早いんじゃないの。
3倍早いってのは単純にキーを打つのが早かっただけじゃないのかね。
0126名無しさん@お腹いっぱい。2013/06/02(日) 17:44:41.57
つーか12行程度ならHML辺りを駆使したほうが幸せになれそうだが
0127名無しさん@お腹いっぱい。2013/06/02(日) 18:12:21.35
>>121
スクロール目的なら ctrl-d や ctrl-f とか
画面内のカーソル移動が目的なら H M L 使う
0128名無しさん@お腹いっぱい。2013/06/02(日) 19:00:31.85
速過ぎる連打は長押しに見えるという
0129名無しさん@お腹いっぱい。2013/06/02(日) 21:00:50.48
タリーズ ってなにさ?
0130名無しさん@お腹いっぱい。2013/06/02(日) 21:05:19.46
いくら社会不適合なPCオタの集うUNIX板とは言え、その質問は無いわ
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で変えて
次から . とかで楽をするのはだめか?
■ このスレッドは過去ログ倉庫に格納されています