Vim Part16
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2009/01/16(金) 00:56:51http://www.vim.org/
前スレ
Vim Part15
http://pc11.2ch.net/test/read.cgi/unix/1202050038/
関連情報は>>2-8あたり。
0404名無しさん@お腹いっぱい。
2009/06/21(日) 01:50:03それって原理主義だろ? って言うと「脊髄反射で否定する」って事さ。
0405名無しさん@お腹いっぱい。
2009/06/21(日) 02:06:56人を原理主義者呼ばわりする奴はキチガイの煽り屋だから相手しちゃダメ、てこと
0406名無しさん@お腹いっぱい。
2009/06/21(日) 03:05:53亀ですまん。
新規ファイルを作ったらなんか書きたいので、大抵すぐ挿入モードにしてる。
:enewだとか:spだとかの場合はまた違うけど。
0407371
2009/06/21(日) 03:08:36ええと、とりあえず言いたいのは
> なんで、新規ファイルの時は毎回 i を入力してるの?
毎回とは書いてないよ。大抵って書いてる。
その理由は>>406です。
0408名無しさん@お腹いっぱい。
2009/06/21(日) 03:13:27言いたいことは伝わってるかな…?
0409名無しさん@お腹いっぱい。
2009/06/21(日) 03:17:58それが脊髄反射。
0410名無しさん@お腹いっぱい。
2009/06/21(日) 03:31:27CTRLと組み合わせできるのは基本的には
http://ja.wikipedia.org/wiki/ASCII
ここのASCII制御文字の表にあるような文字だけ。
:echo getchar()
に続けてキーを押すとキーコードが確認できるので、それで CTRL のありなしで同じ結果になる場合は区別できないということ。
0411名無しさん@お腹いっぱい。
2009/06/21(日) 03:37:58ありがとうございます。
これってvimというよりはterminalの制限ですよね。GUIバージョンでも同じ制限があるんですか。残念。
かわりに Ctrl+¥ や Ctrl+_ を使う事にします。
あと、現在vimスクリプトに挑戦しているんですけど、「カーソルのある場所の文字」を見て分岐するような関数はどうやって書くのでしょうか。
if カーソル状の文字が '<' なら
関数foo()を実行
else
関数bar()を実行
end
みたいなのです。
重ね重ねすみませんが、よろしくお願いします。
0412名無しさん@お腹いっぱい。
2009/06/21(日) 03:48:43strpart(getline("."),col("."),1)
で取れたよ
0413名無しさん@お腹いっぱい。
2009/06/21(日) 03:51:32strpart(getline("."),col(".")-1,1)
0414名無しさん@お腹いっぱい。
2009/06/21(日) 10:49:28GUI版なら設定可能だよ。できないというのであればもう少し使用環境を詳しく書いて。
> カーソルのある場所の文字
>>413の方法もあるけど私はgetline('.')[col('.')-1]の方が好みかな。
他にも方法はあるけどややこしいだけだから気にしなくてもいいよ。
0415名無しさん@お腹いっぱい。
2009/06/21(日) 11:59:56ありがとうございます。getline('.')[col('.')-1] を使うことにします。
それでですね、カーソル上の文字によって、iまたはaを使いたいんですが、うまくいきません。
""" 別の関数(ここではstrftime())の実行結果を挿入する。
""" カーソル上の文字が '@' ならその右側に、それ以外なら左側に挿入する。
function Func1()
let ch = getline('.')[col('.')-1]
if ch == '@'
"exec "normal a<C-r>=strftime('%c')<CR>"
return "a<C-r>=strftime('%c')<CR>"
else
"exec "normal i<C-r>=strftime('%c')<CR>"
return "i<C-r>=strftime('%c')<CR>"
endif
endfunction
":nmap <C-¥> :call Func1()
:nmap <expr> <C-¥> Func1()
これを実行すると、<C-r>=strftime('%c')<CR> がそのまま挿入されてしまいます。
どなたか助けてください。
0416412
2009/06/21(日) 13:41:53おお、そういう感じに取れるんですね。一文字の場合はそっちがすっきりしてよさげです。
>>415
\<C-R>という風に記述してみたらどうでしょうか?
0417名無しさん@お腹いっぱい。
2009/06/21(日) 19:04:42>¥<C-R>という風に記述してみたらどうでしょうか?
それで行けました。さんくすです。
>>414
>GUI版なら設定可能だよ。できないというのであればもう少し使用環境を詳しく書いて。
できますか? 環境はMacVM.appです。vim7.2相当。
0418名無しさん@お腹いっぱい。
2009/06/21(日) 20:02:40たとえば
request_method
と入力して、なにかキーを押すと
REQUEST_METHOD
となるようにしたいです。
0419名無しさん@お腹いっぱい。
2009/06/21(日) 20:14:45viw~
0420名無しさん@お腹いっぱい。
2009/06/21(日) 20:16:17viwU
でどうでしょ
0421名無しさん@お腹いっぱい。
2009/06/21(日) 23:02:21カーソルがどんどん左に行ってしまうんですが、なんか止める方法ナイスかね。
0422名無しさん@お腹いっぱい。
2009/06/21(日) 23:12:030423名無しさん@お腹いっぱい。
2009/06/21(日) 23:22:25a [esc] a [esc] a [esc] a [esc]
と入力するようにすればいいんじゃナイスかね
0424名無しさん@お腹いっぱい。
2009/06/22(月) 10:37:14なんでそんな入力してるの?
0425名無しさん@お腹いっぱい。
2009/06/22(月) 10:43:410426名無しさん@お腹いっぱい。
2009/06/22(月) 10:47:18:map
とすると、なんかカスタマイズしたぶんだけが表示されて、一覧ではないようです
イメージ的にはEmacsの C-h l が欲しいんですけど。
0427名無しさん@お腹いっぱい。
2009/06/22(月) 10:49:340428名無しさん@お腹いっぱい。
2009/06/22(月) 10:55:20ありがとうございます。これを参考に vbU でやってみました。
あとカーソルが移動しちゃってるので、移動しないようにしたいのですが、どうしたらいいでしょうか。
vbUw とすると、カーソルが次の単語の先頭に移動しちゃいます。
0429名無しさん@お腹いっぱい。
2009/06/22(月) 11:19:00vbUw じゃなくて vbUe でよさそうです。eなんていうのがあるとは知りませんでした。
で、関数にしてみたんですけど、どうでしょうか。添削お願いします。
function MyUpcaseWord()
normal vbUe
endfunction
":imap <C-q><C-u> <C-r>=MyUpcaseWord()<CR>
:imap <C-q><C-u> <Esc>:call MyUpcaseWord()<CR>a
:nmap <C-q><C-u> :call MyUpcaseWord()<CR>l
0430名無しさん@お腹いっぱい。
2009/06/22(月) 12:56:07require_function<ESC>としたときにカーソルはnにあるのでiwを使っていました。
require_function<ESC>vbとすると、末尾のnは選択されないように思うのですが、そのへんは大丈夫です?
0431名無しさん@お腹いっぱい。
2009/06/22(月) 16:20:10手元の環境では、「n」にカーソルがある状態で vb とすると、「n」も含めて選択されました。
vimのバージョンによって違うのかもしれないですね。
けどvimスクリプトは難しい
0432名無しさん@お腹いっぱい。
2009/06/25(木) 07:17:42かつその一覧表示から該当する行にジャンプするようなvimスクリプトってありますか。
イメージとしては、現在編集中のバッファから '^¥s*def ¥w+' や '^¥s*class ¥w+' に一致する行を一覧表示させ、
そこからクラス定義やメソッド定義に簡単にジャンプしたいです。
0433名無しさん@お腹いっぱい。
2009/06/25(木) 07:30:06tagexplorer.vim
あたりを使えばよいように思う。
0434名無しさん@お腹いっぱい。
2009/06/25(木) 09:05:50:vimgrep /^\s*\<\%(class\|def\)\> \w\+/j % | cwindow
とかでどうですか?
0435名無しさん@お腹いっぱい。
2009/06/25(木) 12:42:56朝はやくからありがとうございます。
ctagsはあらかじめ実行しておく必要があるし、ちょっと目的とは違うようなので、
:vimgrep のほうを使うことにします。
:vimgrep は、検索結果のウィンドウでEnterキーを押したら該当箇所にジャンプしてくれて便利ですね。
これをカスタマイズして、ジャンプすると同時に検索結果のウィンドウを閉じるような関数をつくり、
それを <C-j> とかに割り当てたいんですけど、どうしたらいいでしょうか。
検索結果のウィンドウでだけキーバインドを変える方法があれば教えてください。
0436名無しさん@お腹いっぱい。
2009/06/25(木) 13:40:440437名無しさん@お腹いっぱい。
2009/06/25(木) 14:39:36わざわざ関数を作ってマップする必要はないと思うけど
:autocmd BufReadPost quickfix nnoremap <silent> <buffer> <C-j> <CR>:cclose<CR>
0438名無しさん@お腹いっぱい。
2009/06/25(木) 21:22:12目的見てからtaglist勧めたのに。すまんこ
0439名無しさん@お腹いっぱい。
2009/06/25(木) 22:29:19どうもありがとうございます。
>:autocmd BufReadPost quickfix nnoremap <silent> <buffer> <C-j> <CR>:cclose<CR>
自分なりに調べたところ、
・:autocmd を使って、quickfix というバッファでBufReadPost イベントが発生したときに、
・nnoremp を使って C-j にコマンドをバッファローカルに割り当てる
ということでいいでしょうか。
うーん難しい。
>>438
こちらこそすみません。ctagsは複数のファイルを横断的に検索するのと、
あらかじめ実行しておかなければいけないから変更直後には使用できないと
思ってやめました。
例が def と class だったので ctags のほうをお勧めされたと思うのですが、
実際にはそれ以外の wiki や html や不定形のファイルも扱いたかったので。
0440名無しさん@お腹いっぱい。
2009/06/25(木) 22:47:34うん。ctagsを使うものを勧めた理由はそういうわけでした。
quickfixの方がよかったですね。おさわがせしましたよー
0441名無しさん@お腹いっぱい。
2009/06/26(金) 00:27:04教えてくれた人超サンクスです 未来が30パーセント明るくなった
:autocmd BufReadPost quickfix nnoremap <buffer> <C-p> k
:autocmd BufReadPost quickfix nnoremap <buffer> <C-n> j
これで C-p と C-n で上下に移動できるようになったウヒョー
あと追加で質問させてください。
・quickfix のウィンドウの高さを変えるにはどうしたらいいですか。
:help cwindow は意味不明でした。
・quickfix のウィンドウ内だけ、カーソルのある行の背景色を変えるにはどうしたらいいですか。
カーソル行の色を変えることができると、視認性が上がりすごく選択しやすくなります。
・quickfixでは、行の先頭の空白が取り除かれるようなんですが、これを取り除かないように変更できますか。
行頭の空白が取り除かれると、インデントがわからなくなってしまいます。
・:vimgrep /^[ ¥t]*¥(class¥|def¥) /j % | cwindow
をキーマップにバインドするかっこいい方法は何があるでしょうか。
:nmap <C-_> :vimgrep /^[ ¥t]*¥(class¥|def¥) /j % | cwindow
としたけどうまくいかなかったので今は
function MySearch()
:vimgrep /^[ ¥t]*¥(class¥|def¥) /j % | cwindow
endfunction
:nmap <C-_> :call MySearch()<CR>
としています。もっといい方法があれば教えてください。
おしえてくんでごめんなさい
0442名無しさん@お腹いっぱい。
2009/06/26(金) 00:57:040443名無しさん@お腹いっぱい。
2009/06/26(金) 02:07:31それだけ色々やりたいのならプラグイン入れた方がいいんじゃない?
ttp://sites.google.com/site/fudist/Home/grep
これのBGrepとかいいと思うよ。
0444名無しさん@お腹いっぱい。
2009/06/26(金) 14:43:31> :nmap <C-_> :vimgrep /^[ ¥t]*¥(class¥|def¥) /j % | cwindow
最後に <CR> を忘れてるだ
0445名無しさん@お腹いっぱい。
2009/06/26(金) 16:41:59au QuickfixCmdPost vimgrep cw
してないの?
0446名無しさん@お腹いっぱい。
2009/06/26(金) 21:32:51http://d.hatena.ne.jp/h_east/20090205 のコメントのところ
autocmd QuickfixCmdPost [^l]* copen
autocmd QuickfixCmdPost l* lopen
0447名無しさん@お腹いっぱい。
2009/06/28(日) 22:47:26:nmap ホニャララ
と書くのと
nmap ホニャララ
と書くのと、2通りあるみたいなんですが、違いはなんでしょうか。
0448名無しさん@お腹いっぱい。
2009/06/29(月) 15:49:54: はexのコマンド
0449名無しさん@お腹いっぱい。
2009/06/29(月) 20:16:550450名無しさん@お腹いっぱい。
2009/07/03(金) 18:52:53これをCTRLを押さずに候補移動できないでしょうか?
CTRL押しっぱなしだと指が痛くなります。
0451名無しさん@お腹いっぱい。
2009/07/03(金) 19:08:46autocomplpop
0452450
2009/07/03(金) 21:25:17CTRL-N or CTRL-Pで補完リストにフォーカスを移動し、その後はnかpで上下移動したいのです。
ttp://blog.blueblack.net/item_164
こちらに記載してある「TABキーで補完する」設定をいじってnキーで移動するようにしてみましたが、
これだとnが入力できなくなります。
0453名無しさん@お腹いっぱい。
2009/07/04(土) 00:23:490454名無しさん@お腹いっぱい。
2009/07/07(火) 00:12:11「/」を含む文字列を検索するのってどうすればいいんですか?
0455名無しさん@お腹いっぱい。
2009/07/07(火) 00:13:39例えば
/'/home/hoge'
とかみたいに楽にできるといいんです
0456名無しさん@お腹いっぱい。
2009/07/07(火) 00:52:33?で検索すればよいという何ともいえない解決方法が見つかったよ。
なもんで、
?/home/hoge<CR>
/<CR>(検索方向を下向きにしたい場合)
とやればいいのかな。ちょっと手間だけども。
0457名無しさん@お腹いっぱい。
2009/07/07(火) 01:00:11/home.hogeみたいにして曖昧に検索してる
0458名無しさん@お腹いっぱい。
2009/07/07(火) 01:34:550459名無しさん@お腹いっぱい。
2009/07/07(火) 14:04:14backspace=1
を設定すると、CTRL+Uによる削除が機能しません。
backspace=2
であれば従来通り行頭まで削除されます。
7.1までは期待した通りの動作なんですが、
バックスペース関連の動作が変更になったんですかね?
0460名無しさん@お腹いっぱい。
2009/07/07(火) 14:27:570461名無しさん@お腹いっぱい。
2009/07/07(火) 15:37:28探してみたんですけど見つからないんですよね。
Cygwin版のvim7.2も試してみたのですが、こちらは期待した通りの動作でした。
となるとKaoriYa版の問題かも知れませんね。
あちらに問い合わせるべきですが、BBSも閉鎖しているようですし…
0462名無しさん@お腹いっぱい。
2009/07/07(火) 21:32:06「vim Part3」
http://pc12.2ch.net/test/read.cgi/software/1224769266/
こっちで聞けばKaoriYa版の中の人にレスしてもらえるかも。
0463名無しさん@お腹いっぱい。
2009/07/07(火) 21:41:300464名無しさん@お腹いっぱい。
2009/07/07(火) 21:43:49そちらで聞いてみます。
ありがとうございました。
0465名無しさん@お腹いっぱい。
2009/07/08(水) 23:46:31辞書のファイル側の文字列について質問です。
test
apple
hoge/apple/site
/が補完対象にならないのですが
どうすればいいのでしょうか・・・
0466名無しさん@お腹いっぱい。
2009/07/09(木) 03:10:27なのか?
0467名無しさん@お腹いっぱい。
2009/07/11(土) 00:38:08止めさせたい場合、どのオプションを設定すれば良いのでしょうか。
現象例:
以下3行をヤンク
./foo arg1 arg2 arg3 \
arg4 arg5 \
arg6
↓
ペーストするとこのように変形される
./foo arg1 arg2 arg3 @@@ arg4 arg5 @@@ arg6
0468名無しさん@お腹いっぱい。
2009/07/13(月) 11:12:32http://vim-users.jp/2009/07/hack-39/
.gvimrc .vimrc あわせても 278 だった。まだまだ精進しなくては。
0469名無しさん@お腹いっぱい。
2009/07/13(月) 17:13:13おれ91
rcファイルのリアル行数と戦闘力(レベル)は比例しないよ。
# emacsだったらそうかもしれんが
vimの場合はほぼデフォルトのままで如何に使用する本人がレベルアップするかだと思う。
500行超えている人はむしろ素人なんじゃないだろうか?
0470名無しさん@お腹いっぱい。
2009/07/13(月) 17:37:06RMSは0行だ
0471名無しさん@お腹いっぱい。
2009/07/13(月) 17:58:230472名無しさん@お腹いっぱい。
2009/07/13(月) 18:22:08ソースは?
0473名無しさん@お腹いっぱい。
2009/07/13(月) 18:30:560474名無しさん@お腹いっぱい。
2009/07/13(月) 18:47:100475名無しさん@お腹いっぱい。
2009/07/13(月) 23:47:410476名無しさん@お腹いっぱい。
2009/07/13(月) 23:50:290477名無しさん@お腹いっぱい。
2009/07/14(火) 00:38:500478名無しさん@お腹いっぱい。
2009/07/14(火) 00:40:15思いやりがあるというかなんというかw
0479名無しさん@お腹いっぱい。
2009/07/14(火) 00:43:230480名無しさん@お腹いっぱい。
2009/07/14(火) 00:49:36その味が合わない人は味を調整すればいい
0481名無しさん@お腹いっぱい。
2009/07/14(火) 00:49:38妄想で言っただけなら馬鹿丸出し
0482名無しさん@お腹いっぱい。
2009/07/14(火) 00:50:510483名無しさん@お腹いっぱい。
2009/07/14(火) 00:53:330484名無しさん@お腹いっぱい。
2009/07/14(火) 00:57:270485名無しさん@お腹いっぱい。
2009/07/14(火) 02:57:12味覚は犬(人)それぞれ
0486名無しさん@お腹いっぱい。
2009/07/15(水) 07:23:20OS、使用アプリケーション、バージョン、再現手順など詳しく
0487467
2009/07/16(木) 00:55:22レスありがとうございます。
RHEL5.2 の標準搭載Vimなので、Ver.7系列だったと思います(今手元にないので未確認です)。
WindowsXPからTera Term4.62でssh2接続し、Makefileの編集を行っていたときに現象確認しました。
まだ初期設定(.vimrc, .vim/なし)では試せていないのですが、
通常は起きない現象との認識で良いでしょうか?
0488名無しさん@お腹いっぱい。
2009/07/16(木) 02:47:55通常は起きませんよ。
0489名無しさん@お腹いっぱい。
2009/07/16(木) 06:27:500490名無しさん@お腹いっぱい。
2009/07/16(木) 08:35:010491名無しさん@お腹いっぱい。
2009/07/16(木) 10:59:470492名無しさん@お腹いっぱい。
2009/07/16(木) 11:02:04あ、書いてから気付いた。スレチか。
0493名無しさん@お腹いっぱい。
2009/07/16(木) 14:42:36どうすればいいでしょうか?
:'<,'>s/^$//g
では何も起りませんでした。
0494名無しさん@お腹いっぱい。
2009/07/16(木) 14:55:12'<,'>g/^$/d
0495名無しさん@お腹いっぱい。
2009/07/16(木) 15:43:510496467
2009/07/17(金) 00:13:18原因は、以前導入したプラグインのyankring.vimのバグでした。
最新版に更新したら解決しました。
どうもお騒がせしました。
0497名無しさん@お腹いっぱい。
2009/07/19(日) 00:28:36.vimrcを指定しただけだと、.vim/plugin などを読んでくれず困ってます。
0498名無しさん@お腹いっぱい。
2009/07/19(日) 00:56:560499名無しさん@お腹いっぱい。
2009/07/19(日) 06:10:48> 指定した場所の .vim/ を使ってもらうにはどうすれば
適当なオプションはないから--cmdで明示的に指定するしかないかな。
vim -u ... --cmd 'set runtimepath^=dokka/.vim | set runtimepath+=dokka/.vim/after'
とか。
> .vimrcを指定しただけだと、.vim/plugin などを読んでくれず困ってます。
これはどういう動作を期待しているの?
'runtimepath'にあるpluginなら-uでvimrc指定しようがしまいがロードされるよ。
0500名無しさん@お腹いっぱい。
2009/07/19(日) 12:29:23特定の拡張子のファイルのときには保存時に自動的にchmod +xをしておいて欲しいのですが、
ファイル保存時に自動実行したいコマンドはどのように設定すれば良いのでしょうか?
ご教授願います。
また、Vimscriptの書き方が詳しく解説されているサイトが有りましたら
教えてください。
0501名無しさん@お腹いっぱい。
2009/07/19(日) 15:35:170502名無しさん@お腹いっぱい。
2009/07/19(日) 15:36:49ってのを
:help 移動
ってかんじで検索したいんですがむりでしょうか?
0503名無しさん@お腹いっぱい。
2009/07/19(日) 15:41:09検索にひっかからないからです
■ このスレッドは過去ログ倉庫に格納されています