仕事

vimエディタをカスタマイズしてみた。

最初に

前回に引き続いて、windows開発環境のカスタマイズ記事です!

前回記事はこちら!

https://www.lecu1012.com/bash_terminal_customize/

前回はbashをカスタマイズしていきましたが、今回はvimを前回同様、カスタマイズを行っていきます!

vimのカスタマイズ方法はプラグインを入れて機能を追加する方法がありますが、今回はvimrcを使ったカスタマイズ方法で修正を行っていきます!

では、今回のカスタマイズ前と後の画面はこちらになります(*’▽’)ノ

Before

After

色合いが見やすくなっただけでなく、行番号が出たり下のメニューの幅も変わっているのが分かるかと思います。見た目だけでなく、マウス利用を出来るようにしたりなど、動かした時も多少やりやすく修正を行っていたりします。

では早速修正内容の解説をしていきたいと思いますが、先に『vimとは?』を簡単に解説しておきたいと思います!

vim とは?

Vimとは、Visual Studio Code(VSCode)やAtomなどと同様、テキストエディタの一種になります!他のテキストエディタとは異なり、CUI上で動作する高機能なテキストエディタというのが特徴になります!

CUIとは、コマンドだけで操作できるコマンドプロンプトやターミナルなどのことです!

Linux環境でvimはデフォルトで入っているので、使用にあたってのインストール作業は不要です。(プラグインを導入する時はインストールが必要になります。)

ターミナルで下記のコマンドを打つとvimを立ち上げることが可能です!

$ vim [ファイル名]

 

使ってみると分かるかと思いますが、普段利用しているエディタとは操作感が異なって使い方に癖があるので上級者向けのエディタになります!

ただ、操作を覚えると高速かつ正確な編集を行うことができてプラグインも豊富にあるため、vimの捜査官を好む方も多かったりします。

転職ドラフト調査で行われた『エンジニアのエディタ使用率』で2位になっており、使い方に癖があるもののvimの魅力に取りつかれたエンジニアも多いようですね。

参考:【令和元年の注目エディタは!?】決定版!2019年の人気エディタランキング

vimの設定変更

では、早速vimの設定を変更していきたいと思います!
下記の順で修正を行っていこうと思います!

  • 設定ファイルの作成
  • vim共通の設定変更
  • 検索関連の設定変更
  • 表示関連の設定変更

では早速修正していきましょう!

設定ファイルの作成

bashの設定を変更するためには、.bashrcか.bash_profileを修正することで、設定を変更ができるといいましたが、vimも同様で.vimrcを修正することでvimの設定を変更することが可能です!

最初は設定ファイル自体がないかと思うので、下記コマンドで設定ファイルを作成していきましょう!

【ファイル作成コマンド】
$ touch ~/.vimrc

 

これでルートディレクトリ配下に設定ファイルが作られたかと思います!
設定ファイルに下記の内容を書き込んでいくことで、vim設定の変更を行えます!

set [設定項目]

 

では早速設定を変更いきましょう!

vim共通の設定変更

まずは、vim共通の設定を行っていこうかと思います。
前述した通り、set [設定項目]が変更している設定になります!

内容の説明も入れているので、こちらも設定する時に参考にしてみてください!

設定項目 内容
nobackup ファイルを上書きする前にバックアップを作る設定。
書き込みが成功してもバックアップはそのまま取っておく。
(有効:backup/無効:nobackup)
nowritebackup ファイルを上書きする前にバックアップを作る設定。
‘backup’がオンでない限り、上書きに成功した後削除される。
(有効:writebackup/無効:nowritebackup)
virtualedit=block 矩形選択で文字のない箇所でも自由に移動。
ambiwidth=double 全角文字を正しく表示させるための設定。
wildmenu wildmenuオプションを有効化。
(vimでファイルを開くときに、タブなどでファイル名を補完)
nocompatible vi互換の動作を無効設定。
現在はデフォルトで無効になっているそうですが、おまじない的な感じで入れています!
clipboard
=unnamed,autoselect
Vimでヤンク(コピー)した際、
クリップボードにも自動的にコピーする設定。
noerrorbells エラーメッセージの表示時のビープ音を消す設定。
expandtab 入力モードでTab押下時に半角スペースを挿入する設定。
noswapfile スワップファイルを作成しない設定。
smartindent 自動インデントを有効化する設定。
mouse=a vimでマウスを有効化する設定。
・n:ノーマルモード
・v:ビジュアルモード
・i :挿入モード
・c:コマンドモード
・a:上記の4モードすべて

