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

Vim Part14

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2007/03/19(月) 20:09:27
立ててみた。

http://www.vim.org/

前スレ
http://pc10.2ch.net/test/read.cgi/unix/1151423973/

0781名無しさん@お腹いっぱい。2007/11/22(木) 12:09:00
キーワードを2つ以上使い分けてnやNを利用できないでしょうか?

例えば検索キーがword1、word2の二つあったとすると、
・nを押したらカーソル位置以降のword1を検索
・何かのキーを押したらカーソル位置以降のword2を検索

という風にしたいのです。
よろしくお願いします。
0782名無しさん@お腹いっぱい。2007/11/22(木) 12:34:36
/のあとカーソルキーで検索履歴をたどるのではダメ?
0783名無しさん@お腹いっぱい。2007/11/22(木) 13:15:09
別のウィンドウでもうひとつvim動かした方がよくない?
0784名無しさん@お腹いっぱい。2007/11/22(木) 14:25:13
履歴のほうならhistget("search",-2)で一つ前の検索語を取得できるな
helpで
> |:history|によって出力される{num}番目のエントリを、再
> 度実行するための":H {num}"というコマンドを定義する。
> command -nargs=1 H execute histget("cmd",0+<args>)

というのが紹介されているので、これをいじって

command -nargs=1 S execute "/" . histget("search",0-<args>)
とすれば:S のあとに入力された数だけ直前の検索語を検索できる
ちなみに:S 1は現在の語なので :S 2 で一つ前ね
:S のとき : S 2 と動作するように改良すればトグル動作にできる


プラグインだとmultiplesearchプラグインなら検索語を色分けできる
0785名無しさん@お腹いっぱい。2007/11/22(木) 14:26:36
:history
:history search
histget()
あたりのhelpよめばほかに何かいいものが浮かぶかもしれない
0786名無しさん@お腹いっぱい。2007/11/22(木) 22:26:08
>>780
ありがとうございます!できました!
0787名無しさん@お腹いっぱい。2007/11/23(金) 20:33:28
/search1/;/search2/
がよくわからん。だれか教えてけれ
:help //; でドキュメントは見れるんだけどな
0788名無しさん@お腹いっぱい。2007/11/23(金) 23:19:41
>>787
何が分からないのかがよくわかんないんだけど ";"のこと?
範囲指定の","と";"の違いですか?もしそうなら cmdline-rangesを参考に。
そうじゃなければスマソ。
0789名無しさん@お腹いっぱい。2007/11/24(土) 14:25:41
テンプレートを入力するプラグインを書きました。以下宣伝です。
http://ripjohn.net/program/vim/template.zip
http://ripjohn.net/program/vim/index.html#template
内容:
>>354みたいに、テンプレートの展開には短縮入力機能を使います。
・ただ:iabbrevコマンドは特殊文字の入力がしんどいので(<CR>とか<lt>みたいに)、
  文字列値の式を引数にとって、変換して:iabbrevに渡すコマンドを用意しました。
・あとは、プレースホルダに飛ぶコマンド(<S-CR>, <C-CR>)と置き換えるコマンド(<CR>)だけです。
・プレースホルダには、デフォルトで入力される文字列を指定できます。
例:
「:StringAbbrLocal fopen] 'fopen(<+fname+>, <+mode:"r"+>)<++>'」で登録。
挿入モードで「fopen]」と打って<Esc>すると上記の通り展開される。
<S-CR>でひとつめのプレースホルダに移動、<CR>で入力開始。
再度<S-CR>でふたつ目のプレースホルダに。<CR>で「"r"」が挿入されて入力開始。
再々度<S-CR>で最後のプレースホルダ「<++>」が削除され、入力開始。

簡素ですが、コード書きやマークアップ文書の編集には大体間に合うんじゃないかと思います。
ご意見いただければ幸いです。
0790名無しさん@お腹いっぱい。2007/11/24(土) 14:34:56
>>760
折り畳みで間に合うんじゃないですか? cf. :help folding
例:
 vim: set foldmethod=marker :
