おぎろぐはてブロ

なんだかんだエンジニアになって10年以上

(PHP)プログラマのためのVIM (9) - PHP向けカスタマイズ

Yahoo!のAndreiさんのプレゼンのPDFを勉強がてら訳していってます。訳は微妙です。

  1. カーソル位置・カーソル移動・マーク・挿入
  2. 削除・検索
  3. 置換・テキストオブジェクト
  4. コピー/削除/貼り付け、レジスタ
  5. undo
  6. ビジュアルモード、ウィンドウ、タブ
  7. 補完・マップ・オプション
  8. セッション、misc、ヘルプ

そのまえに

ここからは、Andreiの実際使っているvimの設定についての説明が含まれます。ファイルは元記事からダウンロードすることができます。

カスタマイズ

  • vimをカスタマイズするには、~/.vimディレクトリにファイルを配置
  • filetype plugin on, filetype indent on
.vimrc - グローバル設定
.vim/
	after/ - 最後に読み込まれるファイル
		ftplugin/
		plugin/
		syntax/
		...
	autoload/ - 自動で読み込まれるファイル群
	colors/   - 配色(color scheme)
	doc/      - プラグインドキュメント
	ftdetect/ - ファイルタイプ判別
	ftplugin/ - ファイルタイププラグイン
	indent/   - インデントスクリプト
	plugin/   - プラグイン
	syntax/   - syntax scripts

PHP: 文法チェック

  • vimは、任意のビルド/文法チェックコマンドをサポートする
  • makeprgerrorformat を適切に設定すると、、
    • :set makeprg=php\ -l\ %
    • :set errorformat=%m\ in\ %f\ on\ line\ %l
  • :makeをたたくだけ!
  • 文法エラーがあった行にカーソルが移動します

PHP: ペアをマッチさせる

  • %コマンドを使うことに慣れよう (カーソル下の文字に対してマッチするポジションに移動)
  • (), {}, []などに使う
  • PHPとHTMLタグの間の移動にも利用できる
  • matchit.vimプラグインを使おう
  • だけど、syntax/php.vimは、マッチングルールにバグとtypoがあるので、自作してるよ

PHP: ブロックオブジェクト

  • vim組み込みのオブジェクトに似たもの
    • aP - PHPブロック(タグを含む)
    • iP - PHPブロック内部のテキスト
    • vaP - 現在のPHPブロックをタグを含んで選択する
    • ciP - 現在のPHPブロック内のテキストを変更する
    • yaP - 現在のPHPブロックをタグを含んでコピーする
  • 自分の.vim/ftplugin/php.vimの中で提供してる

PHP: 文法オプション

  • VIMはすげーつかえるPHPの構文プラグインがついてくる
  • いくつかのオプションを
    • let php_sql_query=1 - 文字列中のSQLをハイライトする
    • let php_htmlInStrings=1 - 文字列中のHTMLをハイライトする
    • let php_noShortTags = 1 - ショートタグ (<?を無効にする→ハイライト除外にする)
    • let php_folding = 1 - クラスと関数の折りたたみ(folding)を有効にする

PHP: 折りたたみ(folding)

[補足] PHPって付いてるけど、PHPに限ったことではないです

  • 折りたたみのコントロールをおぼえよう
    • zo - 折りたたみを開く (カーソルが折りたたまれた行の上にあるとき)
    • zc - 折りたたみを閉じる (折りたたまれる範囲中で)
    • zR - ぜんぶ開く
    • zM - ぜんぶ閉じる
    • zj - 次の折りたたみに移動
    • zk - 前の折りたたみに移動