トップページ  新規作成  編集  履歴  ページ一覧

vim

こんにちは。<del>hjklを使わない</del>hjklがようやく使えるようになった貧弱vim使いです。

目次

基礎

mode

モードがあるのですよ。

i:INSERTモードにする

移動関連

Ctrl+B:PageUp(1ページ)

Tips

ほぼ俺様メモ

カーソルキーを封印する

ずっとやろうと思いつづけて放置してたんだけど、重い腰をあげてチャレンジしたらできた。 Text-Terminal-HOWTO:端末の使用にて

vi はインサートモードから抜けるためのコマンドとしてエスケープキーを使います。 矢印キー (カーソルキー) を押せば、エスケープシーケンス (ESC で初まる文字列) がホストに送られます。 vi は ESC の 2 つの意味を区別しなければいけません。 利口な vi (このために設定された vim などの) は ESC と次のキーの時間間隔によって見分けることができます。 もし間隔が短かければカーソルキーが押されたと判断します。 さらに詳しいことを知りたければ、 vim で ``help cursor-keys'' を使ってください。

と書かれているので、ようするに時間間隔を限界まで短くしてさらに矢印キーのコードをmapで消してやればなんとかなるー!?というわけでこうした。

<code> "map disable cursor key set ttimeout set timeout set ttimeoutlen=0 set timeoutlen=0 map <ESC>OA <ESC> map <ESC>OB <ESC> map <ESC>OC <ESC> map <ESC>OD <ESC> imap <ESC>OA <ESC> imap <ESC>OB <ESC> imap <ESC>OC <ESC> imap <ESC>OD <ESC> </code>

できたーーーー!!!!もしかしたら不完全かもしれないけれど、矢印キーを使わないようにする特訓の為程度なら別にこれでも満足!

ESCキーを使わない

ESCはCtrl+[で代用できる。Ctrl+[の方が指が遠くへいかないのでこっち使ったほうが良い(気がする。

括弧の対応を調べる

括弧の上で%を押すと対応する括弧にとべる。

1文字の置き換え

http://www.kaoriya.net/vimdoc_j/usr_04.txtより <blockquote> "r"コマンドはオペレータではありません。1文字の入力を待ち、カーソル位置の文 字を入力された文字に置き換えます。同じことは"cl"とか"s"でもできますが、"r" の場合は最後に<Esc>を押す必要はありません。


there is somerhing grong here ~
rT	     rt    rw

There is something wrong here ~

"r"にカウンタを使うとその数分の文字を指定の文字に置き換えます。


There is something wrong here ~
		   5rx

There is something xxxxx here ~

文字を改行に置き換えたければ、"r<Enter>"を使います。1文字を削除した上で、 改行を挿入します。ただし、改行に対してはカウンタは無効で、削除する文字にのみ 有効となります。"4r<Enter>"は4文字削除し、1つの改行を挿入します。 </blockquote>

タブを使わない。

タブでなくスペースを使う場合。


set expandtab

既存のものは


:%retab 4

でなんとかできるらしい

文字コードの変更と改行コードの変更

vimエディタで「文字コード、改行コードを変更して保存する。」より <blockquote> 文字コードの変更 set fileencoding=文字コード set fenc=文字コード (上のコマンドの短い形式。こちらでも良い。) set fileencoding=euc-jp (エンコーディングEUC-JPに変更。) set fileencoding=shift_jis (エンコーディングSHIFT_JISに変更。) set fileencoding=utf-8 (エンコーディングUTF-8に変更。)

ファイルフォーマットの種類の変更 set fileformat=ファイルフォーマットの種類 set ff=ファイルフォーマットの種類 (上のコマンドの短い形式。こちらでも良い。) set fileformat=dos (改行をWindowsの形式に変更。) set fileformat=mac (改行をMacの形式に変更。) set fileformat=unix (改行をUnixの形式に変更。)

を実行します。 </blockquote>

文字コードの自動認識

ずんWikiのコンテンツを参照。

画面の分割

横に分割する場合:vsp filename

置換

コマンドモードで


%s/hoge/huga

とかやると一括置換とかできる。

ひとつだけ置換する場合は


s/hoge/huga/g

指定行(この場合1行目から10行目)に対して適用する場合


1.10s/hoge/huga/g

vim正規表現を参照

phpの関数をC-n C-pで補完する

A DAY IN THE LIFEより

<blockquote> dictionaryで指定した辞書ファイルはC-xC-kで補完してくれるけど、これ打つのがめんどくさくてつかってなかった。でも completeでkオプションを指定すると、C-n C-pでも補完が出来るようになるってことを知った。けっこーphpの関数は長いのが多いんでいつものC-n C-pで補完が出来ると楽ー。以下覚え書きメモ。

まずはphpの関数一覧の辞書ファイルを作る


$ mkdir -p ~/.vim/dict/
$ php -r '$f=get_defined_functions();echo join("\n",$f["internal"]);'|sort > ~/.vim/dict/php_functions.dict

で、.vimrcに

" phpの関数補間

autocmd FileType php :set dictionary+=~/.vim/dict/php_functions.dict

" 辞書ファイルからの単語補完

:set complete+=k

とか。 </blockquote>

suspendとresume

vimで作業してる時に、シェルでなんかしたいなー。って時は


:suspend

ってやってシェルに戻って、作業が済んでまたvimりたいなーって 思った時にシェルから


fg

と入力するとvimが出てくる((fgはフォアグラウンドの略か?))

Option

highlight

Highlighting groups for various occasions

SpecialKey>-----SpecialKey
NonText>--------NonText
Directory>------Directory
ErrorMsg>-------ErrorMsg
IncSearch>------IncSearch
Search>---------Search
MoreMsg>--------MoreMsg
ModeMsg>--------ModeMsg
LineNr>---------LineNr
Question>-------Question
StatusLine>-----StatusLine
StatusLineNC>---StatusLineNC
VertSplit>------VertSplit
Title>----------Title
Visual>---------Visual
VisualNOS>------VisualNOS
WarningMsg>-----WarningMsg tclLineContinue
WildMenu>-------WildMenu
Folded>---------Folded vimFold
FoldColumn>-----FoldColumn
DiffAdd>--------DiffAdd
DiffChange>-----DiffChange
DiffDelete>-----DiffDelete
DiffText>-------DiffText
SignColumn>-----SignColumn

memo

上級者への道

/ ? * #を使い込なす。

--pythoninterp

くそー!結構無駄に時間くってしまった! ubuntuの場合

aptitude install python-dev

しておかないとだめ。その上で

--python-config-dir

--puthon-config-dir=/usr/local/python2.4/config

にする。なんだ。rubyinterpもruby-devがないから入ってないのか。気がつかなかった。

はてなブックマーク - キーワード「vim」を含む新着エントリー

vim病

Notepadなどのほかのエディタでも手が勝手にvimキーバインドを叩いてしまう病気。一度発症するとイライラしてまともに作業できなくなってしまう。

関連リンク