FrontPage  Index  Search  Changes  Login

Vim練習帳

vimを仕事に使えるレベルまで慣れる。

TeraPaderがvim使いになるまで記?

操作

入力系モード開始

挿入カーソル位置左側へi
カーソル位置右側へa
次の行o
前の行O

検索

/[検索文字列]

おもむろに * を押すと、カーソルの下にある単語を検索する。

置換

:%s/[検索文字列]/[置換文字列]

C-r / で、直前に検索した検索パターンを呼び出せる

(TeraPadでいう)フリーカーソルモード

ON

:set virtualedit=all

OFF

:set virtualedit=

まあ基本的には C-v で。

文字コード

(TeraPadでいう)文字コード指定再読込

:e ++enc=cp932

(TeraPadでいう)文字コード指定保存

:set fenc=utf-8
:w

ビジュアルモード(範囲選択)

これを覚えたら一気に世界が変わる

文字単位
v
行単位
v
ブロック選択
C-v

範囲のみを置換

ビジュアルで範囲選択→:%s/...

まとめてコメントアウト

  • C-v押してブロック選択
  • コメント入れるところを縦に選択
  • I(Shift+i) もしくは A(Shift+a)押す
  • 挿入モードになるのでコメント文字入れてEsc押す
  • まとめてコメントアウトされる
    • クエリを一括で作るときとかにも便利

バッファ(タブみたいなもん) / 画面分割

全て保存
:wa
横分割
:sp
縦分割
:vsp
分割されている空間を移動
<C-w>→hjkl
分割されているのを1つ閉じる
<C-w>→q
  • set hidden を.vimrcに書いておくべき。
  • MiniBufExplorer を入れておくと複数のファイルを開いたときに画面上部を分割した上で開いているファイルの一覧が出て、そこからファイルを切り替えることができる。
    • うっかりMiniBufExplorerを閉じちゃったら :MiniBufExplorer とする。

設定

ファイルの位置

  • メインの設定ファイル
    • Windowsの場合、%USERPROFILE%\_vimrc、%USERPROFILE%\_gvimrc
    • *nix系なら、~/.vimrc、~/.gvimrc
  • それ以外のこまごましたファイル
    • Windowsの場合、%USERPROFILE%\vimfiles
    • *nix系なら、~/.vim/

キーバインド割り当て(map) [vimrc]

補完のキーバインド

  • Windowsでは Ctr+Space
  • MacやLinuxだとすでに使われてることが多いのでShift+Space
if has('win32')
  imap <C-Space> <C-x><C-o>
else
  imap <S-Space> <C-x><C-o>
end

補完

Ruby

vimでrubyプログラミング S.S.S. blog/ウェブリブログ

インストール (Windowsでもこれでいいとは、すばらしい!)

gem install vim-ruby
ruby C:\Commands\usr\local\bin\vim-ruby-insall.rb

PHP

おぎろぐはてな - (PHP)プログラマのためのVIM (10) - PHP向けカスタマイズ(2) タグ・補完・netrw

Ethna

$hogeManager =& $this->backend->getManager('Hoge'); とか定型句多すぎるのでスニペットを。以下プラグイン導入。

snippetEmu

その上で、~/.vim/after/ftplugin/php.vim へ以下を記載。

" Ethna snippets
exec "Snippet gd $db =& $this->backend->getDb();<CR><{}>"
exec "Snippet gm $<{name}>Manager =& $this->backend->getManager('<{name:toupper(strpart(@z,0,1)).strpart(@z,1)}>');<CR><{}>"
exec "Snippet gf $<{name}> = $this->af->get('<{name}>');<CR><{}>"
exec "Snippet sf $this->af->set('<{name}>', $<{name}>);<CR><{}>"
exec "Snippet sa $this->af->setApp('<{name}>', $<{name}>);<CR><{}>"
exec "Snippet gc $<{name}> = $this->config->get('<{name}>');<CR><{}>"

あとは gd<tab> で $db =& $this->backend->getDb(); と入力されたり、gf<tab>hoge<tab> で $hoge = $this->af->get('hoge'); になったりする。

getManagerのスニペットが長いのは $hogeFugaManager =& $this->backend->getManager('HogeFuga'); みたく、変数と名前で先頭の大文字小文字を変えるため。

今からやるならsnipMateのほうがよさげ。

フォント [gvimrc]

set guifont=VL_Gothic:h11:cSHIFTJIS

フォントはこちらをみて、VLゴシック使うようにしました。WindowsはClearTypeオンで。

ローカル設定

特定のプロジェクトではタブのインデント設定が違うときとかに、そのプロジェクトのファイルを格納しているディレクトリに.vimrc.local をおいてあるとそのディレクトリ以下のファイルの編集ではその設定が反映されるようになる設定。

Hack #112: 場所ごとに設定を用意する

Last modified:2011/05/04 03:08:28
Keyword(s):
References: