Skip to content

hajimemat/vimrc-framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vimrc-framework

VIMの設定を効率よく変更する為に、フレームワーク化する

インストール方法

git clone https://github.com/hajimemat/vimrc-framework .vimrc-framework
cd ~/.vimrc-framework && make

カスタマイズ

~/.vimrc.local を編集する

要求

  1. VIMを使いたい状況は色々ある。 サーバで設定ファイルを触る時、 PHPを書く時、HTMLを書く時。 デスクトップでドキュメントを書く時とか。
  2. キーマップ、テーマなど趣味によるものは機能と分けて管理する
  3. プラグインは導入しやすいように参考になる初期設定を管理する

基本設計

共通処理

共通処理となりうるもの

  1. 環境判定
  2. 設定するための処理関数

システム構成

依存ライブラリ

    • dein.vim
    • プラグイン管理用プラグイン

プラグインの利用

  1. default/プラグイン名.vimにインストールと基本的な設定を記述する
  2. 使用したいcontext/コンテキスト名.vimLoadSource('プラグイン名')で呼び出す

ContextとFlavor

作ろうとする設定をContextかFlavorかで分けて考える。

Contextは拡張機能の導入を中心に設計し、 Flavorはキーマップ、見た目の設定を中心に設計する。

どちらからも toml/context もしくは toml/flavor を利用できるものとする。

Stability

Contextに導入Stabilityを設定できる。 通常はstableを指定。 挙動としては、Context読み込み時に、Context名-{stability}.vimを読み込む。

変数名 内容
g:nora_context_stability string Stabilityを設定する
Stability 目的
stable 安定
dev 開発用

詳細設計

共通処理

  • オートコマンドグループ名はNoraAutoCmdとする
  • 新しいコンテキストを設計する場合は、READMEに追記する
  • 新しいフレーバを設計する場合は、READMEに追記する

ファイル構成

@startuml
salt
{
  {T
    + ./nvim.init <- nvim用のエントリーポイント
    + ./vimrc
    + ./config/ <- 設定置場
    + ./context/ <- コンテキスト置場
    + ./flavor/ <- フレーバー置場
    + ./kernel/ <- 共通処理置場
    + ./bin/ <- ユーティリティ
  }
}
@enduml

プロセス

@startuml
start
partition kernel/initialize.vim {
  :環境判定;
  :必要な一時ディレクトリを作成;
  partition config/default.vim {
    :プラグインに依存しない基本設定;
  }
}
partition kernel/plugins.vim {
  :dein初期処理をおこなう;
  partition コンテクストの数だけ繰り返す {
    :コンテクスト名.vimを読み込む|
  }
  :設定されたflavor名.vimを読み込む|
  :dein終了処理をおこなう;
}
end
@enduml

コンテキスト設計

Context: minimal

コンセプト: 最小限の設定で立ち上げる

@startuml
[minimal.vim] - [fzf <<ファイラー>>]
@enduml

Context: editor

コンセプト: エディターツールとしての便利セット

rectangle minimal << Context >>{
}
rectangle editor << Context >>{
package ファイラー {
    [NERDTree]
}
package 整形ツール群 {
}
}
minimal <|-- editor : 継承

基本ツール

    • h1mesuke/vim-alignta.git
    • 整列
    • tomtom/tcomment_vim
    • コメントトグル
    • tpope/vim-surround
    • 囲む
    • terryma/vim-expand-region
    • 選択範囲を増やす
    • easymotion/vim-easymotion
    • ショートカットで移動する
    • yuttie/comfortable-motion.vim
    • スクロールをスムーズ
    • sheerun/vim-polyglot
    • シンタックス詰め合わせ
    • jiangmiao/auto-pairs
    • 自動でペアを入力する

NERDTree

    • scrooloose/nerdtree
    • Xuyuanp/nerdtree-git-plugin

Git

参考: http://wakame.hatenablog.jp/entry/2017/05/03/222511

    • airblade/vim-gitgutter
    • tpope/vim-fugitive
    • vim-scripts/gitvimrc.vim

Markdown

    • plasticboy/vim-markdown
    • Tocコマンドでヘッダのアウトライン表示
    • godlygeek/tabular
    • テーブルフォーマット

Context: desktop

デスクトップ利用前提

プレビュー環境

(参考)[https://github.com/iamcco/markdown-preview.nvim]

    • junegunn/goyo.vim
    • tyru/open-browser.vim
    • VIからブラウザを開く為のプラグイン
    • iamcco/markdown-preview.nvim
    • マークダウンをリアルタイムに確認するプラグイン

Context: ide

開発ツールとして使う場合

フレーバ設計

Flavor: default

デフォルトだと思うキーマップ設定

Flavor: nora

Nora開発のデフォルトキーマップ

Flavor: hajimemat

Flavor: noraにカラースキーマnanotech/jellybeans.vimを追加

課題

  • set nocompatibleがneovimdだと警告がでる

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •