トップページ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あたり。
0036名無しさん@お腹いっぱい。2013/04/20(土) 11:47:05.58
Cool!
winsaveviewとwinrestviewいいね
0037名無しさん@お腹いっぱい。2013/04/20(土) 18:09:09.87
>>35
質問者です。ありがとうございます。normal modeを想定していましたがinsert modeでも十分です。まさに実現したかった動作なので大変助かりました。
0038名無しさん@お腹いっぱい。2013/04/21(日) 01:15:58.85
InsertCharPre 使ってるところがモダーンVimですな
0039名無しさん@お腹いっぱい。2013/04/21(日) 15:02:27.55
vim を本気で使い出してプログラミングはすごく便利なんだけど、
日本語を本気で打というとすると切り替えが多くて使いづらく感じている。

調べたら、
ttps://sites.google.com/site/fudist/Home/vim-nihongo-ban/vim-japanese

みたいなのもあるようなんだが、みなさんこういうの入れているの?

それとも基本はプログラミングだけで、
日常のメモ書いたりするテキストエディタには使わない感じ?
0040名無しさん@お腹いっぱい。2013/04/21(日) 15:11:16.26
uimのvi協調モードを使ってる
0041名無しさん@お腹いっぱい。2013/04/21(日) 17:45:51.77
>>40

すんません、単語を知らなかった。
vim協調モードで検索したらたくさん出てきますた。
IME によってはサポートがあるのか、なるほど。ありがとう。
0042名無しさん@お腹いっぱい。2013/04/21(日) 18:49:32.32
最近はIMをimeって言うの?
いちいち違和感感じてしょうがないのはおじさんだからかな
0043名無しさん@お腹いっぱい。2013/04/21(日) 19:11:16.76
おじさんならFEPだろ
IMEはMS用語
0044名無しさん@お腹いっぱい。2013/04/21(日) 19:16:19.57
そうそうfepなのよ
imeは市民権を得たのかな
0045名無しさん@お腹いっぱい。2013/04/21(日) 19:26:09.08
FEPなんて言葉もう使わないよ。
IMEが標準語って感じじゃない?
0046名無しさん@お腹いっぱい。2013/04/21(日) 20:16:03.55
なんでWindowsはKaoriYa版一択な空気なんですか?
普段LinuxとかBSDで使ってて、今度Windowsにも導入しようとしてググってみたら
公式のバイナリ入れてる例があんまりない
~/.vimrcじゃ対処出来ないレベルの問題があったりする?
0047名無しさん@お腹いっぱい。2013/04/21(日) 20:35:26.18
どれが公式のバイナリか知らんけど
俺が使ってるgnupack-develに付いてるgvimは
開こうとするファイルのパスによっては
開けなかったりする
0048名無しさん@お腹いっぱい。2013/04/22(月) 21:07:20.17
kaoriyaも稀にうまく取り扱えないパスあるよ

あとgrepにカレント以外のパス渡そうとするとミスること多いのよく分からん

まあWinスレで言うべきか
0049名無しさん@お腹いっぱい。2013/04/22(月) 21:49:56.35
まあ win 版はまともに動かないとこもあるよね。
というより、win 版を unix 的(?)に動かそうとすると、かな。
0050名無しさん@お腹いっぱい。2013/04/24(水) 22:34:56.79
mapで実行したコマンドでエラーを吐かせないようにする方法ある?

具体的には、Enterで折りたたみの開閉をしたいんだけど
map <Enter> za
ってすると、折りたたみのないとこでEnter押しちゃった時にいちいち
エラー出るのがめんどくさくて…
0051名無しさん@お腹いっぱい。2013/04/25(木) 00:13:51.79
>>50
こういうかたち?
nnoremap <silent> <leader>g :silent! normal! za<cr>
0052名無しさん@お腹いっぱい。2013/04/25(木) 22:34:09.49
なるほど、normalなんてもんがあるのか。ありがとう。
0053名無しさん@お腹いっぱい。2013/04/27(土) 21:39:47.09
.vimと.vimrcを他の場所に移動したいんですがうまくいきません。
.vimディレクトリがないなら-uオプションで.vimrcを指定するだけでOKみたいですが、
.vimディレクトリも移動するにはどうやるんでしょうか?

