0
0

More than 1 year has passed since last update.

Server用に使用する最小設定の.vimrcを作った

Posted at

前回の投稿から、大分期間が空いてしまいました。
実は、転職などの身辺の変化があり記事を書いていませんでした。

今回はある切っ掛けでViを触ることがあったのですが、
普段のVim/Neovimとは違う操作感で思ったような操作ができず、途中からVimの設定を構築して使用しました。
開発のエディタとしてはNeovimを使用しているので、外部環境で使える最小設定のVimが必要と感じました。

新規のVimmerが増えたら良いなという思いも込めて、必要と思う設定を書き出してみました。
それでは、私が感じたViとVimの違いとともに最小設定の.vimrcを構築していきましょう。

ViとVimの違い

もともとVimとはViの拡張版であり、基本的な操作は変わりありません。
しかし、30年のバージョンアップを重ねてViだけでは実現できない機能もあります。

  • 入力モード中、Backspaceで文字を消せない。
  • Backspaceでは前方向にカーソル移動して、そこから入力を続けると、文字列の挿入ではなく置き換えになってしまう。
  • uで戻せるのは1つ前の操作のみ。
  • テキストオブジェクトを使用して、Vimでは可能なciwci'などの操作ができない。

上記の操作が、私が実際にViを使用した際に、Vimとは違うと感じた部分になります。
これら以外にも違いはありますが、それらに関してVimの中で:h compatibleを実行すればヘルプを確認できます。

初期状態のVimでもViより高機能な設定が施されているので、.vimrcを作成しなくてもその恩恵を受けること "は" 可能です。

でも、せっかくVimを使うんですから、.vimrcを作成してちょっとした操作を快適にしていきましょう!

Vimのインストール

もしVimがインストールされていなければ、各環境の方法でVimをインストールしてください。

Linuxディストリビューションでは、まれにviでVimが起動するようにエイリアスが設定されている場合があります。
vivimの両方を試してみてVimが起動しなかったらインストールしたら良いと思います。

Macでは初期にMacVimと呼ばれる物がインストールされているようですが、通常のVimとは違いmacOSに合わせた設定がされているらしいので、
通常のVimをインストールすることをお勧めします。

vimrcを作成して、どこでも同じ操作感でvimする

まず始めに、.vimrcはホームディレクトリに置く必要があります。
ホームディレクトリに置くことで自動的にVimが読み込んでくれます。

一応、OSによる違いがありますので、以下がその早見表になります。

OS Path
Windows $HOME/_vimrc
$HOME/vimfiles/vimrc
Mac & Linux $HOME/.vimrc
$HOME/.vim/vimrc

今回はMacやLinuxのパスを想定して書いていきます。

「我こそは」、という猛者なら素のVimで.vimrcを作成すれば良いでしょうが、そういう人はすでに自分の.vimrcを持っているものです。

ここでは.vimrcを普段使用しているエディタで作成し、GitHubなどにプッシュして使用したい環境にクローンして使うことを想定します。
一般的に.vimrcなどのドットで始まる設定ファイルは、dotfilesというリポジトリで管理されることが多いです。

必要な設定項目と書き方

.vimrcの中ではvimscriptと呼ばる言語で設定を書きますが、基本的な設定ならそこまで難しくはありません。

.vimrc
" ダブルクォーテーションでコメントアウト
set {option_name}            " 設定のオン
set no{option_name}          " 設定のオフ

" ノーマルモードのキーリマップ
nnoremap {実際に実行するキーバインド} {もともとvimで使用されているキーバインドやコマンド}

" インサートモードのキーリマップ
inoremap {実際に実行するキーバインド} {もともとvimで使用されているキーバインドやコマンド}

" ビジュアルモードのキーリマップ
xnoremap {実際に実行するキーバインド} {もともとvimで使用されているキーバインドやコマンド}

キーマッピングの変更はこれら以外にもいろいろありますが、今回使用するものだけにします。


それでは以下にsetを使用する設定項目をリストアップしました。

