はじめてのVim (てきとー補完)

/web/tool

Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。

けっこー前の話ですが、Sugamo.vimってのやりました。その3回目で軽く話したスライド、のURLをメモっておきます。参加者はthincaさんみたいなマスタークラスにも来て頂けましたが、初心者ユーザも相当数おりました。で、事前に「ダウンロードから教えてくれ」とあったのでそのようにした。このスライドは、そういうレベルです。あしからず。LT用だから薄いし軽いし。

» Vimの基本、超入門

これだけってのも難なので、Vim環境の構築メモも置いておきましょう。
まず、俺の環境は以下。あんまり弄っていない。

» GitHub: sigwyg/dotfiles

具体的な導入手順はREADMEに書いてますが、内容はMac/Linux環境下でのpathogen.vimを使ったプラグイン管理であります。ちなみに作業はMacでやっているので、Win環境でpathogenがどういう扱いを受けてるのかは寡聞にして知らない。まあできんじゃね?

※注: 2011-04-27現在は、Vundle環境に移行済みです。この記事は過去、Git + patogenなVim環境だった時に書いています。

~/dotfiles/
    .git          
    .gitignore
    .gitmodules
    .vimrc
    .gvimrc
    .vim
      ├── autoload
      │   └── pathogen.vim
      ├── colors
      ├── ftplugin
      ├── bundle
      │   ├── pathogen
      │   ├── Gundo (プラグイン毎の、任意のフォルダ名)
      │   │   ├── README
      │   │   ├── README.markdown
      │   │   ├── doc
      │   │   │   ├── gundo.txt
      │   │   │   └── tags
      │   │   └── plugin
      │   │       └── gundo.vim
      │   ├── QuickBuf
      │   ├── The-NERD-tree
      │   ├── ...
      │   ├── ..
      │   └── .
      ├── backup
      └── swap
    .bashrc
    .bash_profile 
    README

pathogen.vimとは

pathogen.vimってのは、通常は「~/.vim/plugin/」だとか「~/.vim/autoload」とかに放り込んだり込まれたりするVimプラグインを、「~/.vim/bundle/[プラグイン名]/」といったプラグイン単位のディレクトリで管理できる、ようになるVimプラグインです。

まあ、「なんたら.vim」ファイル1個だけのプラグインなら「~/.vim/plugin/」に入れるだけでも大した手間はないんだけど、重量級のプラグインだとdocとかsyntaxとかいろんなファイルをいろんなフォルダに入れなきゃいけなくて、そういうのが幾つかあるとプラグイン管理がカオスになる。消し忘れとか消し忘れとか消し忘れとk(ry

pathogen.vim流の管理なら、任意のディレクトリをプラグイン単位で消したり入れたりするだけで済むから、健康で文化的なVimプラグイン探しができるわけだ。OK?

+Gitで管理

んで、俺はGitのsubmoduleと組んで使ってる。特に珍しくもない。ググれば幾らでも見つかる。いちお初心者向けという出だしだったので、概要をピックアップすると、

  1. ユーザのホームディレクトリに移動する
  2. GitHubからdotfilesのcloneを落としてくる
  3. 設定ファイルへのシンボリックリンクを張る (dotfiles下でGit管理するため)
  4. いちおgit submodule init -> update
  5. swap, backup, autoloadのディレクトリを用意する
  6. 「~/.vim/autoload/pathogen.vim」にシンボリックリンクを張る (まず.vimrcがpathogenを探すので)

vim.orgに登録されているVimプラグインは、もう殆どGitHubに登録されているので、Vim環境をGitで管理しているならgit submodule addしていく方法が非常に楽だということ。ただこの方法の難点として、git statusしたときに以下みたくなることがある。

# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   .vim/bundle/The-NERD-tree (untracked content)
#   modified:   .vim/bundle/neocomplcache (untracked content)
#   modified:   .vim/bundle/snipmate (untracked content)
#   modified:   .vim/bundle/vim-surround (untracked content)
#
no changes added to commit (use "git add" and/or "git commit -a")

非常にウザい。解決策は2つ ...しか見つけられなかった。

  1. git status --ignore-submodules を使う
  2. .gitmodulesにてsubmodule毎に「ignore = untracked」を追加

どっちも面倒だよなー。なんか良い方法はないものか。募集中!

Note: スパム対策が面倒なので、コメント投稿を廃止しました。以前のコメントは残します。
ご意見・ご要望はtwitter@sigwygかはてブコメントにて。