1章 供犠 {{{
1.1 供犠の機能 {{{
  ほげほげ
 }}}
1.2 供犠の危機 {{{
  うんたらかんたら
 }}}
}}}
2章 オイディプスと贖罪のいけにえ {{{
  ふーばー
}}}

って感じで。
foldmethod=exprで、foldexprに判別式を設定すれば
もうちょっとスマートに書けます。
07917812007/11/24(土) 15:17:18
レスありがとうございます。

>>781
シーケンシャルでなくランダムアクセスでやりたいです。
Googleツールバーのように、複数のキーワードのボタンが勝手に出来て、
好きなのを押せばそのキーワードでページ内検索できるのがすごく便利だなと思ったので。
mで登録、`で移動と同様のやり方で検索キーを使い分けられればベストです。

>>784
ありがとうございます!これでほぼ解決できました。
:S2などでキーを切り替えてn、Nで次々に飛べるのでやみつきです。

0792名無しさん@お腹いっぱい。2007/11/25(日) 22:59:02
>>784
これどうよ
検索履歴10個を候補にステータスラインに出す
/コマンドって履歴をステータスラインに出すほうがいいよね

let s:size = 10
function! s:S_completionList(A,L,P)
return join(map(range(1,s:size),'histget("search",0-v:val)'),"\n")
endfunction

command! -complete=custom,s:S_completionList -nargs=1 S exec "/".<q-args>

0793名無しさん@お腹いっぱい。2007/11/27(火) 21:37:00
すいません、素朴な疑問があるのですが

カーソル移動をホームポジションに割り当てたところで、あるいはwやbを用意したところで
エスケープキーを押す必要があると、かえって使いにくいと思わないですか?

Ctrl+M や Ctrl+H みたいなことができるなら、ギリギリまでホームポジションに手を置いたまま作業ができそうですが
いちいちEscまで手を伸ばすのは結構しんどいと思うのですが・・・

つまらない事かもしれませんが、Vimをバリバリ使っている人がどう思ってるのか聞きたいです。
0794名無しさん@お腹いっぱい。2007/11/27(火) 22:09:26
Ctrl+[ を使うからホームポジション崩れませんがな
0795名無しさん@お腹いっぱい。2007/11/27(火) 22:17:58
Ctlr+C使ってる
0796名無しさん@お腹いっぱい。2007/11/27(火) 22:27:13
Ctrl+C 潰しちゃあかんやろ
0797名無しさん@お腹いっぱい。2007/11/27(火) 22:27:30
エスケープキーはファンクションキーと同じでvimに限らずほとんど触ることがないな
一応ついてるキーボードだけど
0798名無しさん@お腹いっぱい。2007/11/27(火) 22:40:20
" alt + i 連打で () で囲まれた範囲を拡大選択
nnoremap <M-i> vib
vnoremap <M-i> ib

" alt + shift + i 連打で {} で囲まれた範囲を拡大選択
nnoremap <M-I> viB
vnoremap <M-I> iB


いまこういう設定をしているんだけどこれを <M-i> 連打するだけで
内側からテキストオブジェクトの範囲を拡大して選択するいいアイディアって無いものだろうか

function test()
{
alert("test");
}

文字列 test の中にカーソルがある時に <M-i> を一回押すと test が選択されて
もう一回 <M-i> を押すと今度は "test" が選択されてもう一度押すと alert("test"); が選択される感じ
07997932007/11/27(火) 23:14:41
あうあうー
こんな便利なキーがあったとは・・・orz
0800名無しさん@お腹いっぱい。2007/11/29(木) 07:09:24
エスケープ押し慣れてるから
ホームポジションが崩れるという意識が無い。
0801名無しさん@お腹いっぱい。2007/11/29(木) 12:47:40
まぁ、OSレベルでキィの位置変えるわな。Ccontrolもどうせ変えなきゃ駄目だし。
0802名無しさん@お腹いっぱい。2007/11/29(木) 21:03:06
hjklの右のホームポジションが崩れなければ全然OK。
左は結局shift押したりctrl押したり!"#$%&押したりで
変則的なので慣れた。何気に句読点を打つようにESCを
押している気がする。
0803名無しさん@お腹いっぱい。2007/11/29(木) 21:34:14
入力が終わったときにESCする癖がついたため、ダイアログウィンドウとかに文字を
入力していてキャンセルしてしまったことが何度となくあるorz
0804名無しさん@お腹いっぱい。2007/11/29(木) 22:26:59
あるあるw
0805名無しさん@お腹いっぱい。2007/11/30(金) 10:00:40
将来のPCで音声入力機能が標準になったら、
入力モード入りで い! あ!とか言うようになるだろうか

0806名無しさん@お腹いっぱい。2007/11/30(金) 14:36:00
くまのり!
ししせ!
けいる!
0807名無しさん@お腹いっぱい。2007/11/30(金) 18:32:18
Ctrlが必要になるエディタは絶滅するな。
0808名無しさん@お腹いっぱい。2007/12/01(土) 12:13:33
同意。
絶滅してほしくないよな。
0809名無しさん@お腹いっぱい。2007/12/01(土) 13:58:18
入力が音声になっても編集はならんだろう
と不粋レス
0810名無しさん@お腹いっぱい。2007/12/01(土) 21:49:25
キーボードは土方しか使わない時代はきそうだ
0811名無しさん@お腹いっぱい。2007/12/01(土) 22:16:14
ってことは俺たちは使わなきゃいかんのだな
0812名無しさん@お腹いっぱい。2007/12/05(水) 00:04:08
以下のファイルがあるとします。
-----------
aaa
bbb
ccc
-----------

これを、文字列置き換えを使って、下記のようにしたいと考えています。
-----------
aaa bbb ccc
-----------

こうするために、
:% s/\n/ /g
としてみたのですが、駄目でした。

このような置き換えってどのようにすればよいのでしょうか?

0813名無しさん@お腹いっぱい。2007/12/05(水) 00:25:01
そんなのJを打ち続ければ(ry

うちでは問題なく%s/\n/ /gで動くよ
(gvim@win)
0814名無しさん@お腹いっぱい。2007/12/05(水) 00:41:24
>>812
:%s/$\n/ /g
かな
0815名無しさん@お腹いっぱい。2007/12/05(水) 00:44:46
$ の意味なかったorz
0816名無しさん@お腹いっぱい。2007/12/05(水) 00:49:22
:%s/\n//gでもできるけど:%jというのもある。
0817名無しさん@お腹いっぱい。2007/12/05(水) 01:14:59
>>816
できました!
ありがとうー
0818名無しさん@お腹いっぱい。2007/12/05(水) 23:17:01
vimgrepした結果を逆順に表示する事って出来る?
0819名無しさん@お腹いっぱい。2007/12/05(水) 23:26:15
なんで812の方法でうまくいかなかったんだろ
単に%とsの間のスペースなのか?
812自身は>>816の解決法で満足したようだけど、
なんか改行コードによって失敗したりするのかも?
0820名無しさん@お腹いっぱい。2007/12/05(水) 23:53:11
うちではスペースがあっても普通に動くな
なんでだろうなぁ
0821名無しさん@お腹いっぱい。2007/12/06(木) 09:00:55
X上でgvim使ってる場合、Firefoxでコピーした文字列とかは
クリップボードの内容が"+か"*レジスタに入ります。
unnnamedしても
0822名無しさん@お腹いっぱい。2007/12/06(木) 09:04:49
途中で切れた、、

set cb=unnamedしても
""には入らなくて、firefoxのフォームの文章をgvimで編集して戻すとき

<FF>C-A,C-C

gvim "+P <編集> gg"+yG

<FF>C-V

いちいち"+つけるのが面倒すぎです、、
winのgvimみたいにunnamedを動作させれませんか?
0823名無しさん@お腹いっぱい。2007/12/06(木) 13:37:08
search()関数は折りたたみを展開しないので、
nnoremap <silent> n :call search('')<CR>
nnoremap <silent> N :call search('', 'b')<CR>
とかしておくと折りたたみを多用する場合はいいかも。
なんか副作用があるかもしれないけど。
0824名無しさん@お腹いっぱい。2007/12/06(木) 14:36:25
>>818
:vimgrep した結果は、quickfixlistなので、getqflist()で取得できる。

これを逆ソートしてsetqflist()で再びquickfixlistにいれてやると
逆順になったものが:clistなんかで取得できるね

sort() getqflist() setqflist() あたりを調べれば簡単にかけると思う
0825名無しさん@お腹いっぱい。2007/12/07(金) 00:08:21
command! -nargs=* RevGrep vimgrep <args> | call setqflist(reverse(getqflist())) | cc 1

こんな感じか
0826名無しさん@お腹いっぱい。2007/12/07(金) 19:23:28
>>824-825
出来ました!ありがとう
0827名無しさん@お腹いっぱい。2007/12/07(金) 21:40:50
>>825
うめーな
reverse()は知らなかった
0828名無しさん@お腹いっぱい。2007/12/09(日) 13:37:00
プロポーショナルフォント使えるようにならないかな…
0829名無しさん@お腹いっぱい。2007/12/09(日) 13:51:21
矩形モードとかどうすりゃいいんだよ>プロポーショナル
0830名無しさん@お腹いっぱい。2007/12/09(日) 14:39:47
エディタでプロポーショナルフォントを使いたがるなんて
頭にバグがある。
0831名無しさん@お腹いっぱい。2007/12/09(日) 14:44:15
>>830に同意、使いたがる理由がわかんない
でも、そういや秀丸とかプロポーショナル使えるんだっけ?
あれ、矩形処理とかどうやってんの?
0832名無しさん@お腹いっぱい。2007/12/09(日) 15:22:47

0833名無しさん@お腹いっぱい。2007/12/09(日) 16:59:11
>>831
>あれ、矩形処理とかどうやってんの?
秀丸でプロポーショナルは使えるけど、
その代わり矩形処理(BOX選択と呼んでいる)はできなくなると
ヘルプに注意書きがある。
0834名無しさん@お腹いっぱい。2007/12/09(日) 17:04:12
>プロポーショナルフォント使えるようにならないかな…
言いだしっぺの法則... というか自分で作らん限りは出てこないだろうな
0835名無しさん@お腹いっぱい。2007/12/09(日) 17:51:07
>>833
なるほど、納得
犠牲はつきもの、ってことか
綺麗は綺麗なんだろうけど、必要性を感じないな、プロポーショナルフォント

必要だという人は、見栄えにこだわってんの?
それともAAとか作りたいのかね
0836名無しさん@お腹いっぱい。2007/12/09(日) 18:06:16
ぐぐったらEmEditorはプロポーショナルフォントで矩形選択できるみたい
AA職人にとっては多分便利なんだろうな
0837名無しさん@Vim%Chalice2007/12/09(日) 19:24:30
つまりChaliceでAA職人したいという話だったわけか!
0838名無しさん@お腹いっぱい。2007/12/09(日) 19:30:06
なるほど、その理由ならちょっとだけ納得いくな
0839名無しさん@お腹いっぱい。2007/12/09(日) 21:47:30
テキストビューアとして使うなら、プロポーショナルフォントもいいと思う
0840名無しさん@お腹いっぱい。2007/12/10(月) 15:08:28
コード書くのにもプロポーショナル結構いいよ。
なんといっても密度が高い。
0841名無しさん@お腹いっぱい。2007/12/10(月) 18:06:07
最後に閉じたウィンドウ位置・サイズで起動する設定はどうすればよいでしょうか?
0842名無しさん@お腹いっぱい。2007/12/11(火) 00:47:57
.jvimrcで以下のように設定したときに、
:map! hoge #333333

実際に、jvimでhogeと入力すると、
K33333
と入力されます。

なぜ、#333333と入力されずに、K33333と入力されるのでしょうか?
0843名無しさん@お腹いっぱい。2007/12/12(水) 02:40:58
Too obsolete!
0844名無しさん@お腹いっぱい。2007/12/12(水) 03:05:37
>>842
jvimは、設定ファイル.jvimrcを使うんだ?

ところで試してみたら、hogeと入れたら、#333333と展開されたぞ。
環境に問題があるんじゃないかね?
0845名無しさん@お腹いっぱい。2007/12/13(木) 23:40:06
if(foo)
なんて文があって、カーソルを右括弧に持っていくと
対応する左括弧が反転するなんてことできるでしょうか?
0846名無しさん@お腹いっぱい。2007/12/14(金) 01:07:19
もちろんできますよ。
0847名無しさん@お腹いっぱい。2007/12/14(金) 01:20:10
:set showmatch
0848名無しさん@お腹いっぱい。2007/12/14(金) 09:15:26
>>841
'sessionoptions'に"winpos"と"winsize"が含まれていれば、セッションファイルに
ウィンドウ位置とサイズが保存されるらしい。
これはデフォルトで含まれているので、これ:
http://vimwiki.net/?tips%2F53
をやっとけば多分望みの動作になるかと。

>>845
Vim7ではデフォルトでなると思うけど。
http://www.ac.cyberhome.ne.jp/~yakahaira/vimdoc/pi_paren.html
0849名無しさん@お腹いっぱい。2007/12/14(金) 23:04:27
matchitを入れて set ft=cpp するとこのコードで%で2行目と4行目間をジャンプできる
というんだけど、うちではできないみたい。Vim 7.1.patch 1-145。matchit最新
ちゃんとできる人いる?
Foo()
{
// {
}
http://article.gmane.org/gmane.editors.vim.devel/17079
0850名無しさん@お腹いっぱい。2007/12/14(金) 23:27:14
let b:match_words = &matchpairs
した?
0851名無しさん@お腹いっぱい。2007/12/14(金) 23:36:44
それだった。ありがと。
:h matchit-activateに
>Now, |b:match_words| is defined in many of the default |filetype-plugin|s instead.)
とあるけど c.vim は設定してくれないのね。
0852名無しさん@お腹いっぱい。2007/12/15(土) 00:08:35
ftp://ftp.vim.org/pub/vim/runtime/ftplugin/c.vim
ランタイムファイルはちょこちょこ更新されてんだけど
いちいちリリースしてくれないしCVSアクセスもないのよね…
0853名無しさん@お腹いっぱい。2007/12/15(土) 00:40:56
http://www.vim.org/runtime.php
なんかaapでさっくり更新でけた
いままでの不満がいっきに解消された気分
0854名無しさん@お腹いっぱい。2007/12/15(土) 02:46:00
AAPを普及させるためのBramの陰謀ということか?
0855名無しさん@お腹いっぱい。2007/12/15(土) 08:38:07
wgetでミラーとかでも大丈夫そうだけどどうなんだろう
まぁaapっつっても更新ファイルはファイル名とmd5の羅列だからどうとでもなるか
0856名無しさん@お腹いっぱい。2007/12/15(土) 08:55:16
ふつうにrsyncで大丈夫なのか
0857名無しさん@お腹いっぱい。2007/12/15(土) 12:40:25
http://article.gmane.org/gmane.editors.vim.devel/15347
:python os.chdir(hoge) すると Vim のカレントディレクトリまで変わってしまい
支障をきたすという話。
:ruby でも同じだった。だめだこりゃ。
0858パンチョ伊藤 ◆spu.cGrsso 2007/12/15(土) 16:24:38
>>857
Emacsなら変わんねぇよ。 Emacs使えよおまえ。
0859名無しさん@お腹いっぱい。2007/12/15(土) 19:31:58
Emacs ってよく知らないんですが、Vim より優れたエディタなんですか?
0860名無しさん@お腹いっぱい。2007/12/15(土) 20:00:20
ここでおっぱじめる気かよw
0861Zeno ◆5nZQbNmQPs 2007/12/15(土) 21:15:39

>>859
君の「優れた」の定義によるが、Emacs 上ではできるが Vim 上ではできない事
の方がその逆よりも多いのは確かだ。

import os
prevpwd = os.getcwd()

を始めに自動的に実行してから、KeyboardInterrupt などのExceptionを
キャッチして、それと同時に os.chdir(prevpwd) すれば良いのではないのかね?
0862名無しさん@お腹いっぱい。2007/12/15(土) 21:17:10
目糞鼻糞戦争は他所でやれよ
0863パンチョ伊藤 ◆spu.cGrsso 2007/12/15(土) 21:27:42
>>862
お前、「目糞鼻糞」って表現好きだよな? 馬鹿の一つ覚えってやつか?
この板の別のスレでも言ってたろ?
0864名無しさん@お腹いっぱい。2007/12/16(日) 02:34:38
>I am trying to use Vim as a python interpreter. So, I have mapped:
>:map <F4> :exe "pyfile " . expand("%")<CR>
結局こういう使い方は駄目ということだな。
他にインタープリタとvimで共有されるのは何だ?環境変数、ファイルディスクリプタ?
逆にこれだけ密につながっているということは、なんかすごいことができないかな。
0865名無しさん@お腹いっぱい。2007/12/17(月) 08:36:43
>>859
こっちでやっとくれ。

Vim vs Emacs (Editor War)
http://pc11.2ch.net/test/read.cgi/unix/983911547/
0866名無しさん@お腹いっぱい。2007/12/19(水) 12:45:39
gvimでビジュアル選択した領域をCtrol-Vで貼り付けるには
どうすればできますか?

今はメニューから「コピー」ボタンを選択しているのですが、
キーボードで完結したいなと。
0867名無しさん@お腹いっぱい。2007/12/19(水) 13:15:37
"*か"+がクリップボード
0868名無しさん@お腹いっぱい。2007/12/19(水) 23:08:22
set clipboard+=unnamedするとyとかpとかがクリップボード経由になるよ
:help gui-clipboardを見てみよう
0869名無しさん@お腹いっぱい。2007/12/20(木) 14:05:04
>>867-868

どうもありがとうございます。
無事できました。
0870名無しさん@お腹いっぱい。2007/12/21(金) 00:05:16
aapってBram以外で使ってる人いるのかな?
0871名無しさん@お腹いっぱい。2007/12/21(金) 00:58:25
PythonでKeyboardInterruptは捕捉できないね。
端末がrawモードになってるからかな。
カレントディレクトリの問題はvim側で復元すればいいと思うけど。
:let prevpwd=getcwd()
:pyfile %
:exe "cd ".prevpwd
0872名無しさん@お腹いっぱい。2007/12/21(金) 10:09:37
--remote-silentの引数オプションで起動中のvimでファイルを開くことができますが、
引数オプションなしで対応は可能でしょうか。例えばvimrcファイルを何かすることによって・・・
0873名無しさん@お腹いっぱい。2007/12/21(金) 19:51:47
gvimをCtrl-Zでバックグラウンドに入れてしまいました。
どうやったら復帰できるのしょうか?
0874名無しさん@お腹いっぱい。2007/12/21(金) 22:35:48
fg 1 とか売ってみれば?
0875名無しさん@お腹いっぱい。2007/12/22(土) 09:40:53
fg 1はいらんかいね〜
0876名無しさん@お腹いっぱい。2007/12/23(日) 11:57:00
Win32では gvim -P "ウィンドウタイトル"とすると他のMDIアプリの中で
vimを起動できるらしいが、全然成功しない。
0877名無しさん@お腹いっぱい。2007/12/23(日) 14:28:53
ほほう・・・
http://up2.viploader.net/upphp/src/vlphp109471.jpg
0878名無しさん@お腹いっぱい。2007/12/23(日) 21:28:23
ノーマッドも驚愕するテクノロジーだな・・・
0879名無しさん@お腹いっぱい。2007/12/23(日) 23:38:45
試してみようと思ったらMDIアプリが見つからない
0880名無しさん@お腹いっぱい。2007/12/24(月) 00:27:40
ところでMDIアプリの中で、その、どんな風に使うんだ
■ このスレッドは過去ログ倉庫に格納されています