# オプション名 説明
1 encoding=utf-8 Vim内で使用される文字コード。
2 fileencoding=utf-8 ファイル作成時に使用される文字コード。
3 fileencodings=utf-8,sjis,iso-2022-jp,euc-jp ファイル読み込み時に使用する文字コード。
4 fileformats=unix,dos ファイルの改行方式。LFを優先するが、CRLFだったらCRLF方式で開く。
5 autoread Vimの外部で変更があった場合に自動で読み直す。
6 number 行番号の表示。
7 relativenumber カーソル行から相対行番号を表示する。
8 cursorline 現在のカーソル行をハイライトする。
9 hlsearch 検索文字列をハイライトする。
10 incsearch 検索文字列の入力中にマッチする文字列へジャンプする。
11 ignorecase 検索文字列の大小文字を区別しない。
12 smartcase 検索文字列に大文字が含まれたらignorecaseを上書きして、大小文字を区別します。
13 wrapscan 検索が末尾まで進んだらファイル先頭から検索を再開する。
14 smartindent 改行時に自動でインデントする。
15 expandtab インデントにスペースを使用する(お好みで)。
16 shiftwidth=2 改行時やキーバインドで2個分のスペースをインデントとして挿入する。
17 tabstop=2 スペース2個分をインデントとして扱う。
18 softtabstop=2 を押した時にスペース2個分を挿入する。
19 laststatus=2 ウィンドウの一番下にステータス行を表示する。2は常時表示。
20 wildmenu コマンド入力時にでコマンドの候補が表示されるようになる。
21 list 不可視文字を表示する。
22 listchars=tab:»-,space:・,trail:・,nbsp:%,eol:↲,extends:»,precedes:« 各不可視文字の記号を設定する。

またsetを使用しない設定項目として以下の設定があります。

.vimrc
" ファイル形式別プラグインとインデントの有効
filetype plugin indent on
" シンタックスハイライトの有効
syntax enable

内容としては…

  • ファイルの形式を自動認識
  • Vimに付属するftplugin.vimというプラグインが読み込まれる。
    • 各ファイル形式毎にVim側で用意している設定が使用される。
  • ファイル形式毎のインデント設定が読み込まれる。
  • シンタックスハイライトが有効になりコードに色が付く。

上記の設定があるだけで最小設定とは思えないほど、見た目も良くなります。


設定項目としては以上です。
それでは、あると便利なキーバインドをいくつか紹介します。

.vimrc
" カーソルにファイル名とパスがあればgfで開く。
" path/to/target_file:10 だったら、target_fileの10行目を開く。
nnoremap gf gF

" 検索後のハイライトを<Space>nで消す。
nnoremap <Space>n :<C-u>nohlsearch<CR>

" xで文字を消したときに、レジスターに残さない。
nnoremap x "_x
xnoremap x "_x

" インサートモードでjを2回素早く入力するとノーマルモードに戻る。
inoremap jj <Esc>
" インサートモードでCtrl+lを使用するとDeleteキーと同じになる。
inoremap <C-l> <Del>

" US配列のキーボードを使用している場合のキーバインド
" JIS配列なら不要です。
nnoremap ; :
nnoremap : ;
nnoremap q; q:
xnoremap ; :
xnoremap : ;

最終的な最低限のvimrc

すべてを設定した場合、最終的に以下のような.vimrcになったかと思います。

.vimrc
set encoding=utf-8
set fileencoding=utf-8
set fileencodings=utf-8,sjis,iso-2022-jp,euc-jp
set fileformats=unix,dos
set autoread
set number
set relativenumber
set cursorline
set hlsearch
set incsearch
set ignorecase
set smartcase
set wrapscan
set smartindent
set expandtab
set shiftwidth=2
set tabstop=2
set softtabstop=2
set laststatus=2
set wildmenu
set list
set listchars=tab:»-,space:,trail:,nbsp:%,eol:,extends:»,precedes:«

nnoremap gf gF

nnoremap <Space>n :<C-u>nohlsearch<CR>

nnoremap x "_x
xnoremap x "_x

inoremap jj <Esc>
inoremap <C-l> <Del>

nnoremap ; :
nnoremap : ;
nnoremap q; q:
xnoremap ; :
xnoremap : ;

filetype plugin indent on
syntax enable

あとは、作成したリポジトリを使用したい環境にクローンして、ホームディレクトリへ張り付けるか、シンボリックリンクを設定すれば使用可能です。

まとめ

これで最小設定の.vimrcは完成です。お疲れさまでした。
あとはVimを使用しながら、改善していきたい所を見つけて、.vimrcを拡張していきましょう!

さらなる設定やVimについて信頼できる情報は、vim-jpというコミュニティで日本語翻訳しているヘルプがありますので、そちらをご覧ください。
日本語翻訳されたヘルプはプラグインとして導入できますので、Vimを触るなら導入をお勧めします。

また、手前味噌ですが、私のdotfilesを公開していますので、そちらもよろしければご覧ください。

私はVimが大好きですので、この記事を切っ掛けにVimmerが増えてくれたらうれしいです。

ここまでの閲覧、ありがとうございました。

参考リンク集

0
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
0
0