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

Vim Part16

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2009/01/16(金) 00:56:51
Vim 6以降に関する話題、Part16です。
http://www.vim.org/

前スレ
Vim Part15
http://pc11.2ch.net/test/read.cgi/unix/1202050038/

関連情報は>>2-8あたり。

02512422009/05/09(土) 21:36:18
>250 のようです.以下まとめ
:set autoindent
:set cindent
:set cinkeys+=;
0252名無しさん@お腹いっぱい。2009/05/18(月) 10:15:40
色設定ファイルのvimに関する設定項目ってどこかにまとまってないですかね?
最悪、無ければ英文でも良いんですけれど。

全ての色定義ファイルが全項目を使っているわけではないので、
長そうなのを実際に読み込んで試行錯誤してるんですが、
やっぱり面倒なのです‥‥
0253名無しさん@お腹いっぱい。2009/05/18(月) 11:25:16
Vim完全バイブルという3500円ぐらいの本って、
買う価値ありますか?
設定ファイルとかスクリプトについて詳しく知りたいんですけれど。

ネットで目次だけみると、半分は正規表現の本みたいなので‥‥。
0254名無しさん@お腹いっぱい。2009/05/18(月) 11:32:50
英語版ならネットで読めたんですね。
http://iccf-holland.org/click5.html#oualline
0255名無しさん@お腹いっぱい。2009/05/18(月) 13:07:40
Vimがバイブになって3,500円で登場
最高の悦楽を貴方に!!
0256名無しさん@お腹いっぱい。2009/05/18(月) 13:50:00
自分は意外と役に立ったけど、要らない人には全く要らないだろうという本

基本的な使い方から各オプションの細かい説明まで載ってるけど
一番マイナスなのがVim5あたりの内容だということ、ちょっとだけ古い
結局新しい機能についてはヘルプを見たりネットで調べたりすることになる
(本体のヘルプ日本語訳してくれてる方、ありがとうございます)

この本、最新版で出してくんないかなぁ
0257名無しさん@お腹いっぱい。2009/05/18(月) 14:39:06
英語版を目を通してみました。
プログラマーでVim初心者には有益そうっすね。
品薄でもありそうなので、初見には良いかと思って、
注文してしまいました。

vmrcの内容については言及してますけれど、
カラースキーマまでは書いてないですね。
0258名無しさん@お腹いっぱい。2009/05/18(月) 15:36:29
test
0259名無しさん@お腹いっぱい。2009/05/18(月) 15:38:21
gvimの高さを指定したいんですが、うまく行きません。
.vimrcに set lines=40 とやってるんですが反映されないっす。
どう書けばいいですか?
0260名無しさん@お腹いっぱい。2009/05/18(月) 19:28:23
なんか新しいVi&Vim本が平積みにしてあった。
オライリーのVi本と完全バイブルの中間みたいな中途半端な厚さだった。
パラッと立ち読みした限りだと内容も中途半端だった。
0261名無しさん@お腹いっぱい。2009/05/18(月) 21:01:13
>>252
よくわからないけど、:help syntax.txtじゃだめなの?

>>259
.gvimrcに書いたらどうなる?
0262名無しさん@お腹いっぱい。2009/05/19(火) 11:38:47
>>261
出来ました!

.gvimrcに書いても全然反映されない。
試しに端末からgvimを起動したら反映された。
GNOMEのメニューみたら -geometry を自分で設定してすっかり忘れてました。
ずっと悩んでましたアホでした、どうもすいません orz
0263名無しさん@お腹いっぱい。2009/05/19(火) 15:22:18
set wrapで折り返しを指定するときに、
何文字で折り返すか明示的に指定する方法は無いのでしょうか?

改行をいれずに、表示の折り返しの幅だけを指定したいのです。
0264名無しさん@お腹いっぱい。2009/05/19(火) 15:42:16
set columns
0265名無しさん@お腹いっぱい。2009/05/19(火) 16:26:13
>>264
どうもありがとうございました。
でも、たいへん失礼しました、gvimで文字列の右端を空けた状態で、
改行を入れたいのです。
culumnsで指定すると、ウィンドウ枠自体がそのサイズになって、
画面にピッチリになりますよね。

