トップページ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あたり。

0176名無しさん@お腹いっぱい。2009/03/17(火) 20:14:17
>>175
>vim の略語(:ab で登録するやつ)ってファイルタイプごとに
>登録できないんですか?

ファイルタイプ ruby の場合

(1) ruby.vim を作成する
( ユーザーは foo )
Windows Vista
C:\Users\foo\vimfiles\ftplugin\ruby.vim

Linux
/home/foo/.vim/ftplugin/ruby.vim

(2) ruby.vim に略語を登録する

iabbrev <buffer> elseif elsif
iabbrev <buffer> elif elsif

これで OK
0177名無しさん@お腹いっぱい。2009/03/17(火) 22:03:21
>>176
ありがとうございます。うまくいきました。
ファイルタイプ別の設定は略語に限らず ftplugin 以下のプラグインファイルに
書いておけばいいんですね。.vimrc がちょっとだけすっきりしました。
0178名無しさん@お腹いっぱい。2009/03/27(金) 22:43:41
http://vimperator.org/trac/wiki/Vimperator
これってすごいね。 びっくりした。
0179名無しさん@お腹いっぱい。2009/03/28(土) 19:39:56
>>154
ARG_MAX変更しないとすぐ涙目になるよ
0180名無しさん@お腹いっぱい。2009/03/28(土) 22:48:10
香り屋さんのところでVim7.2が公開されてたみたいなんで久しぶりにバージョンアップしたんだけど
これWin32用のVimが見る設定ファイルの名前が変わってたりする?
手元の7.1の環境からgvimrcとか設定ファイル一式をひっぱってきても全然反応がなくてデフォルトのまま…
7.2起動後に

:source gvimrc

ってやると、読み込んでくれるんだけど。

7.2起動直後に「Vi互換モードで動作中」って表示されるようになったみたいだけど
これも関係してる?
0181名無しさん@お腹いっぱい。2009/03/28(土) 22:55:05
>>180
:echo $VIMRUNTIME
0182名無しさん@お腹いっぱい。2009/04/02(木) 08:21:23
半角スペース 全角スペース タブを見分けられるよう可視にできないすか?
0183名無しさん@お腹いっぱい。2009/04/02(木) 08:55:18
:reg でレジスタの中身を表示したとき、 kbkbkb とつけた覚えのないkbという文字が並んでついているものがあるのですが
これは何なんですか
0184名無しさん@Vim%Chalice2009/04/02(木) 10:02:05
>>182

http://vimwiki.net/?faq%2F4
http://vimwiki.net/?%27list%27
http://vimwiki.net/?%27listchars%27
0185名無しさん@お腹いっぱい。2009/04/04(土) 01:39:55
うーむCUIのvimで使いたいんだけども
全角ハイライト
0186名無しさん@お腹いっぱい。2009/04/04(土) 03:39:13
CUIならターミナルの性能を越えることはできんだろ
0187名無しさん@Vim%Chalice2009/04/04(土) 10:25:48
>>185
wikiにも書いて来たけど、CUI の vim でやる時は guibg を ctermbg に書き換えれば OK
0188名無しさん@お腹いっぱい。2009/04/07(火) 19:20:43
分割した画面に一度に、:set 〜 する方法ってありませんか?
0189名無しさん@お腹いっぱい。2009/04/07(火) 19:27:19
:windo?
0190名無しさん@お腹いっぱい。2009/04/07(火) 19:52:15
>>189
できました!ありがとうございます。
0191名無しさん@お腹いっぱい。2009/04/13(月) 19:58:03
Debian スレから来ました。
http://pc11.2ch.net/test/read.cgi/linux/1235742742/583-

  lenny で vim 入れたんですが、:E で表示されるディレクトリ名の前に
  勝手に e の文字がくっついて移動できないのは私だけでしょうか?
  通常のファイルは問題なく開けます。あと、スワップファイルの前にも
  e の文字が付いていて謎です。
0192名無しさん@お腹いっぱい。2009/04/17(金) 00:12:18
Unixの質問掲示板から来ました。
http://pc12.2ch.net/test/read.cgi/unix/1239316057/l50

vimで:選択範囲!cmdで選択範囲を標準入力に流して、
結果で置換するというのを、結果で置換しないというのは
出来ますでしょうか。

