Vim Part25 [転載禁止]©5ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2015/03/30(月) 20:04:42.55http://www.vim.org/
前スレ
Vim Part24
http://peace.2ch.net/test/read.cgi/unix/1413122189/
関連情報は>>2-6あたり
0131名無しさん@お腹いっぱい。
2015/04/25(土) 21:37:13.50:h set-&
0132名無しさん@お腹いっぱい。
2015/04/25(土) 22:33:03.11でもこれvimrcに書く時は最初から規定値になってるはずなので不要な記述の気がするんですが
0133名無しさん@お腹いっぱい。
2015/04/25(土) 23:01:42.17環境によっては/etc/vim/vimrcとかで変えられてる可能性があるからじゃねえかな
0134名無しさん@お腹いっぱい。
2015/04/25(土) 23:02:39.48あ、あとvimrcを再読み込みした時のため
au!もそのため
0135名無しさん@お腹いっぱい。
2015/04/25(土) 23:10:27.19ものによってどんどん追加されていくのもあるんだろうか
0136名無しさん@お腹いっぱい。
2015/04/26(日) 01:41:37.250137名無しさん@お腹いっぱい。
2015/04/27(月) 21:04:55.52gvimで何か開かれるときに、新しいウィンドウではなく既存のgvimのウィンドウの新しいタブとして開かせることは.vimrcからは出来ないでしょうか?
ファイラーから日本語のテキストを開くたびにgvimのウィンドウが増えていって……
0138名無しさん@お腹いっぱい。
2015/04/27(月) 21:08:02.34gvim --remote-tab foo
0139名無しさん@お腹いっぱい。
2015/04/27(月) 21:34:47.37singleton.vim
0140名無しさん@お腹いっぱい。
2015/04/27(月) 22:15:45.84>>138
バックグラウンドタブに回されてしまいます……フォアグラウンドがいいです
>>139
入れてみました。起動時にE117とE477と大量のE488が出ます……utf8のunixです
あとこちらもバックです
もうちょっといじってみます
0141名無しさん@お腹いっぱい。
2015/04/27(月) 23:28:42.57LinuxMintのvimは、7.3以上かつ+clientserver付きなの?
0142名無しさん@お腹いっぱい。
2015/04/27(月) 23:57:32.16そのようです
サーバー立ち上げてませんでした吊ってきます
0143名無しさん@お腹いっぱい。
2015/04/28(火) 07:26:50.67vimgrep で再帰検索をする場合、
:vimgrep /pattern/ **/*.ext | cw
等になるかと思いますが、
このとき特定のディレクトリだけを検索対象から再帰的に除外する方法はないでしょうか?
内部grepで無理なら外部grepでもかまいません。
よろしくお願いします。
0144名無しさん@お腹いっぱい。
2015/04/29(水) 06:11:46.11:vimgrep /pattern/ `find . -name '*.ext' -! -path './exclude/*'` | cw
0145名無しさん@お腹いっぱい。
2015/04/29(水) 07:59:42.000146名無しさん@お腹いっぱい。
2015/04/29(水) 09:54:25.63これはデフォルトでこういう色に設定されているんですか?
vimrcとgvimrcはからの状態です
たしか昔インストールしたときは黒背景だったのですが
0147名無しさん@お腹いっぱい。
2015/04/29(水) 11:50:42.42set rtp+=~/.vim/bundle/Vundle.vimと書いてあるのですが
vimrcを再読込したら重複するパスが存在するとおもうんです
いろんな人のvimrcみても+=で追加してるんですが問題ないのでしょうか?
0148名無しさん@お腹いっぱい。
2015/04/29(水) 12:59:30.27vimをアンインストールで解決
0149名無しさん@お腹いっぱい。
2015/04/29(水) 14:04:34.11"vimrc リローダブル"でググると幸せに
0150名無しさん@お腹いっぱい。
2015/04/29(水) 15:25:42.32augroupなどは設定済みでした
後はマッピングでvimrcを読み込むようにしました
一つ解決できないことが見つかりました
set all&ですべての設定を規定値に戻せません
戻せなかったのはnumberです
set all&じゃnumberはnonumberにできないのでしょうか?
0151名無しさん@お腹いっぱい。
2015/04/29(水) 17:42:16.48でも画面上のはCTRL-lしないと消えないね
0152名無しさん@お腹いっぱい。
2015/04/29(水) 17:57:17.09再描画コマンドをvimrcに書いたら思い通りになりました
これで完璧に初期化できました
0153名無しさん@お腹いっぱい。
2015/04/29(水) 18:25:50.45augroup vimrc
autocmd!
nnoremap <Space>s. :<C-u>source ~/.vim/vimrc<CR>
augroup END
colorscheme default
syntax enable
再描画入れてないんですがこの内容だけのvimrcをスペースs.押して再読み込みさせると
色が付かなくなってしまいました。再描画しても変化ありません。
set all&実行する前後の:set allの内容をチェックしてみましたが色とは関係なさそうな値が異なるだけでした
なぜですか?
0154 ◆fkrTovHYGs
2015/04/29(水) 18:37:32.930155名無しさん@お腹いっぱい。
2015/04/29(水) 20:55:50.750157名無しさん@お腹いっぱい。
2015/04/30(木) 19:58:11.53:source vimrcしたときに変数fを使ってset filetypeしたいんですがうまくいきません
syntax on
if exists("g:f")
set filetype=g:f
else
let g:f = &ft
endif
vimを開いた後に自分で:echo &ftするとステータスバーの下にvimって出力されたのですが
let g:f = &ftするタイミングでファイルタイプの種類を取れてないのですがどうやって変数にセットできますか?
0158名無しさん@お腹いっぱい。
2015/04/30(木) 20:58:51.50ありがとうございましたm(__)m
非常に助かりました、完璧でした。
それにしてもどうしてこんな複雑な操作を熟知されてるのでしょう?
私からすると神様みたいです
0159名無しさん@お腹いっぱい。
2015/04/30(木) 21:00:52.78au FileType * let g:f = &ft
はどうや?
0161名無しさん@お腹いっぱい。
2015/04/30(木) 23:11:36.93そのvimrcでlet g:fしてるの消した?
0162名無しさん@お腹いっぱい。
2015/04/30(木) 23:19:09.27そもそもこれの目的はなに?
so ~/.vimrc してもftはリセットされないべ?
0163名無しさん@お腹いっぱい。
2015/04/30(木) 23:36:54.070164名無しさん@お腹いっぱい。
2015/04/30(木) 23:43:58.890165名無しさん@お腹いっぱい。
2015/04/30(木) 23:52:44.71vim って言うより find の使い方だねこれは。
0166157 ◆MC7mIiSQ8g
2015/05/01(金) 00:39:53.90syntax on
if exists("g:f")
set filetype=g:f
else
au FileType * let g:f = &ft
endif
このスクリプトで:source vimrcの後に:set filetypeするとfiletype=g:fと出力されました
>>162
vimrcリロード後にset all&でファイルタイプが消えるので再設定するためです
1版最初にvimを立ち上げた時にファイルタイプの値&ftが取得できなくて空の値をg:fに代入しているのかなとみています
>>163 vimrcの内容は>>157だけです
>>164
これからします
0167名無しさん@お腹いっぱい。
2015/05/01(金) 01:49:59.42そういうことか。やっとわかったわ
手元ではこれでいけた
.vimrc を source する前にカレントバッファのfiletypeを保存して、.vimrcの最後の方でそれを復元する
augroup Chinshiko
autocmd!
autocmd SourcePre .vimrc let g:f = &filetype
augroup END
let &filetype = get(g:, 'f', '')
0168157 ◆MC7mIiSQ8g
2015/05/01(金) 13:18:10.36できましたこれで完璧です
匿名ブログに完成コードを残しました
http://anond.hatelabo.jp/20150501131712
0169名無しさん@お腹いっぱい。
2015/05/01(金) 16:00:37.190170名無しさん@お腹いっぱい。
2015/05/01(金) 18:29:25.980171名無しさん@お腹いっぱい。
2015/05/01(金) 19:03:35.340172名無しさん@お腹いっぱい。
2015/05/04(月) 00:00:48.55aの所にカーソルをおいてCTRL-aするとカーソルより後ろの数字(2)がインクリメントされるんですが
数字の所にカーソルがないのにインクリメントできる仕様なんですか?
0173名無しさん@お腹いっぱい。
2015/05/04(月) 00:02:25.210174名無しさん@お腹いっぱい。
2015/05/04(月) 07:20:01.68そういう仕様だと思う
どうしても気になるなら無効にするか、カーソル位置に数字がある場合だけ動作するように変更すべし
0175名無しさん@お腹いっぱい。
2015/05/04(月) 08:07:06.19まずマニュアル読もうぜ。
:h ctrl-a
Add [count] to the number or alphabetic character at or after the cursor.
‘after the cursor’って書いてあんだから仕様でしょ。
バグ云々については、バージョン管理してコミットする際に、
差分みて意図しない変更がないか確認すればいい。
0176名無しさん@お腹いっぱい。
2015/05/04(月) 08:47:14.81マクロとか
0177名無しさん@お腹いっぱい。
2015/05/05(火) 00:53:50.000178名無しさん@お腹いっぱい。
2015/05/06(水) 22:20:39.020179名無しさん@お腹いっぱい。
2015/05/06(水) 23:28:28.98気に入らなければ挙動変えられるのがVimのいいところの一つだとは思うけどね
0180名無しさん@お腹いっぱい。
2015/05/07(木) 02:30:05.730181名無しさん@お腹いっぱい。
2015/05/07(木) 12:58:23.99let s = "a"
\ . "b"
この2行しか書いてないvimrcを用意しました
git rebase -i HEAD^^すると
E10: \ should be followed by /, ? or &
ってエラーが出てしまいrebaseができません。
\があるとどうもエラーになるようです。
vimrcの先頭にset nocpを書いたらE10は消えたんですが(vimrcを読み込んだ時点でnocpが設定されているものだと思うのでset nocpをする理由がよくわかってない)
今度はE319: Sorry, the command is not available in this version: let s = "a" . "b"
とエラーが出ました
set nocpじゃなくてset cpoptions-=Cを書いても同じエラが出ました
行を\で分けずに書けばエラーは出なくなるのですが他に解決策はありませんか?
0182名無しさん@お腹いっぱい。
2015/05/07(木) 13:14:23.800183名無しさん@お腹いっぱい。
2015/05/07(木) 15:07:59.88同じ症状を再現できなかった(E10は出せたけどrebaseは成功するしE319は出なかった)ので自信無いけど
「vi」で起動すると互換モードで動くという設定がシステム側でされてて
且つ、環境変数 EDITOR が vim じゃなくて vi とか……?
もしそうなら、ちゃんと vim を使うように設定すれば -u NONE は要らないと思う
0184名無しさん@お腹いっぱい。
2015/05/07(木) 17:18:24.92ありがとうございます
0185名無しさん@お腹いっぱい。
2015/05/07(木) 17:37:25.89それぞれビミョーに手を加えてたり再現度に違いがあって切り替えたときとか混乱してやりづらいね
0186名無しさん@お腹いっぱい。
2015/05/08(金) 00:22:47.19それらは完全に同じではないもんな
あくまで "like" なだけで
0187名無しさん@お腹いっぱい。
2015/05/08(金) 00:24:04.71なんだろそれ
EDITOR=vim だし、.vimrc にバックスラッシュ含まれてるけどその現象は出てないわ
0188名無しさん@お腹いっぱい。
2015/05/09(土) 12:21:55.910189名無しさん@お腹いっぱい。
2015/05/12(火) 21:55:38.39これで起動した時に左右にファイルの差分が表示されますが
このままvimgrepのモードを解除して左右に分割されたままファイルを編集作業に入りたいので
解除方法を教えてください
0190名無しさん@お腹いっぱい。
2015/05/13(水) 19:24:16.30:diffoff!
http://vim-jp.org/vimdoc-ja/diff.html#:diffoff
vimgrep じゃなくて vimdiff ね
0191名無しさん@お腹いっぱい。
2015/05/13(水) 23:15:32.59解除できましたありがとうございます
0192名無しさん@お腹いっぱい。
2015/05/15(金) 10:13:46.58autocmd FileType php set commentstring=#\ %s
filetype plugin indent on
これだとcommentstringの値を上書きできなくて、行を逆にすると上書き出来ました
filetype plugin indent on
autocmd FileType php set commentstring=#\ %s
なぜfiletype plugin indent onの後に書かないと上書きできないんですか?
0193名無しさん@お腹いっぱい。
2015/05/15(金) 12:31:32.31filetype plugin indent onの行でファイルタイプの判定を有効にしてからじゃないと、
FileTypeのイベントが発行イベントがしないんでしょ。
0194名無しさん@お腹いっぱい。
2015/05/15(金) 12:36:11.59>>192
filetype plugin indent onの行でファイルタイプの判定を有効にしてからじゃないと、
FileTypeのイベントが起きないから、autocmdが実行されないんでしょ。
0195名無しさん@お腹いっぱい。
2015/05/15(金) 14:16:18.80ということはfiletype plugin indent onより前のautocmdは無意味なのか検証してみました
autocmd FileType php setlocal tabstop=1 shiftwidth=1 softtabstop=1
autocmd FileType php set commentstring=#\ %s
filetype plugin indent on
インデントは1になりましたがcommentstringだけは上書きされません
0196名無しさん@お腹いっぱい。
2015/05/15(金) 15:35:27.35失礼。filetype plugin indent onの前でもFiletypeイベントは起きてるみたいだ。
時間がないので細かいことは調べられなかったけど、filetype plugin indent onをすると、
filetypeが決まる時にphp用のftpluginが呼ばれ、そこでcommentstringが上書きされてる。
tabstopなどはphp用ftpluginの中で記述されてないので、設定がそのまま残ってる。
ここら辺の設定の順番は俺じゃわからないから、誰か知ってる人がいたら教えて。
0197名無しさん@お腹いっぱい。
2015/05/16(土) 16:02:28.06`ftplugin-overrule'の項目によると$HOMEで書換える方法でも良いんじゃないかな。
がっつり単純に
setlocal commentstring=/*%s*/
って書いてあるし。
他にも`filetype-plugin-off'の項目によると、『ファイル形式の検出自体は無効にならない。』
とか書いてある。
0198名無しさん@お腹いっぱい。
2015/05/16(土) 16:09:52.580199名無しさん@お腹いっぱい。
2015/05/16(土) 23:18:17.45解説ありがとうございます。
この領域の内容は難しすぎて僕にはついけいけないようです。
0200名無しさん@お腹いっぱい。
2015/05/17(日) 02:56:03.15packageを作った人によって多少の名前の違いはあるかもしれないけどそこは勘で分ると思います。
例えばvimのversionが7.3だっとして/usrにinstallされていたら
/usr/share/vim73/ftplugin というdirectoryの中に「php.vim」と「html.vim」というfileが
あるからそれを$HOME/.vim/ftplugin というdirectoryを作ってその中に複製して入れる。
その複製したphp.vim fileの中に
setlocal commentstring=/*%s*/
という場所が下の方にあるから、その上と下に分を付け足して最終的に以下のようにします。
if ! did_filetype ()
setlocal commentstring=/*%s*/
endif
その複製したhtml.vim fileの中に
setlocal commentstring=<!--%s-->
という場所が上の方にあるから、その上と下に分を付け足して最終的に以下のようにします。
if ! did_filetype ()
setlocal commentstring=<!--%s-->
endif
一応これで以下の設定で動いています。何となくsetlocalにしときました。
autocmd FileType php setlocal commentstring=#\ %s
filetype plugin indent on
0201名無しさん@お腹いっぱい。
2015/05/17(日) 03:26:03.08一番簡単なのはphp.vimのfileのsetlocalの値を書換えるだけなのだけれども。
その時はそうするか、偉い人のアドバイスを待って。寝ます。
0202名無しさん@お腹いっぱい。
2015/05/21(木) 12:17:43.590203名無しさん@お腹いっぱい。
2015/05/21(木) 13:17:21.46:h :diffsplit
0204名無しさん@お腹いっぱい。
2015/05/21(木) 13:45:12.45やったことあるひといる?
0205名無しさん@お腹いっぱい。
2015/05/21(木) 14:49:02.84その行為に意味があると思えない
viが使いたければviを入れれば済むし
0206名無しさん@お腹いっぱい。
2015/05/21(木) 15:42:52.83とりあえず開いてから:set noswapfileってすれば効くみたいなんだけど……なんででしょ
>>204
vim-tinyでもあかんのかね?
0207名無しさん@お腹いっぱい。
2015/05/21(木) 15:49:37.080208名無しさん@お腹いっぱい。
2015/05/21(木) 18:02:18.06:h -vim
:h -c
gvim +"set noswapfile" 〜
0209名無しさん@お腹いっぱい。
2015/05/21(木) 18:20:21.24普通に :map とか?
:h :map_l
してジャンプした先の上15行を読んでみて
0210名無しさん@お腹いっぱい。
2015/05/21(木) 21:29:26.69一文字後ろ削除ってなんだっけ?とx押したら行切り取りされて更にビビった
0211名無しさん@お腹いっぱい。
2015/05/22(金) 09:31:56.85\ a,b,c,d,e,f,g,h,i,vim,python,ruby,cpp,html
1文字と特定のファイルタイプだけ色がつくんですがなぜですか?
cppとかhtmlは色はついてません
0212名無しさん@お腹いっぱい。
2015/05/22(金) 10:28:31.38filetype plugin indent on
set list
colorscheme blue
autocmd FileType javascript setlocal nolist
javascriptのファイルを開いてタブ文字を入れて
:sources ~/.vimrc
こうするとautocmdのnolistが効いてないんですがどうしてですか?
0213名無しさん@お腹いっぱい。
2015/05/22(金) 11:06:58.93autocmd FileType はバッファに読み込んだファイルの filetype が設定された時に実行されるコマンドだからじゃない?
:source ~/.vimrc を読み込んでも、元々バッファに読み込んであった javascript ファイルはそのままだから、filetype を再設定しないんじゃないかな。
0214名無しさん@お腹いっぱい。
2015/05/22(金) 23:55:02.32vim歴浅いからよくわからないんですけど
|SourcePre| Vimスクリプトを読み込む前
|SourceCmd| Vimスクリプトを読み込む前 |Cmd-event|
これってどっちも同じ機能ってことですか?それともtypoですか?
0215名無しさん@お腹いっぱい。
2015/05/23(土) 06:22:27.58それを一行にまとめて書く(バックスラッシュ除く)と、a 以降まったく色がつかない
その部分に色がつくことは本来は無いようだ
だがバックスラッシュで行継続すると
Vimはそれが「"FileType" に続く内容」であると認識できず、別の構文と解釈して色をつけてしまう
具体的にはExコマンドとみなして色付けしている模様
a (appendの略)、b (bufferの略)、c (changeの略)……
また python や ruby もコマンドとして存在する(:h :python 及び :h :ruby 参照)
けど cpp や html という名前のコマンドは存在しないからそれらには色がついていない、という事みたい
0216212
2015/05/24(日) 21:02:29.72autocmd SourcePre * setlocal nolistでsource vimrc時にnolistが効きました。
ただ拡張子を*にしているので*.js以外もnolistになります。
autocmd SourcePre *.js setlocal nolistと書いてもイベントが発火しません
"*.js"と囲ってもダメでした
どこか間違っているところをご指摘おねがいします。
0217名無しさん@お腹いっぱい。
2015/05/24(日) 22:31:35.55autocmd SourcePre *.js setlocal nolist は source するファイルが vim の設定ファイルじゃないからかな
0218名無しさん@お腹いっぱい。
2015/05/25(月) 00:36:38.25それをやるなら普通は
au BufRead,BufNewFile *.js setl nolist
とかこんな感じ
0219212
2015/05/25(月) 01:30:41.52最初に戻ってFileTypeイベントを使って目指できるようにダイアログを表示してみました
autocmd FileType javascript :!zenity --info
これを書くと、ファイル開いた時とsource ~/.vimrcしたとき両方ともダイアログが表示されました
イベントは発火されていました。
ってことはautocmd FileType javascript setlocal nolistでも発火しているはずなんですが、
setlocalが効いてないのがどうしてなのかわかりません。
>>218
:source ~/.vimrcした時にイベントが発火しませんでした
0220212
2015/05/25(月) 01:31:39.65最初に戻ってFileTypeイベントを使って目指できるようにダイアログを表示してみました
↓
最初に戻ってFileTypeイベントを使って目視できるようにダイアログを表示してみました
0221名無しさん@お腹いっぱい。
2015/05/25(月) 02:46:59.27こういうことけ?
jsのとき setl nolistしたい
js編集中にso .vimrcした場合setl nolistが解除されないようにしたい
:verb se nolistして最後にオプションが設定された場所みてみた?
0222名無しさん@お腹いっぱい。
2015/05/25(月) 14:21:30.520223212
2015/05/25(月) 22:36:10.55サンプルのためnolistを使っているだけです。
autocmd FileType javascript setlocal {old}を
autocmd FileType javascript setlocal {new}に変更した後にsource ~/.vimrcしても{new}が反映されてないので反映されるようにしたいのです
ファイルを開いた直後は{old}が効いてますが、vimrcを編集して{old}を{new}に書き換えてvimrcを再読込しても{new}が反映されないんです
:verb se nolistしても何も表示されませんでした
>>222
この4行しか書いてないです
filetype plugin indent on
set list
colorscheme blue
autocmd FileType javascript setlocal nolist
0224名無しさん@お腹いっぱい。
2015/05/26(火) 00:03:31.01下記のfileを作って起動して、読みこみ直してもイベントは鎮火されてるよ。
一番下のcomemntを外すとそういう事はできるけれど、
私は>>213が正しいような気がするけれど、しかし私は詳しくないので偉い人頼んだ。
filetype plugin indent on
set list
colorscheme blue
autocmd FileType javascript :r!pwd
"edit
0225名無しさん@お腹いっぱい。
2015/05/26(火) 04:40:52.76filetype plugin indent on
autocmd FileType javascript call append ('.', 'test')
そこで以下のどっちらかを打ち込むと打ち込むたびにtestが書き込まれていく。
setlocal filetype=javascript
setfiletype javascript
じゃあ上記のfileにそれをつけたせばと思ってsourceするとどうなるかというと
sourceするたびにtestを書き込む数が増えていってしまう。
その値を初期化できれば完成なんじゃない。
0226名無しさん@お腹いっぱい。
2015/05/26(火) 08:37:00.58少なくとも普通はこんな感じにする
aug Foo
au!
au FileType javascript setl nolist
aug END
こうしないとvimrc読み込むたびにauが増えていく
0227名無しさん@お腹いっぱい。
2015/05/26(火) 12:59:39.80横槍ですが、おかげさまでまた一つ知識が増えました。ありがとうございます。
どうやら人気がありそうな以下の二つの言語で試すと、以下のようにするとできるようです。
filetype plugin indent on
autocmd FileType php call append ('.', 'ririnrin')
augroup foo
autocmd!
autocmd FileType javascript call append ('.', 'rurunrun')
setlocal filetype=javascript
"setfiletype javascript
augroup end
0228名無しさん@お腹いっぱい。
2015/05/26(火) 13:43:41.390229名無しさん@お腹いっぱい。
2015/05/26(火) 13:55:06.54filetype plugin indent on
autocmd FileType php call append ('.', 'ririnrin')
augroup foo
autocmd!
autocmd FileType javascript call append ('.', 'rurunrun')
augroup end
if &filetype == 'javascript'
setlocal filetype=javascript
endif
0230名無しさん@お腹いっぱい。
2015/05/26(火) 14:11:35.21■ このスレッドは過去ログ倉庫に格納されています