Tim Pope 氏作の vim-projectionist は、高度なプロジェクトナビゲーション、関連ファイル移動 (:A)、スケルトンテンプレートの自動展開を提供します。
基本設定 (.projectionist.json)
プロジェクトのルートディレクトリに .projectionist.json を配置します:
{
"src/*.js": {
"alternate": "test/{}.test.js",
"type": "source"
},
"test/*.test.js": {
"alternate": "src/{}.js",
"type": "test",
"template": [
"import { describe, it, expect } from 'vitest';",
"",
"describe('{}', () => {",
" it('works', () => {",
" expect(true).toBe(true);",
" });",
"});"
]
}
}
関連ファイル (Alternate File) 移動コマンド
| コマンド | 動作 |
|---|---|
:A |
現在のウィンドウで関連ファイルを編集 |
:AS |
水平分割ウィンドウで関連ファイルを編集 |
:AV |
垂直分割ウィンドウで関連ファイルを編集 |
:AT |
新しいタブで関連ファイルを編集 |
:AD |
現在の空バッファにテンプレートを展開 |
プロジェクトコマンドとルート移動
| コマンド | 動作 |
|---|---|
:Cd |
カレントディレクトリをプロジェクトルートに変更 |
:Cd {path} |
プロジェクトルート配下の相対パスへ移動 |
:Lcd |
ローカルカレントディレクトリ (:lcd) をルートに変更 |
:ProjectDo {cmd} |
プロジェクトルート上でシェルコマンドを実行 |
カスタムタイプコマンド
"type": "model" を定義すると、:Emodel、:Smodel、:Vmodel、:Tmodel コマンドが自動作成されます:
{
"app/models/*.rb": {
"type": "model",
"alternate": "spec/models/{}_spec.rb"
}
}
:Emodel user を実行すると app/models/user.rb に即座にジャンプできます。