それだと、読みにくいので、例えば80文字で折り返すなら、
左端から80文字で文字は終わりで、そのあとに空白が続く形で折り返したいのです。
0266名無しさん@お腹いっぱい。2009/05/19(火) 17:02:49
俺もそれがしたい。
あと強制的に改行コードも挿入できれば。
0267名無しさん@お腹いっぱい。2009/05/19(火) 17:09:05
いや、強制的に改行を入れていいなら、set textwidthで出来るんじゃないですか?
改行を入れたくない場合が難しいと思うのですが‥‥
0268名無しさん@お腹いっぱい。2009/05/19(火) 17:14:31
:set textwidth=72
ってやってみたけど変化なす orz
ずらずら〜っと文字を打ち込んで72桁目で自動的に改行してくれたら楽なんだけど。
0269名無しさん@お腹いっぱい。2009/05/20(水) 14:27:36
すみません、vimrcとgvimrcって関係あるでしょうか?
つまり、gvimrcってvimrcの内容にも影響を受けるのでしょうか?

GUI版の設定ファイルは、コマンドライン版の設定ファイルに
追加する関係になっているのかなぁと‥‥
0270名無しさん@お腹いっぱい。2009/05/20(水) 14:50:53
読み込む順番が決まっておりますので・・・
0271名無しさん@お腹いっぱい。2009/05/20(水) 18:11:25
済みません、vimでバッチモードみたいなのはないですか。
cal | vim -n -c ':set number' -c ':so $VIMRUNTIME/syntax/2html.vim' - -c ':w !cat' -c ':qa!' | lynx -stdin
見たいにしたのですが
vim後続のコマンドがvimの画面表示も標準入力から受け取ってしまいます。
なにか解決策おねがいします。
0272名無しさん@お腹いっぱい。2009/05/20(水) 19:50:10
>>271
オプションの最後に-e -sを追加。
あと-c '{command}'は:要らないよ。
0273名無しさん@お腹いっぱい。2009/05/20(水) 23:12:21
>>269
:help startupとかだったと思うよ
0274KoRoN@Vim%Chalice ◆8XALICEsdk 2009/05/21(木) 00:25:27
>>263
英文なら以下をするだけで随分と見やすくなります。
:set linebreak
でも、日本語だと方法がないかもです。

>>266
textwidthがauto-wrapに使われるかはformatoptionsにも依存します。
:set fo+=tc
:help fo-table

あと'textwidth'ではなく'wrapmargin'を設定する方法もあります。
0275名無しさん@お腹いっぱい。2009/05/21(木) 01:03:44
Vimが使えるマシンでViを使う理由ってある?
0276名無しさん@お腹いっぱい。2009/05/21(木) 02:10:08
でかいログを直接見るときは軽いんじゃないの?
0277名無しさん@お腹いっぱい。2009/05/21(木) 06:25:09
>>274
おひさ。げんきそうでなにより。
0278名無しさん@お腹いっぱい。2009/05/21(木) 14:11:11
windowsでgvimからプリンタで印刷すると、化けません?
utf-8なんですけれど。
PDF用の仮想プリンタでも日本語が化けてるんで、
gvim側で何か設定が必要なんでしょうか?
0279名無しさん@お腹いっぱい。2009/05/21(木) 20:11:42
必要ないと思うけど。
0280名無しさん@お腹いっぱい。2009/05/21(木) 20:20:16
印刷用フォントに変なの設定してるとなるかも。
:option
11 printing
で見てみ。
0281名無しさん@お腹いっぱい。2009/05/21(木) 20:21:02
○ :options
× :option
02822782009/05/21(木) 23:00:14
みなさん、どうもありがとうございます。
おっしゃる通りに、日本語の無いフォントになっていました。
どうもありがとうございました。
0283名無しさん@お腹いっぱい。2009/05/25(月) 08:36:18
編集しているファイルのファイル名やディレクトリ名をサクッと取得する方法ってありますか?
0284名無しさん@お腹いっぱい。2009/05/25(月) 12:33:23
nnoremap 適当なキー :let @*=substitute(expand("%:p"), "/", "\\", "g")<CR>
0285名無しさん@お腹いっぱい。2009/05/25(月) 14:40:57
なんで置換してるのかわからんけどこういう風にも書けるよ
expand('%:p:gs?/?\\?')
0286名無しさん@お腹いっぱい。2009/05/25(月) 17:10:41
なんでややこしいvimコマンド使ってるのかわからんけどこういう風にも書けるよ
:r !echo % --> (指定していた場合はディレクトリ名も含め)ファイル名が現在行の次に追加される
:r !pwd --> 現在のディレクトリ名が現在行の次に追加される
0287名無しさん@お腹いっぱい。2009/05/25(月) 23:21:22
なんつーか
C言語でポインタを定義する時、int* hogeと書くか、int *hogeで分かれるじゃん

int*派からすると、
int型のポインタなんだからint*なんだ、大体、int*を返す関数を定義する時どうする?
まさかint *hoge()とか書くのか? それともint * hoge()? どっちもキモい

int *派からすると、
おいおいちょっと待て、じゃあ何か、例えばポインタを複数定義したい時どうする?
int* hoge; int* hage;とか何度も書くのか?
ましてや、ポインタと通常型を同時に定義したい時どうする?
まさかint* hoge, hage;とか書くのか? 紛らわしい
それに、どうせおまえらだってconstが混じったらconst int *const hogeとか書くんだろ?
執拗にconst int* const hogeとか書くのか?

みたいな議論を>>286のレスを見た瞬間、鮮やかに思い出した


俺なら
:r! echo %
:r! pwd
だな
0288名無しさん@お腹いっぱい。2009/05/26(火) 06:17:05
道は一つじゃないってだけだろ。
Vim はそんなに単純な道具かい?断じて否だ。その気になれば犬の散歩だって!
いずれにしろ質問者の好みで選ぶだけだろうよ。
0289名無しさん@お腹いっぱい。2009/05/26(火) 06:56:04
Vimで、pluginとかのエラーが出たときに、
パパパッと一瞬で流れてしまって読めないんですけど、
これバッファにはき出したりすることってできますか?
0290名無しさん@お腹いっぱい。2009/05/26(火) 10:45:30
>>287
本筋と関係ないが
> ましてや、ポインタと通常型を同時に定義したい時どうする?
> まさかint* hoge, hage;とか書くのか? 紛らわしい
int* 派は
int* hoge;
int hage;
と分けて定義する、と思う
0291名無しさん@お腹いっぱい。2009/05/26(火) 11:53:26
スレ違いの空気読めない子が多い
0292名無しさん@お腹いっぱい。2009/05/26(火) 12:19:09
振り返れば、ポインタ型のある言語をここ何年かさわってないなぁ...
と思ったらこないだまでiPhoneプロジェクトやってた。
つか、その前はC#やってた...だめだ記憶力が...


iPhoneはvim使用は断念したが、C#はvimで十分だったよ!
まぁ、GUIなかったし、mono互換が要件だったし。
0293名無しさん@お腹いっぱい。2009/05/26(火) 20:05:38
:r ! pwd 派は認知すらされていないのか。
02942862009/05/26(火) 21:05:54
>>286から盛り上がってるようなのでうれしくなって一言.
ファイル読み込みのときには
:r ファイル
だよな?ファイルの代わりにコマンド実行の結果を読み込むんだから
:r !コマンド
が由緒正しい書きかたなんじゃないの?(まあどうでもいいんだけど)
0295名無しさん@Vim%Chalice2009/05/26(火) 21:44:51
>>289
これ,私もたまに困るんですが,なんか方法ないんですかねー?
正直人間の読める速さの限界を超えてる速度で流れて全然読めん.
0296名無しさん@お腹いっぱい。2009/05/26(火) 23:40:41
>>289
>>295

