vimからDBアクセスできるという素晴らしいプラグイン.
導入
面倒なのでVundle使う. この辺は個人のお好みで.
以下をvimrcに記述.
Plugin 'vim-scripts/dbext.vim'
設定
プロファイル(接続情報)を書く必要がある.
MySQLの場合
当然だけど, MySQLクライアントが導入されている必要がある.
以下の設定の場合.
項目 | 値 |
---|---|
プロファイル名 | mysqlnodb |
ホストIP | 127.0.0.1 |
ユーザ名 | root |
パスワード | password |
DB名 | test |
.vimrcにこんな感じで書く.
let g:dbext_default_profile_mysqlnodb = 'type=MYSQL:host=127.0.0.1:user=root:passwd=password:dbname=test'
Oracleの場合
項目 | 値 |
---|---|
プロファイル名 | myORA |
ホスト | 127.0.0.1 |
ユーザ | scott |
パスワード | tiger |
let g:dbext_default_profile_myORA = 'type=ORA:srvname=127.0.0.1:user=scott:passwd=tiger'
PostgreSQLの場合
ちょっと試した限りではPostgreSQLが一番癖があった.
項目 | 値 |
---|---|
プロファイル名 | myORA |
ホスト | 127.0.0.1 |
ユーザ | test_user |
DB名 | test_db |
パスワード | test_password |
ポート | 5432 |
let g:dbext_default_profile_postgres = 'type=PGSQL:host=127.0.0.1:user=test_user:dbname=test_db:passwd=test_password:port=5432'
記述自体はこれだけなんだけど, 実行すると下記の様に怒られる.
dbext:PostgreSQL requires a '$HOME/.pgpass' file in order to authenticate. This file is missing. If you are using a local connection, you can create an empty .pgpass file. The b inary 'psql' does not accept commandline passwords.
.pgpassを作ると怒られずに済んだ.
$ touch ~/.pgpass
あとロケール設定していないと怒られた.
SQLiteの場合
以下の設定の場合.
項目 | 値 |
---|---|
プロファイル名 | sampleSQLite |
DBファイルパス | ~/test.db |
let g:dbext_default_profile_sampleSQLite = 'type=SQLITE:dbname=~/test.db'
プロファイルの外部ファイル化
プロファイルは.vimrcとは別管理したい.
そこで.vimrcに外部ファイルがあれば読み込む様に記述して, ~/.dbext_profileという名前のファイルに上記のプロファイル設定はまとめて書く事にした.
" プロファイルを記述したファイルがあれば読み込む if filereadable(expand('~/.dbext_profile')) source ~/.dbext_profile endif
履歴ファイル名を変える
履歴機能は便利なんだけど, ホームが汚れるのが嫌なのでファイル名を変えた.
let g:dbext_default_history_file = '~/.dbext_history'
使い方
これだけあれば仕事にも使えそう.
Normalモード
コマンド | 機能 |
---|---|
|
テーブルの一覧を取得 |
|
カーソル下のテーブル名のテーブル定義を取得 |
|
指定テーブル名のテーブル定義を取得 |
|
カーソル下のSQLを実行 |
|
接続プロファイルの切替 |
|
Historyを表示 |
|
カーソル上のテーブルをSelect |
Insertモード
補完が便利っぽい.
*.sqlファイルを開いていない時には以下の様にfile typeを指定してやる必要がある.
:set ft=sql
コマンド | 機能 |
---|---|
<C-c>t | テーブル名を補完 |
<C-c>v | ビュー名を補完 |
<C-c>c | カラム名を補完 |
<C-c>a | シンタックスを補完 |
<C-c>L | テーブル補完中に押すとカラムを全て出力 |
何気に辞書登録されているので
<C-x> + <C-k>
が使える.便利.