WindowsでVimを使っている初心者Vimmerです.
自分なりに色々Vimをカスタマイズする中で、「これは新しいPCへと変えたときに今の設定を復元するのは苦労しそうだ」と思い、ここにまとめることとしました.
.vimrc
をもとに、各行を説明する中で、vimとは別にインストールしたもの達のその手順を書きます.
をつけた場所は、私も理解しているとは言い難い項目であることを示しています.その下のリンクを参照することを勧めます.
このまとめも有効です.私の解説を見ずともだいたいのことが書いてあるでしょう.
.vimrc
こんな感じです.
filetype plugin indent on
syntax on
set number
set listchars=eol:\\u21b5
set list
set hlsearch
set incsearch
set ruler
set cindent
set expandtab
set tabstop=4
set shiftwidth=4
set softtabstop=4
set backspace=indent,eol,start
set wildmenu
map <F2> :!make.bat <CR>
map <F5> :redraw<CR>:MinimapRefresh<CR>
map <F8> :TagbarOpen<CR>:NERDTree<CR>
nmap <c-l> <c-w>l <F5>
nmap <c-h> <c-w>h <F5>
nmap U <c-r>
nmap <Tab> gt <F5>
nmap <Esc><Esc> :nohlsearch<CR>
call plug#begin()
Plug 'preservim/nerdtree'
Plug 'preservim/tagbar'
Plug 'wfxr/minimap.vim'
call plug#end()
let g:minimap_auto_start = 1
let g:minimap_auto_start_win_enter = 1
インストールするもの
インストールすべきものは以下の通りです.
各行の大体の説明
見栄え系
コマンド | 役割 |
---|---|
filetype plugin indent on |
|
syntax on |
|
set number |
行番号を表示 |
set listchars=eol:\\u21b5 set list |
改行等の空白文字の可視化 |
set hlsearch |
検索結果を強調表示 |
set incsearch |
検索コマンドの入力途中でも検索結果が出るように |
set ruler |
カーソル位置を表示 |
インデント系
コマンド | 役割 |
---|---|
set cindent |
自動インデントの有効化 |
set expandtab set tabstop=4 set shiftwidth=4 set softtabstop=4 |
タブの表示、インデントの幅など |
編集系
コマンド | 役割 |
---|---|
set backspace=indent,eol,start |
バックスペースキーで消せるものを増やす |
コマンド系
コマンド | 役割 |
---|---|
set wildmenu |
コマンド補完の候補を表示 |
キーマッピング系
コマンド | 役割 |
---|---|
map nnoremap |
キーマッピング色々 |
プラグイン
プラグイン | 役割 |
---|---|
vim-plug | プラグインを管理するプラグイン |
nerdtree | ファイル構造のツリーのパネルを表示 |
tagbar | プログラム中のタグ一覧のパネルを表示 |
minimap.vim | コードのミニマップのパネルを表示 |
詳細
filetype plugin indent on
ファイルタイプの読み取りをしてくれるようになります.このとき、自動でインデントの設定がされます.
syntax on
Syntaxの強調表示を、デフォルトの設定で有効化します.
自分で設定する場合、syntax enable
とします.
set number
行番号を表示します.
set relativenumber
だと、カーソルのある行から数えた行数が表示されます.
set list
vimは標準では空白文字を可視化しません.
listchars
オプションで、各空白文字を何と置き換えるか設定しておき、set list
でその置き換えを有効化します.
set hlsearch
検索結果をハイライトします.
set incsearch
検索するときに、語句の入力途中の時点から、その時点での検索結果を表示できるようにします.
set ruler
右下にカーソル位置を表示させます.
statusline
オプションでもっと詳しくいじることができそうです.(まだvimhelpをよく読めていません.)
set cindent
C言語用に、自動でインデントをかけてくれるようになります.
他にもautoindent
やsmartindent
オプションなどあります.
Tab文字
Vimのtab文字の見栄えや幅関連の解説をします.
主な命令は4つです.4のところには、好きなように数字を入れてカスタマイズができます.
set tabstop=4
set expandtab
と
set shiftwidth=4
set softtabstop=4
で、合わせて4つです.
tabstop
とexpandtab
この2つのオプションでは、tab文字のVimエディタ上での見栄えを設定できます.
tabstop
で設定した数値は、Tab文字がエディタ上で空白何個分となるかを示します.
expandtab
を設定すれば、tab文字は全てtabstop
で設定した個数分のスペースと置き換えられます.
shiftwidth
とsofttabstop
この2つのオプションでは、Vimで編集するときのインデント幅を設定できます.
shiftwidth
は>>
なとのコマンドで入力するインデントの幅を示します.
softtabstop
は、挿入モードでのBackspaceやTabの入力で、どれだけの幅の空白を変化させるかを示します.
伝えておきたいこと
下2つのオプションは、Vimの見栄え上での幅を示します.ゆえにexpandtab
が指定されてない場合、Vimは見栄えをもとに自動でTabを挿入します.
Tabは、tabstop
で指定された量の空白文字に達したとき、自動で行頭から置き換わります.
例えば、softtabstop=4
でexpandtab
は指定なし、tabstop=8
であったときのお話をしましょう.
今、挿入モードでTabキーを打っていくことを考えます.
最初のTabでは、softtabstop
の指定に従い、見栄え上幅が4になるような空白が挿入されます.つまりスペース4つです.
次のTabでも同様に、もう一回幅が4の空白が挿入されます.すると、空白は8になりここでTab1つ分に達するので、スペース8つがTab1つに置き換わります.
これを参考にしました.
set backspace
Vimのデフォルト設定では、Backspaceキーはインデントも消してくれません、挿入モードに入ったところ以前の文字も消してくれません、改行文字も消してくれません.
故に、Backspaceキーの役割を追加指定するため、このオプションを設定します.
" 改行文字を消せるように
set backspace=eol
" 挿入モードに入った場所以前も消せるように
set backspace=start
" インデントを消せるように
set backspace=indent
set wildmenu
コマンド補完がより多機能になります.
キーマッピング
<F2>
でカレントディレクトリのmake.bat
を実行します.
よって、この設定でVimからワンタッチでプログラムを実行するには、make.bat
を作っておく必要があります
<F5>
で画面のリフレッシュを行います.
Minimapがバグるので、画面遷移を行うたびにリフレッシュすることにしました.(Minimap、必要ない気がしてきました)
<F8>
で、各種プラグインのパネルを開きます.
プラグイン
Vim-plug
nerdtree
tagbar
code-minimap
前提ソフトウェア
minimap.vim
ctags