2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

私のVim (Windows環境) (メモ)

Last updated at Posted at 2024-03-10

WindowsでVimを使っている初心者Vimmerです.

自分なりに色々Vimをカスタマイズする中で、「これは新しいPCへと変えたときに今の設定を復元するのは苦労しそうだ」と思い、ここにまとめることとしました.

.vimrcをもとに、各行を説明する中で、vimとは別にインストールしたもの達のその手順を書きます.

:warning:をつけた場所は、私も理解しているとは言い難い項目であることを示しています.その下のリンクを参照することを勧めます.

このまとめも有効です.私の解説を見ずともだいたいのことが書いてあるでしょう.

.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

:warning:ファイルタイプの読み取りをしてくれるようになります.このとき、自動でインデントの設定がされます.

syntax on

:warning:Syntaxの強調表示を、デフォルトの設定で有効化します.
自分で設定する場合、syntax enableとします.

set number

行番号を表示します.
set relativenumberだと、カーソルのある行から数えた行数が表示されます.

set list

vimは標準では空白文字を可視化しません.

listcharsオプションで、各空白文字を何と置き換えるか設定しておき、set listでその置き換えを有効化します.

set hlsearch

検索結果をハイライトします.

set incsearch

検索するときに、語句の入力途中の時点から、その時点での検索結果を表示できるようにします.

set ruler

右下にカーソル位置を表示させます.

statuslineオプションでもっと詳しくいじることができそうです.(まだvimhelpをよく読めていません.)

set cindent

C言語用に、自動でインデントをかけてくれるようになります.

他にもautoindentsmartindentオプションなどあります.

Tab文字

Vimのtab文字の見栄えや幅関連の解説をします.

主な命令は4つです.4のところには、好きなように数字を入れてカスタマイズができます.

set tabstop=4
set expandtab

set shiftwidth=4
set softtabstop=4

で、合わせて4つです.

tabstopexpandtab

この2つのオプションでは、tab文字のVimエディタ上での見栄えを設定できます.

tabstopで設定した数値は、Tab文字がエディタ上で空白何個分となるかを示します.
expandtabを設定すれば、tab文字は全てtabstopで設定した個数分のスペースと置き換えられます.

shiftwidthsofttabstop

この2つのオプションでは、Vimで編集するときのインデント幅を設定できます.

shiftwidth>>なとのコマンドで入力するインデントの幅を示します.
softtabstopは、挿入モードでのBackspaceやTabの入力で、どれだけの幅の空白を変化させるかを示します.

伝えておきたいこと

下2つのオプションは、Vimの見栄え上での幅を示します.ゆえにexpandtabが指定されてない場合、Vimは見栄えをもとに自動でTabを挿入します.
Tabは、tabstopで指定された量の空白文字に達したとき、自動で行頭から置き換わります.

例えば、softtabstop=4expandtabは指定なし、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

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?