Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

vimで読み込まれるファイルについて

$
0
0

vimでの設定ファイルの考え方

  • 対象者:結局vimってどうやって設定すりゃいいんよ?って人、あるいは私と同じvim初心者
  • 前提知識:vimrcに関する知識少々
  • 必要なパッケージ:vim
  • 終着点:楽々vim環境整備♪

runtimepathが重要

vimのファイル読込においてruntimepathが重要な役割を果たします。
VimのDocumentationにはruntimepath内の特定のファイルが順繰り読み込まれることが明記されています。
さっそくruntimepath設定を見る

:setruntimepath

私のruntimepath(※ NeoBundle分は除く,Windows)

:runtimepath=~/.vim/,~/vimfiles,C:\app\Vim/vimfiles,C:\app\Vim,C:\app\Vim/vimfiles/after,~/vimfiles/after

vimやWindows以外の大半のシステムにおいて~(チルダ)はホームディレクトリを指します。
これはWindows7ならC:\Users\user_name ,Linuxなら/home/user_nameを指しているかと思います。
ここから分かるように設定ファイルはホームディレクトリを基準に配置するのが良いといえるでしょう。

検索されるファイルとディレクトリは以下の通りです。

  • filetype.vim ファイル名によるfiletypeの決定
  • scripts.vim ファイルの内容によるfiletypeの決定
  • autoload/ 自動的に読み込まれるスクリプト
  • colors/ カラースキーマの定義
  • compiler/ コンパイラ定義ファイル
  • doc/ ヘルプドキュメント
  • ftplugin/ ファイルタイプの決定(ftdetectも同じ用途だと思う)
  • indent/ インデントの設定
  • keymap/ キーマップの定義
  • lang/ メニューの翻訳(GVim)
  • menu.vim メニューの設定(GVim)
  • plugin/ プラグインスクリプト
  • print/ 印刷用
  • spell/ スペルチェック用
  • syntax/ 文法
  • tutor/ チュートリアル

Windowsはエクスプローラーから.(ドット)で始まるファイルやフォルダは作れないため、コマンドを使用して.vimrcを作成することをおススメします。
_vimrcは削除して.vimrcに追記してね。

.vimrcがある人は不要
>echo""this is .vimrc >> .vimrc
.vimrc
if has('win32')>> .vimrc
    setruntimepath^=~/.vim/>> .vimrc
endif

結局どう設定するか

~/.vim以下に設定したいディレクトリを作成して各種ファイルを配置します。
私はcolors, ftdetect, indentを定義・設定しています。
dotfilesを使った管理を行うとシステム間の同期が更に楽です。

$ cd ~ # windows -> cd %HOMEPATH%$ mkdir .vim
$ cd .vim
$ mkdir colors ftdetect, indent
  • colors内には自分でカスタマイズしたカラースキーマ定義ファイルを入れます。
  • ftdetect内には拡張子.vimファイルを入れて、拡張子ごとのファイルタイプ判別をカスタマイズします。
  • indent内には拡張子.vimファイルを入れて、ファイルタイプ毎のインデント設定をカスタマイズします。
:echo $VIM

で表示されるディレクトリ以下のファイルを編集することなかれ、vimをインストールするたびにまた設定しなきゃいけなくなりまっせ。

結果的にどうなるのか

ftdetectではcls拡張子の時は判定によってはファイルタイプをvbに変えたいとか。
indentではファイルタイプごとにインデントを変更したいとかが実現できます。
例えば通常時はtabで4文字分のホワイトスペースを入れたいけど、ruby系のファイルを編集する時は 2文字分にするとか。

実例というよりは私の設定

それぞれのディレクトリに置いてね。

  • colors

desert.vimを改造したものを使っています。
自分好みにカスタマイズしたい人はこれがオススメです。

  • ftdetect

例えば.clsのファイルの内容によってはファイルタイプをvbにしたい場合。(if文の最初の条件をfiletype.vimに更に追加した感じ)
やっている事自体はファイルの内容に特定の文字列が含まれていればファイルタイプはvbにするよって感じです。

cls.vim
auBufRead,BufNewFile *.cls
    \ if getline(1).getline(2).getline(3).getline(4).getline(5).getline(6).getline(7).getline(8).getline(9).getline(10)=~? 'VB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)'|
    \   setfiletype=vb|
    \ elseif getline(1)=~'^%'|
    \   setfiletype=tex |
    \ elseif getline(1)[0] =='#'&& getline(1)=~'rexx'|
    \   setfiletype=rexx |
    \ else|
    \   setfiletype=st|
    \ endif
  • indent

例えばファイルタイプがrubyのインデントを2文字にしたい場合

ruby.vim
setlocalexpandtabsetlocalshiftwidth=2setlocalsofttabstop=2setlocaltabstop=2setlocalautoindent

こんな感じです。

実例の他には

がりがりとプラグインを書く人ならautoloadpluginにファイルを追加します。
また私みたいなライトユーザが触るとしたらkeymapやGVimを使う人でしたらmenu.vimなどでしょうか。
もし、自作したpluginをgithubで公開するような人なら説明文をdocに入れておくと親切ですね。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>