主に私が設定した内容の説明にしているので、他にも設定できる内容はあります。
他にもおすすめな内容があれば教えて頂きたいです(*’▽’)ノ

では、続いて検索関連の設定変更を行っていこうかと思います!

検索関連の設定変更

次に検索関連の設定変更内容になります!
基本的にはvimの検索機能を使いやすく使う設定になるかと思います!

設定項目 内容
ignorecase 検索時に大文字小文字を区別しない設定。
smartcase 小文字で検索すると大文字と小文字を無視して検索設定。
wrapscan 検索が末尾まで進んだら、先頭から検索設定。
incsearch インクリメンタル検索設定。
(最初の文字が入力された時点で検索開始)
hlsearch 検索結果をハイライトで表示
nofoldenable 検索行以外を折りたたむ(フォールドする)機能を無効化。

vimを利用するときは検索は必須になるかと思うので、
是非設定してみて下さい(*’▽’)ノ

表示関連の設定変更

次に表示の設定を行います!

やっぱりエディタを使う上で、見た目は重要になってくるかと思うので、
ここではエディタの見た目を変更する設定などを説明していきます!

設定項目 内容
background=dark vimの配色が背景が黒に合わせた配色にする設定。
(暗い背景色:dark、明るい背景色:light)
shellslash Windowsでパスの区切り文字バックスラッシュではなく、スラッシュにする設定。
showmatch matchtime=1 対応する括弧やブレースを表示設定。
showmatch 対応する括弧を強調表示設定。
cinoptions+=:0 インデント方法の変更設定。
cmdheight=2 メッセージ表示欄を2行確保する設定。
laststatus=2 ステータス行を常に表示する設定。
showcmd 右下に入力中のコマンドを表示設定。
display=lastline 長い行を省略せずに表示する設定。
list 不可視文字を表示する設定。
listchars=tab:▸\ ,trail:. ” タブを ▸半スペを . で表示する設定。
history=10000 履歴を10000件保存する設定。
shiftwidth=2 インデント幅の設定。
softtabstop=2 タブキー押下時に挿入される文字幅の設定。
tabstop=2 ファイル内にあるタブ文字の表示幅の設定。
guioptions-=T ツールバーを非表示設定。
guioptions+=a ビジュアルモードで選択した範囲をクリップボードに入れる設定。
guioptions-=m メニューバーを非表示設定。
guioptions+=R 右スクロールバーを非表示設定。
title タイトルを表示設定。
number 行番号の表示設定。
nrformats= すべての数を10進数として扱う設定。
whichwrap
=b,s,h,l,<,>,[,],~
行をまたいで移動できるようにする設定。

何か所か設定変更方法がset [設定項目]とは異なる設定内容があります。
下記はset [設定内容]ではなく[設定内容]だけで変更する内容になります!

設定項目 内容
hi Comment ctermfg=3 コメントの色を水色にする設定。
nnoremap <Esc><Esc> :nohlsearch<CR><ESC> ハイライトをEscの2回押しで消去する設定。
syntax on シンタックスハイライト設定。

また、下記の設定をすることで、
行番号を選択行からの差分が表示されるようにしています!

" 行番号を現在行からの差分で表示
if exists("&relativenumber")
	set relativenumber
	au BufReadPost * set relativenumber
endif

 

