# space-vim

## 概要

space-vimは、VimおよびNeoVim向けのプラグイン配布システム（ディストリビューション）です。spacemacsの設計思想にインスパイアされ、モジュラーなレイヤーシステム、ニーモニックなキーバインディング、美しいUIを提供します。`.spacevim`設定ファイルを通じて完全にカスタマイズ可能で、初心者から上級者まで幅広いユーザーに対応しています。

## 主な機能

| 機能カテゴリ | 説明 |
| --- | --- |
| レイヤーシステム | モジュラー設計によるプラグイン管理。+lang、+tools、+themes等のカテゴリに分類された50以上のレイヤーを提供 |
| ニーモニックキーバインディング | SPC（Space）キーをリーダーキーとした直感的なコマンド体系。vim-which-keyによるキーガイド表示 |
| マルチプラットフォーム対応 | Linux、macOS、Windowsをサポート。Vim 8およびNeoVimに最適化 |
| 美しいUI | space-vim-dark/space-vim-themeカラースキーム、eleline.vimステータスライン |
| 言語サポート | Python、Go、Rust、JavaScript、TypeScript、C/C++等22以上の言語レイヤー |
| 補完・LSP | coc.nvim、YouCompleteMe、deoplete等複数の補完エンジンに対応 |
| ファジーファインダー | fzf、CtrlP、vim-clapによる高速ファイル検索 |
| バージョン管理 | Git統合（vim-fugitive、vim-signify）およびGitHubサポート |

## 技術スタック

### コア

- フレームワーク: Vim/NeoVim プラグインシステム
- 言語: Vim script (VimL)
- プラグインマネージャー: vim-plug

### 主要ライブラリ

- vim-which-key: キーバインディングガイド表示
- vim-better-default: デフォルト設定の改善
- eleline.vim: 軽量ステータスライン
- space-vim-theme: テーマ（ダーク/ライト）
- fzf.vim: ファジーファインダー統合
- vim-fugitive: Git操作
- coc.nvim / YouCompleteMe: 補完・LSP

## ディレクトリ構成

```
space-vim-master/
├── init.vim              # メインエントリーポイント
├── init.spacevim         # デフォルト設定テンプレート
├── install.sh            # Linux/macOS用インストーラー
├── install.cmd           # Windows用インストーラー
├── uninstall.sh          # アンインストーラー
├── Makefile              # Make用ビルドスクリプト
├── core/                 # コア機能
│   ├── autoload/         # 遅延読み込み関数
│   │   └── spacevim/     # spacevim名前空間
│   │       ├── lang/     # 言語固有ユーティリティ
│   │       ├── plug/     # プラグイン設定
│   │       ├── vim/      # Vim機能ラッパー
│   │       └── autocmd/  # 自動コマンド
│   ├── doc/              # ヘルプドキュメント
│   ├── ftdetect/         # ファイルタイプ検出
│   ├── ftplugin/         # ファイルタイプ固有設定
│   └── plugin/           # プラグインスクリプト
├── layers/               # レイヤー定義
│   ├── +checkers/        # 構文チェッカー
│   ├── +completion/      # 補完エンジン
│   ├── +distributions/   # 配布設定
│   ├── +fun/             # エンターテインメント
│   ├── +lang/            # 言語サポート（22言語）
│   ├── +misc/            # その他
│   ├── +programming/     # プログラミング支援
│   ├── +themes/          # テーマ
│   ├── +tools/           # ツール統合
│   ├── +version-control/ # バージョン管理
│   ├── +vim/             # Vim拡張
│   └── LAYERS.md         # レイヤー一覧
├── private/              # ユーザープライベート設定
├── assets/               # アセットファイル
├── ci/                   # CI設定
└── .github/              # GitHub設定
```

## セットアップ

### 必要条件

- Vim 8以上 または NeoVim
- Git
- curl（自動インストール時）
- 推奨: fzf、ripgrep(rg)、ag（検索機能強化）

### インストール手順

#### Linux/macOS（ワンラインインストーラー）

```bash
bash <(curl -fsSL https://raw.githubusercontent.com/liuchengxu/space-vim/master/install.sh)
```

#### Makefile使用

```bash
git clone https://github.com/liuchengxu/space-vim.git ~/.space-vim
cd ~/.space-vim
make vim     # Vim用インストール
make neovim  # NeoVim用インストール
```

#### Windows

`install.cmd`をダウンロードし、管理者権限で実行します。

#### 手動インストール

1. リポジトリをクローン:
```bash
git clone https://github.com/liuchengxu/space-vim.git --single-branch ~/.space-vim
```

2. vim-plugをインストール:
```bash
# Vim用
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

# NeoVim用
curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
```

3. シンボリックリンク作成と設定コピー:
```bash
# Vim
ln -s ~/.space-vim/init.vim ~/.vimrc
cp ~/.space-vim/init.spacevim ~/.spacevim

# NeoVim
ln -s ~/.space-vim/init.vim ~/.config/nvim/init.vim
cp ~/.space-vim/init.spacevim ~/.spacevim
```

4. プラグインインストール:
```bash
vim +'PlugInstall' +qall
```

## 開発

### カスタマイズ

`~/.spacevim`ファイルを編集してカスタマイズします:

```vim
" レイヤー有効化
let g:spacevim_layers = [
      \ 'fzf', 'better-defaults', 'which-key',
      \ 'python', 'go', 'git',
      \ ]

" リーダーキー設定（デフォルト: Space）
" let g:spacevim_leader = "<\Space>"

" ローカルリーダーキー（デフォルト: ,）
" let g:spacevim_localleader = ','

" True Color有効化
" let g:spacevim_enable_true_color = 1

" 独自プラグイン追加
function! UserInit()
  Plug 'user/plugin'
endfunction

" 設定オーバーライド
function! UserConfig()
  set norelativenumber
endfunction
```

### コマンド

| コマンド | 説明 |
| --- | --- |
| `LayerStatus` | 有効レイヤーの状態確認 |
| `LayerCache` | レイヤー情報のキャッシュ更新 |
| `SpaceInfo` | space-vimのデバッグ情報表示 |

### アップデート

```bash
cd ~/.space-vim
make update
# または
git pull origin master
```

### アンインストール

```bash
cd ~/.space-vim
make uninstall
# または
./uninstall.sh
```

### キーバインディング

- `SPC ?` : キーバインディング一覧表示
- `SPC b` : バッファ関連コマンド
- `SPC f` : ファイル関連コマンド
- `SPC w` : ウィンドウ関連コマンド
- `,` (LocalLeader) : 言語固有コマンド

### ライセンス

MIT License