とりあえずググったところ、あまり的を射たものは見つかりませんでした。
試しに↓の方法をやってみたんですが
http://stackoverflow.com/questions/3377298/how-can-i-override-vim-and-vimrc-paths-but-no-others-in-vim
たとえば nnoremap sv :vsp n<Cr> と設定して sv と入力すると :vsp n<Cr> と表示されて
終わってしまいます。そこでEnterを押すと入力されます。
0054名無しさん@お腹いっぱい。2013/04/28(日) 03:21:15.60
>>53
-N オプションを指定してみるとか?
0055名無しさん@お腹いっぱい。2013/04/28(日) 08:59:17.11
>>53
runtimepathの変更がしたいのなら
http://nanasi.jp/articles/howto/config/runtimepath.html

あとこれもやりたいことに近いのかな
http://teppeis.hatenablog.com/entry/20080705/1215262928
0056名無しさん@お腹いっぱい。2013/04/28(日) 10:36:46.50
vimで日本語と英語とロシア語の3つが綺麗に表示できる設定はないかな?
いまはロシア語の表示が悲惨なことになってる。
フォントを探せばいいのかあるいは別の何かの設定を変えればいいのか見通しがつかない。

http://2ch-ita.net/upfiles/file5243.jpg
0057名無しさん@お腹いっぱい。2013/04/28(日) 11:39:12.47
:set ambiwidth=double したらとりあえず解決しそうだけど
常用するような人はキリル文字は半角で表示したいんだろな
0058名無しさん@お腹いっぱい。2013/04/28(日) 11:45:39.40
この手の問題は使ってるターミナルにも依存してくるからな
gvim使えば多少は緩和するのかね
0059名無しさん@お腹いっぱい。2013/04/28(日) 11:57:40.91
そもそも達人はどっち使ってるんだろう
なんかターミナルのイメージがあるが
0060名無しさん@お腹いっぱい。2013/04/28(日) 13:29:12.20
>>57
助かった。ありがとう。
驚いたことに英語の半角はそのままでロシア語のみが影響を受けるとか予想もしなかった。
0061532013/04/28(日) 23:21:54.94
>>54
それで治りました。ありがとうございます。

>>55
ありがとうございます。読んでみます
0062名無しさん@お腹いっぱい。2013/04/29(月) 17:26:02.21
>>56 の画像はみてないけど
ちょっと自分の環境で試してみたら vim より gvim の方がアレだった。
gvim はなんかつまってるというか文字幅がフォントとあってなかった。ambiwidth=double で合う。
xterm 上の vim は ambiwidth=single で合ってるけど PIXEL_SIZE 13 なんでちょっと小さいかも。
ロシア語の小さめ表示って普通どんくらいなんだろう。
0063名無しさん@お腹いっぱい。2013/04/29(月) 18:32:42.17
:g/string/p

string
のある行を全部表示してくれるけど
これを保存する方法は無いかな?
0064名無しさん@お腹いっぱい。2013/04/29(月) 18:52:24.37
>>63
:g は使わないから知らない。できないような

r!grep "string"
もしくは
!grep "string" % >file
0065名無しさん@お腹いっぱい。2013/04/29(月) 18:54:23.20
まちがった
ひとつめは
:r!grep "string" file
0066名無しさん@お腹いっぱい。2013/04/29(月) 19:39:54.00
>>63
let @a=""
g/PATTERN/y A
でレジスタa に保存される
実行前にレジスタの中身クリアしとかないと、結果がレジスタに残ってる値に追加されるので注意

それか
redir => res
g/PATTERN/
redir END
で結果を任意の変数に保存できる
0067名無しさん@お腹いっぱい。2013/04/29(月) 19:40:55.64
>>64,65
ありがとう。
!grep "string" % >file でうまくいった。
0068名無しさん@お腹いっぱい。2013/04/29(月) 19:41:48.49
更新遅れた。>>66 にもありがとう。
0069名無しさん@お腹いっぱい。2013/04/29(月) 19:43:07.94
あ、ファイルに保存て意味か…
なら、
redir >> kekka.txt
g/NANTOKA/
redid END
も用意しております
0070名無しさん@お腹いっぱい。2013/04/29(月) 19:43:50.26
>>69
まちごた
s/redid END/redir END/
0071名無しさん@お腹いっぱい。2013/04/29(月) 20:04:29.84
>>70
なんと、こちらは行数まで付加されて記録か。奥が深い。
初めて見た構文の "redir" 使ったコマンドモードは
開眼ものでした。重ね重ねありがとうございました。
0072名無しさん@お腹いっぱい。2013/04/29(月) 22:36:14.25
そういや前に redir 使ったら ↓ みたいになって余計な改行が邪魔だなーと思った記憶がある。

redir => a
redir END
let a
a ^@

redir => a
echo 1
redir END
let a
a ^@^@1^@

改行が ^@ と表示されるのもわかりにくいけど、
それは別として余計な改行の由来がわかりにくかった。
1 の前の改行2つは何だよっていう。

というか echo 1 の出力だけほしいときって
↓ でも 1つ付くけどどうすんの?削ればいいんだけど。

redir => a|echo 1|redir END
let a
a ^@1

redir マスタはどうしてんだろう。削ればいいんだけど。
0073名無しさん@お腹いっぱい。2013/04/30(火) 15:25:26.74
^@ は 0x0a
0074名無しさん@お腹いっぱい。2013/04/30(火) 20:09:58.19
俺はマスタではないけどオプションとかでは抑止できなそうだから
そういう関数を作るしかないような気がする
なんで余計なもんつけんのかね…ソースコード読めばわかるんだろうけど
0075名無しさん@お腹いっぱい。2013/05/04(土) 02:27:00.80
fudistってvim-jpとかIssuesにいる人のだれか?
それとも一人黙々とあそこでプラグイン書いたりしてるの?
0076名無しさん@お腹いっぱい。2013/05/04(土) 02:54:32.29
_why(いいすぎ感)みたいな感じかと思ったらVimテクニックバイブルの著者の一人なのか
なにかしらそこら辺界隈に関わりありそうだね
0077名無しさん@お腹いっぱい。2013/05/06(月) 20:35:11.66
:help map を見ると

:nunmap can also be used outside of a monastery.
(:nunmap は修道院の外でも使えます)
なる一文があるんですが、どういう意味なんでしょう。
さらっとググった限りではちょっとしたジョークっぽいんですがニュアンスが分かりません。
0078名無しさん@お腹いっぱい。2013/05/06(月) 20:37:27.54
自己解決しました

https://github.com/vim-jp/vimdoc-ja/blob/master/doc/map.jax
:nunmap は修道院の外でも使えます。{訳注: nunは修道女の意}
0079名無しさん@お腹いっぱい。2013/05/06(月) 22:30:19.78
helpの中でジョークをかます余裕
0080名無しさん@お腹いっぱい。2013/05/19(日) 18:38:50.19
特定の文字が入力された時に自動で別の文字に置換するような設定って出来ますか??
例えば、全ての全角空白の入力を半角空白に置き換える、みたいな。
0081名無しさん@お腹いっぱい。2013/05/19(日) 19:54:12.78
いつもシェルとgvimを別に立ち上げています。
プロジェクトのプログラミングはnetrwなどを使いつつ、gvim内でほぼ完結しています。

しかしシェル上でちょこっとファイルを編集しくなった時は、
わざわざgvimに切り替えてそのパスまで行くのが面倒なので
シェル内でviコマンドを使って編集してます。
理想としては、シェル上で簡単なコマンドを打つだけで、既に起動中のgvim内に新しいタブでファイルが開ければベストなのですが
シェルから起動中のgvimにどうやってアクセスすればいいのか分かりません。
何かいい方法無いでしょうか。
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にも応用すれば、あるいは希望通りの動作になるのでは
■ このスレッドは過去ログ倉庫に格納されています