vimは現在行から『~行を一括コピーする。』などの使い方をすることがあるので、
差分の数字が出ていると結構便利になるので、是非試してみて下さい(*’▽’)ノ

vimの設定変更完了!

以上で一通り、vimの設定内容の解説が終わりました!
下記に私の.vimrcを公開しておくので、良かったらご利用ください!

" ---------------------------------------
" 共通設定
" ---------------------------------------

" バックアップの無効化
set nowritebackup
set nobackup

" 文字が無くても右に移動可能
set virtualedit=block

" バックスペースで削除可能
set backspace=indent,eol,start

" 全角文字専用の設定
set ambiwidth=double

" wildmenuオプションを有効化
set wildmenu

" compatibleの無効化
set nocompatible

" ヤンクでクリップボードにコピー
set clipboard=unnamed,autoselect

" エラーメッセージの表示時にビープを鳴らさない
set noerrorbells

" 入力モードでTabキー押下時に半角スペースを挿入
set expandtab

" スワップファイルを作成しない
set noswapfile

" 改行時に入力された行の末尾に合わせて次の行のインデントを増減する
set smartindent

" バッファスクロール
set mouse=a

" ---------------------------------------
" 検索設定
" ---------------------------------------

" 検索時に大文字小文字を区別しない
set ignorecase

" 小文字で検索すると大文字と小文字を無視して検索
set smartcase

" 検索がファイル末尾まで進んだら、ファイル先頭から再び検索
set wrapscan

" インクリメンタル検索 (検索ワードの最初の文字を入力した時点で検索が開始)
set incsearch

" 検索結果をハイライト表示
set hlsearch

" 検索にマッチした行以外を折りたたむ(フォールドする)機能
set nofoldenable

" ---------------------------------------
" 表示設定
" ---------------------------------------

" バックグラウンドをダークモードに変更
set background=dark

" Windowsでパスの区切り文字をスラッシュで扱う
set shellslash

" 対応する括弧やブレースを表示
set showmatch matchtime=1

" 対応する括弧を強調表示
set showmatch

" インデント方法の変更
set cinoptions+=:0

" メッセージ表示欄を2行確保
set cmdheight=2

" ステータス行を常に表示
set laststatus=2

" ウィンドウの右下にまだ実行していない入力中のコマンドを表示
set showcmd

" 省略されずに表示
set display=lastline

" タブ文字を CTRL-I で表示し、行末に $ で表示する
set list

" タブ文字を ▸ で表示し、行末に ¬ で表示する
set listchars=tab:▸\ ,trail:.

" コマンドラインの履歴を10000件保存する
set history=10000

" コメントの色を水色
hi Comment ctermfg=3

" インデント幅
set shiftwidth=2

" タブキー押下時に挿入される文字幅を指定
set softtabstop=2

" ファイル内にあるタブ文字の表示幅
set tabstop=2

" ツールバーを非表示にする
set guioptions-=T

" yでコピーした時にクリップボードに入る
set guioptions+=a

" メニューバーを非表示にする
set guioptions-=m

" 右スクロールバーを非表示
set guioptions+=R

" タイトルを表示
set title

" 行番号の表示
set number

" Use relative line numbers
if exists("&relativenumber")
	set relativenumber
	au BufReadPost * set relativenumber
endif

" Escの2回押しでハイライト消去
nnoremap <Esc><Esc> :nohlsearch<CR><ESC>

" シンタックスハイライト
syntax on

" すべての数を10進数として扱う
set nrformats=

" 行をまたいで移動
set whichwrap=b,s,h,l,<,>,[,],~

最後に

今回はvimの設定を変更してきました!

まだ設定を変更しただけになるので、更にvimを使いやすく利用するためにはプラグインの設定など、色々と必要になってきます。

またプラグインの解説なども行っていこうかと思うので、
少々お待ちください!

今回もここまで見て頂きありがとうございます!
是非次もご覧になってください(*’▽’)ノ

ABOUT ME
くり坊
Web系フリーランスエンジニア