:mes
でいんでない?
0297名無しさん@Vim%Chalice2009/05/27(水) 06:30:39
>> 296さま
おぉっ!
ありがとうございます。
3ヶ月前ほどにEmacsから乗り換えたのですが、Emacsだと新規バッファにエラーはいてくれるので
良かったのですがVimだとどうすれば良いか悩んでいたところでした.
ありがとうございました.
02982832009/05/27(水) 13:49:05
何気なく質問したのですが、暑いレスをたくさん頂きありがとうございます
勉強になりました
02992832009/05/27(水) 13:50:41
ありゃ、
×暑い
○熱い
でした、スイマセン
0300名無しさん@お腹いっぱい。2009/05/27(水) 23:49:48
ググっても誰も困ってないようなので、私だけなのかもしれませんが、
vim7.2(.188)と、ruby1.9の組み合わせで、--enable-rubyinterp を付けてると、
makeでエラーになってしまいます。
具体的には、以下のエラーが発生します。

if_ruby.c:51:18: error: ruby.h: No such file or directory

確かに、 /usr/local/lib/ruby/1.9.1/i686-linux の中にruby.hがありません。
ruby1.8の時には、i686-linuxのディレクトリの中にありました。
これは現状では解決出来ない問題なのでしょうか?
0301名無しさん@お腹いっぱい。2009/05/28(木) 01:48:50
>>300
そもそも1.9用のif_rubyが存在しない。
もしかしたらvim_devを漁ればあるかも知れないけど、あっても枯れてないから止めといた方が無難。
0302名無しさん@お腹いっぱい。2009/05/28(木) 07:22:11
>>301
やはりそうですか・・・。
omni補完はほぼ使わないのですが、気になって仕方がありませんでした。
随分前からの悩みだったのですが、またしばらく待ってみます。
情報ありがとうございました。
0303名無しさん@お腹いっぱい。2009/05/29(金) 19:04:30
ファイルを開いたときに
以前最後に開いたファイルの編集行を覚えさせるためには
どうすればよいでしょうか?
0304名無しさん@お腹いっぱい。2009/05/30(土) 06:47:30
:help viminfo-file
:help 'viminfo'
0305名無しさん@お腹いっぱい。2009/05/31(日) 19:16:00
10年くらいvim3をつかってましたが
周りにインストールされているのがvim7になってきて困っていることが、
vim3だとtag jump(C-])で複数候補があるときに選択リストがでますが
vim7は問答無用で最初のエントリに飛ばされてしまいます。
vim7で選べるようにするにはどんな設定が必要?
0306名無しさん@お腹いっぱい。2009/05/31(日) 19:54:59
>>305
nnoremap <C-]> :<C-u>tjump <C-r><C-w><Return>
あるいはデフォルトのままでも飛んだ後に:tnext/:tpreviousで他の候補に飛べるよ。
0307名無しさん@お腹いっぱい。2009/05/31(日) 21:00:28
>>306
かたじけない
これでやっと移行できる
0308名無しさん@お腹いっぱい。2009/05/31(日) 22:57:21
>>306
なんかまどろっこしいよ

g<C-]>
でいいよ。

mapするなら
nnoremap <C-]> g<C-]>
03093062009/05/31(日) 23:09:20
>>308
あー、そんなのあったんだ。
Ex commandは覚えててもキーバインドは覚えてなかった。
さんくす。
03103032009/06/01(月) 20:32:11
>>304
最後に開いたファイルの最後の編集行に
ちゃんとカーソルが来るユーザと同じ設定してみました。
set viminfo='100,<50,s10,h
しかしやはり編集行が保存されないようです。
一回:wqして開き直すとファイルの先頭にカーソルがきてしまいます。

:help 'viminfo'を確認しつつ全部のオプションを試してみて、
set viminfo='100,<50,s10,h,%,/50,c,f0,@50,:50,%
とりあえずこんな設定してみましたが、これでもできないようです。

他に考えられる理由はありますでしょうか?
よろしくお願いします
0311名無しさん@お腹いっぱい。2009/06/01(月) 21:17:02
>>303
>以前最後に開いたファイルの編集行を覚えさせるためには

こいつが _vimrc か、.vimrcに書いてないんじゃね?

autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
0312名無しさん@お腹いっぱい。2009/06/02(火) 07:15:50
256色のcolorschemeをCUIで表示ってできますか?
0313名無しさん@お腹いっぱい。2009/06/02(火) 08:11:50
guiだけ設定してて、ctermないスキームは無理じゃないかなぁ。
0314名無しさん@お腹いっぱい。2009/06/02(火) 15:51:11
すいません。vimと直接関係無いのですが、質問させて下さい。
Cのヘッダファイルから関数一覧のファイルを作り、set dictionaryしたいのですが、なにか良い方法は無いでしょうか?
ctagsのマニュアルを読むと--c-kinds=+pとかすると行けそうに見えたのですが、上手く出来ていません。
0315名無しさん@お腹いっぱい。2009/06/02(火) 23:53:49
>>314
ctags -R --c-types=f -x
で出力される各行の1ワード目が関数名。
あとはperlなりawkなりで取り出せばおk。
03163152009/06/03(水) 00:14:23
× --c-types
○ --c-kinds
h_east氏のサイト間違えてる?
03173142009/06/03(水) 05:55:31
>315
ありがとうございます。
ただ、示してもらった方法では、ヘッダファイル(というか関数の宣言)から関数一覧は作れてないようです。
例えば、
ctags --c-kinds=f -x `find /usr/include -maxdepth 1 -name "*.h"`
をやっても、例えば/usr/include/string.hのmemcpyは生成された一覧には出ません。
それとも僕の環境が悪いんでしょうか。
Exuberant Ctags 5.7 on ubuntu 8.04 でやっています。
0318名無しさん@お腹いっぱい。2009/06/03(水) 06:49:24
hint: -I
0319名無しさん@お腹いっぱい。2009/06/03(水) 08:58:25
>>314
そういうときこそ p 指定。
--c-kinds=p -x
03203142009/06/03(水) 10:00:07
>318,319
ありがとうございます。下記方法で出来ました。

ctags --c-kinds=+px \
-I __THROW,__NTH,__wur,__warnattr,\
__nonnull,__attribute_malloc__,__attribute_pure__,__attribute_used__,\
__attribute_noinline__,__attribute_deprecated__,__attribute_format_arg__,\
__attribute_format_strfmon__,__attribute_warn_unused_result__,__always_inline,\
__extern_inline,__extension__,__restrict \
/usr/include/*.h

0321名無しさん@お腹いっぱい。2009/06/03(水) 10:01:51
utf-16leのテキストファイルをvimで開くと文字化けしていたので、

:set enc=utf-16le
:e!

とやりました。
そしたら、文字化けは直りました。
utf-8で保存しようと思って、

:set fenc=utf-8
:w

とやって、保存したら、まずかったみたいで、何をどうやっても文字化けしてしまいます。
たとえば「定」の文字コードはutf-16leでは9a5b、上記の操作でc3a5になってしまっています。
メモ帳でutf-16leの9a5bをutf-8で保存するとe5aeになります。

先週の水曜からコミットしてないソースなんですよ...orz
誰か助けてください (;_;)
0322名無しさん@お腹いっぱい。2009/06/03(水) 12:52:35
>>321
化けたところを全部書き直せばおk
0323名無しさん@お腹いっぱい。2009/06/03(水) 13:14:14
バグですね
とりあえずこれでなおるはず
:set enc=latin1
:e ++enc=utf-8 /path/to/file
:set enc=utf-8
:w

ファイルの文字コードを指定して開きたいときはこうする
:e ++enc=utf-16le /path/to/file
encの設定はいらない
しかしユニコードを扱うならencもユニコードにしないといろいろとあれなのでその場合はenc=utf-8にしてから上記コマンドで開くといいでしょう
0324名無しさん@お腹いっぱい。2009/06/03(水) 13:53:43
>>323
ありがとうございます。本当に助かりました。

>>322
手動パッチで文字化けを直していたのですが、
11万行もあったので半分も終わってませんでした(^^;
0325名無しさん@お腹いっぱい。2009/06/03(水) 19:28:14
11万行を commit しない勇気。今の若いモンにはこれが欠けている。
0326名無しさん@お腹いっぱい。2009/06/04(木) 18:14:34
commitってどういう意味で使ってますか?
0327名無しさん@お腹いっぱい。2009/06/04(木) 18:46:43
コミット 【commit】
関係すること。参加すること。かかわり合うこと。
0328名無しさん@お腹いっぱい。2009/06/04(木) 22:07:28
>>326
文脈で分かってやれよ。不粋なやつだな。
0329名無しさん@お腹いっぱい。2009/06/05(金) 00:31:49
>>328
>>326じゃないが俺も分からん
ボケでも無さそうだし、、。
0330名無しさん@お腹いっぱい。2009/06/05(金) 03:42:50
バージョン管理システムとか知らない人?>>329
0331名無しさん@お腹いっぱい。2009/06/05(金) 04:10:38
いくら何でもそれは知ってるよ
>>328の言わんとしてる事が判らないんだ
0332名無しさん@お腹いっぱい。2009/06/05(金) 07:57:56
嘘つけ、慌てて調べたんだろう。
これ↓で文意が想像つかないって知らないんでなけりゃアホだ。
>>321
>先週の水曜からコミットしてないソースなんですよ...orz
0333名無しさん@お腹いっぱい。2009/06/05(金) 09:54:22
1週間コミットしてないなんてありえないけどなw
0334名無しさん@お腹いっぱい。2009/06/05(金) 13:12:57
>>332
そりゃすまん>>324からしか読んで無かったんで

>嘘つけ、慌てて調べたんだろう。
でもこんな風に思うか普通……。
あまりにも人を見下し過ぎてると逆に君の
レベルも多寡が知れてると思われるよ?
0335名無しさん@お腹いっぱい。2009/06/05(金) 14:20:09
vimのスレで出てきたcommitをどう考えたらそれ以外の意味に取れるのかわからんが、 それを激しく追及するのもどうかと。このへんでやめとけよ。
0336名無しさん@お腹いっぱい。2009/06/05(金) 19:47:45
敢えて深い意味があるのかと勘ぐった
0337名無しさん@お腹いっぱい。2009/06/05(金) 19:48:27
ネタとしてな
2chだからここ
0338名無しさん@お腹いっぱい。2009/06/05(金) 19:55:52
ソフトウェアは素晴らしいっすけど、ユーザーがもうねってありがちなパターンっすね。おっすおっす。
0339名無しさん@お腹いっぱい。2009/06/06(土) 09:29:14
そんなことより、Vimの話しようぜ。
0340名無しさん@お腹いっぱい。2009/06/06(土) 12:44:49
$ stat -c %s /usr/local/bin/vim
1658148
デカ過ぎ。この1/10のチビvimが欲しい。
0341名無しさん@お腹いっぱい。2009/06/06(土) 13:34:22
$ stat -f %z /usr/bin/vi /usr/local/bin/vim
281980
1264028
0342名無しさん@お腹いっぱい。2009/06/06(土) 14:22:44
行頭の # が>>コマンドでインデント出来ない。
行頭じゃなければ出来る。なんで?

Kaorya gvim 7.2.148
0343名無しさん@お腹いっぱい。2009/06/06(土) 14:29:36
:set nosmartindent
03443422009/06/06(土) 15:10:21
>>343
どうもです。
0345名無しさん@お腹いっぱい。2009/06/09(火) 14:39:39
C言語のインデントで、 gg=G みたいな事をやると
// if (hoge == 0) {
などという、コメントアウトした括弧まで反映されて困るんですが
なんとかならないんでしょうか?
0346名無しさん@お腹いっぱい。2009/06/11(木) 01:50:26
:set cindent
0347名無しさん@お腹いっぱい。2009/06/12(金) 22:17:30
オートインデントで
if (hogehoge) {<CR>
----<CR>
としたら
if (hogehoge) {

----
になるんだけど勝手にインデント削除させないようにするにはどうすればいいの?
0348名無しさん@お腹いっぱい。2009/06/13(土) 18:57:34
:set autoindent
0349名無しさん@お腹いっぱい。2009/06/15(月) 00:58:29
いろいろやってみたけど、インデントは削除されてしまうので
特にレスをしなかったんだけど、>>348じゃ解決できないよね?

けど、そのインデントを残しておきたい理由って何なんだろう?
あとからその行に書きたいときのことを想定してたりする?
0350名無しさん@お腹いっぱい。2009/06/15(月) 07:48:05
>>349
Pythonじゃ勝手に消されると困るし他の言語でも空行もインデントするようにしてるんで
■ このスレッドは過去ログ倉庫に格納されています