例えばhello worldが選択範囲で、
:'<,'> ! sed -e 's/hello/bye/'
とやるとhello worldが置換されてbye worldになりますが、
これをhello worldを残したままコマンドを実行したいんです。
0193名無しさん@お腹いっぱい。2009/04/17(金) 00:32:07
>>191
vimのcvs/svnは基本的にcソースのみ管理しててランタイムファイルはリリースごとにしか更新されない
最新版はrsyncかftpで取る
http://www.vim.org/runtime.php
ftp://ftp.vim.org/pub/vim/runtime/
:Eの機能はnetrwというプラグインが提供していて最新版は作者のサイトにある
http://mysite.verizon.net/astronaut/index.html (VimStuffの中)

>>192
:help :w_c
0194名無しさん@お腹いっぱい。2009/04/17(金) 00:52:30
>>193
ありがとうございます!
上の例ですと以下でいけました。
:'<,'> w ! sed -e 's/hello/bye/'
0195名無しさん@お腹いっぱい。2009/04/19(日) 16:59:36
解除したいキーバインドがあるんですが、mapはどう書けばいいですか?
0196名無しさん@お腹いっぱい。2009/04/19(日) 17:07:31
unmap で helpれ
01971952009/04/19(日) 18:26:57
ありがとうございます。

何がしたいかというと、Kでカーソル下のフレーズのmanが出るのを解除したいのですが、
unmap <S-K> などと色々試したものの、No such mapping とエラーが出てしまいました。
書き方が間違っているんでしょうか?
0198名無しさん@お腹いっぱい。2009/04/19(日) 20:45:24
<Nop>を使うといいかもしれない
0199名無しさん@お腹いっぱい。2009/04/19(日) 21:27:54
>>197
それだったら
map K <nop>
でいいじゃん

大文字のkは単に K と書けばおk
02001952009/04/19(日) 22:34:57
<nop>なんてあったんですね。
おかげさまでできました。ありがとうございました。
0201名無しさん@お腹いっぱい。2009/04/20(月) 02:26:43
http://www.amazon.co.jp/gp/product/477413841X
この本どんな感じ?
0202名無しさん@お腹いっぱい。2009/04/21(火) 09:01:20
削除が全部切り取り扱いなのはどうにかならないんすか?
ヤンクしたのはx押しただけで更新されちゃうしregで見て選択するのも面倒だし
大量の文字削除したらそれバッファに残ってるし
0203名無しさん@お腹いっぱい。2009/04/21(火) 09:46:12
グダグダ言う前にマニュアル読めよ。適当なキーにブラックホールレジスタでもマップすりゃ済むだろ。
0204名無しさん@お腹いっぱい。2009/04/21(火) 20:03:52
ここまで簡単にどうにかなることを「どうにかならないんですか?」って言われてもなw
0205名無しさん@お腹いっぱい。2009/04/21(火) 21:21:55
初心者らしくへーこらしてりゃ叩かれないものを
0206名無しさん@お腹いっぱい。2009/04/21(火) 21:46:32
>>201
コレクターグッズ
0207名無しさん@お腹いっぱい。2009/04/24(金) 21:42:49
>>202
もう解決した?

set guioptions-=a

↓これ見れば解決するん
:help 'guioptions'
:help 'clipboard'
0208名無しさん@お腹いっぱい。2009/04/25(土) 22:02:12
コマンドモードで、入力モードにならずに行を挿入する方法はないでしょうか?
0209名無しさん@お腹いっぱい。2009/04/26(日) 00:31:04
"="\n"p
0210名無しさん@お腹いっぱい。2009/04/26(日) 00:32:30
enter忘れた
"="\n"<CR>p
0211名無しさん@お腹いっぱい。2009/04/26(日) 06:10:52
>>210
ありがとうございました。自分でショートカットキー作ることにします。
0212名無しさん@お腹いっぱい。2009/04/29(水) 16:29:12
レジスタの内容をコマンドの一部に使いたいのですがどうすればいいのでしょうか?
:nslookup @*
のような使い方をしたいのです。

ベタに CTRL-R * で貼り付けるとキーマクロとして実行した場合にうまく動作しません。(毎回同じコマンド内容になる)
0213名無しさん@お腹いっぱい。2009/04/29(水) 21:01:32
>>212
:execute '!nslookup' @*
0214名無しさん@お腹いっぱい。2009/04/30(木) 03:38:57
>>207
何の話
0215名無しさん@お腹いっぱい。2009/04/30(木) 07:57:14
>>214
逆エスパー間違い
0216名無しさん@お腹いっぱい。2009/05/01(金) 00:38:42
>>214
今さら何の話
0217名無しさん@お腹いっぱい。2009/05/02(土) 20:05:02
.vimrcに vnoremap * "zy:let @/ = @z<CR>n  というのがあったんですが、これどういう意味ですか?
自分で書いてて忘れてしまいました…(恥
0218名無しさん@お腹いっぱい。2009/05/02(土) 21:29:14
>>217
Visual modeで選択した文字列を検索する。
Normal modeの*はカーソル下のキーワードを検索するけど、それと同じ感じ。

ただそのコードだとメタ文字があるときに困るから私は↓のようにしてる。

vnoremap * :<C-u>call <SID>search_the_selected_text_literaly('n')<Return>
vnoremap # :<C-u>call <SID>search_the_selected_text_literaly('N')<Return>

function! s:search_the_selected_text_literaly(search_command)
let reg_0 = [@0, getregtype('0')]
let reg_u = [@", getregtype('"')]

normal! gvy
let @/ = @0
call histadd('/', '\V' . escape(@0, '\'))
execute 'normal!' a:search_command
let v:searchforward = a:search_command ==# 'n'

call setreg('0', reg_0[0], reg_0[1])
call setreg('"', reg_u[0], reg_u[1])
endfunction
0219名無しさん@お腹いっぱい。2009/05/02(土) 22:10:28
>>218
戦車でコンビニに行く感じ感覚
0220名無しさん@お腹いっぱい。2009/05/02(土) 23:32:22
そこまでは思わないが、4tトラックでコンビニに行く程度には思えるな
02212172009/05/03(日) 14:56:32
>>218
ありがとうございます!
vimってfunction使えるんですね。意味はさっぱり分からないですが使わせて頂きます
0222名無しさん@お腹いっぱい。2009/05/05(火) 23:38:36
vimgdbを使ってみたんですけど、これって
scanf()とかの入力ってどうやるんですかね?
0223名無しさん@お腹いっぱい。2009/05/07(木) 06:11:10
 質問です。Vimのウィンドウ分割後のウィンドウサイズ変更は
{N}Ctrl+w +などを使いますがどう考えても手が壊れそうな
キーの組み合わせだと思うのですが、皆さんはどのようにして押しているのでしょうか?
よろしくおねがいします。
0224名無しさん@お腹いっぱい。2009/05/07(木) 10:22:36
左手小指でCtrl、左手中指でw。
別に壊れないよ。
0225名無しさん@お腹いっぱい。2009/05/07(木) 11:02:38
コマンドモードでヒストリーを参照する時に
上下カーソルを使いますが、ホームポジションで
使えるキーバインドもありますか?
02262252009/05/07(木) 11:11:03
wikiにありました
C-N, C-P
0227名無しさん@お腹いっぱい。2009/05/07(木) 15:02:02
>>223
キーの押し方なんか聞いてどうするんだ?w
押しにくかったら適当にキーマップの設定でもしなよ

ちなみに俺は A の左を Ctrl にしてるけどね
02282232009/05/07(木) 17:09:13
ありが誤答ございます。
Ctrl-Wは良いのですがCtrl+wを押しながら+を押すのがかなりきついです。
0229名無しさん@お腹いっぱい。2009/05/07(木) 17:25:04
サイズ変更は、CTRL+Wを一度押せばあとはCTRL+Wを離しても+-でサイズ変更できるんじゃなかった?
0230名無しさん@お腹いっぱい。2009/05/07(木) 23:04:33
>>228
C-w + という表記は C-w と + を同時に押すという意味ではなくて
続けて押せばおk、という意味

C-w C-w とかどうやって押すつもりだw
02312232009/05/07(木) 23:13:42
>>229-230
ありがとうございます。
助かりました。
0232名無しさん@お腹いっぱい。2009/05/07(木) 23:58:02
すると、同時に押すときは C-w-+ とでも書くのだろうか。
0233名無しさん@お腹いっぱい。2009/05/08(金) 00:14:14
Windows のソフトウェアのショートカットキーは、全部、いっぺんに押すよね。
vi や Emacs のようなキーバインドは、めずらしいよ。
こういうの、なんていうのか知らんけど。
0234名無しさん@お腹いっぱい。2009/05/08(金) 01:36:36
>>233
Sequence
0235名無しさん@お腹いっぱい。2009/05/08(金) 02:17:53
Alt押してうんぬんとか
Windowsキー押してうんぬんとかあるじゃん。
0236名無しさん@お腹いっぱい。2009/05/08(金) 02:31:32
Windowsと関係ないところで進化してきたソフト達に
Windowsでは珍しいとか・・・どういう意味?

まぁエクスプローラーでさえ

Alt-F W F

みたいな入力が出来る訳だし、
ショートカットはいっぺんに押す。
とは言い切れないのでは?
0237名無しさん@お腹いっぱい。2009/05/08(金) 02:36:27
Windowsの事はわからん
Macの事もわからん
DOSなら使った事あるが
0238名無しさん@お腹いっぱい。2009/05/08(金) 06:42:49
>>232
修飾キー以外を複数同時に押させるようなものはなかったと思うけど
そんなのあったっけ?

>>233
同時押しだと使える組み合わせって限られるしエディタには向いてないよ
sequence なら組み合わせはほぼ無限で、やろうと思えばエディタの操作すべてに
キーを割り当てられるしカスタマイズの余地もありまくり
0239名無しさん@お腹いっぱい。2009/05/09(土) 17:00:48
正規表現でサブパターンを使用し、マッチしたサブパターンを取り出す方法ってありますか?

Ruby でいう

/hoge(\d+)/ =~ "hoge123"
print $1

みたいな感じです。(これができないとvimスクリプトが書きにくい)
0240名無しさん@お腹いっぱい。2009/05/09(土) 17:13:33
>>239
Vim7 なら matchlist()
0241名無しさん@お腹いっぱい。2009/05/09(土) 17:47:49
>>240
あ、ありがとう! まさしく求めていたモノはこれだった!
0242名無しさん@お腹いっぱい。2009/05/09(土) 20:24:08
他エディタみたいにエンターやセミコロン押したときに自動インデントさせる方法ないですか?
例をだすと
if(??){
a=1
}
のときにセミコロン打つと↓の様になって欲しいです.
if(??){
a=1;
}
02432422009/05/09(土) 20:26:52
訂正
1 if(??){
2 a=1
3 }

1 if(??){
2 a=1;
3 }
02442422009/05/09(土) 20:28:14
訂正その2orz
1 if(??){
2 a=1
3 }

1 if(??){
2  a=1;
3 }
0245名無しさん@お腹いっぱい。2009/05/09(土) 20:36:47
autoindentやcindentをつかってはじめからインデントするんじゃダメなのか?

02462422009/05/09(土) 20:44:22
使い方を間違っているのかもしれませんが,
↑の例の2行目でインサートモードに「i」で移ると
autoindentが効かないのです.(←が動けば問題ないのですが・・・.)
0247名無しさん@お腹いっぱい。2009/05/09(土) 20:51:31
autoindentは確か、行頭を自動で前の行と同じインデントにする物だったはず.
smartindentやcindentを試してみたが、iでうつるとインデントはされなかったな...
ちょっと調べてみる
02482422009/05/09(土) 21:04:55
>> 247 お願いしますn_ _n
ちょっとautoindentを実験.
1 if(){
2
3 }
この状態の1行目で「o」すれば,インデントされるが無駄な改行がはいる.
2行目だと「i」でも「o」でもインデントはされない.

>autoindentは確か、行頭を自動で前の行と同じインデントにする物だったはず.
なるほど・・・.と言った感じです.

でも,インサートモードで閉じ括弧は自動的に下げインデントされるので,
この当たりが怪しい気もします.
02492422009/05/09(土) 21:23:05
自己解決しました.cindentがポイントだったみたいで,
:set cinkeys+=;
とすれば良いみたいです.
結構この辺,いじれそうなので遊んでみます.
0250名無しさん@お腹いっぱい。2009/05/09(土) 21:29:13
cinkeys
インデントの原因となる文字列ですか、
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を使う理由ってある?
■ このスレッドは過去ログ倉庫に格納されています