vi・vim


概要

1976年、Bill JoyによってBSD Unix向けに作成されたラインエディタ。
viとvimの違いはビジュアル出力、利用できるオプションが異なる。
またLinuxディストリビューションによってvimがデフォルトの場合もある。

設定

HOME(≒マイドキュメント)配下に設定ファイルを作成または作成される。
.vimrc vi/vimの表示設定、キーマップや拡張設定
.viminfo コマンド、編集情報、検索情報、レジスタなどの 履歴情報を保存

補足・備考

本稿は VIMバージョン:IMproved 7.4 (2013 Aug 10, compiled Nov 24 2016 16:43:18)を基としている。
下記はLinux(RHEL系、Ubuntuの場合)でありWindows、MacOSなど他のOSでは変わることが予想されるため事前確認が必要。
HOME配下に設置するため他ユーザに影響は及ばない。

vimrc

sample code
set t_u7=
set t_RV=
 
set fenc=utf-8
set nobackup
set noswapfile
set autoread
set hidden
set showcmd
 
set number
set cursorline
set cursorcolumn
set virtualedit=onemore
set smartindent
set visualbell
set showmatch
set laststatus=2
set wildmode=list:longest
nnoremap j gj
nnoremap k gk
syntax enable
 
set list listchars=tab:\▸\-
set expandtab
set tabstop=2
set shiftwidth=2
 
set ignorecase
set smartcase
set incsearch
set wrapscan
set hlsearch
nmap <Esc><Esc> :nohlsearch<CR><Esc>
 

備考:
set t_RV=とt_u7= の設定は必ず必要ではない。稀にvi/vim起動時に何らかのトラブルに見舞われて必要な情報がvi/vimに送られないのが原因。
基本的にこれらは配慮する必要は無い。自身の経験を言うとvagrantで海外のboxイメージを落としてくるとこのトラブルに遭うことがある。

各設定コマンドの意味

replace mode回避対策(起動時のカーソル、termap情報送信ミスが要因) set t_u7=
set t_RV=
入力中のコマンドをステータスに表示する set showcmd
見た目系
行番号を表示 set number
現在の行を強調表示 set cursorline
現在の行を強調表示(縦) set cursorcolumn
行末の1文字先までカーソルを移動できるように set virtualedit=onemore
インデントはスマートインデント set smartindent
ビープ音を可視化 set visualbell
括弧入力時の対応する括弧を表示 set showmatch
ステータスラインを常に表示 set laststatus=2
コマンドラインの補完 set wildmode=list:longest
折り返し時に表示行単位での移動できるようにする nnoremap j gj
折り返し時に表示行単位での移動できるようにする nnoremap k gk
シンタックスハイライトの有効化 syntax enable
Tab系
不可視文字を可視化(タブが「?-」と表示される) set list listchars=tab:\?\-
Tab文字を半角スペースにする set expandtab
行頭以外のTab文字の表示幅(スペースいくつ分) set tabstop=2
行頭でのTab文字の表示幅 set shiftwidth=2
検索系
検索文字列が小文字の場合は大文字小文字を区別なく検索する set ignorecase
検索文字列に大文字が含まれている場合は区別して検索する set smartcase
検索文字列入力時に順次対象文字列にヒットさせる set incsearch
検索時に最後まで行ったら最初に戻る set wrapscan
検索語をハイライト表示 set hlsearch
ESC連打でハイライト解除 nmap <Esc><Esc> :nohlsearch<CR><Esc>

viminfo

viminfoファイルの出力先を変更 :set viminfo={他のフラグ...},n{ファイルパス}
viminfoファイルを作成しない :set viminfo=
viminfoに詳細情報を出力 :set viminfo=string
ファイル履歴一覧表示(履歴リストを見るだけ) :oldfiles
履歴ファイルを開く :e #<[number]
ファイル履歴リストを表示、リスト番号入力でファイルを開く browse oldfiles
他の Vim に情報を移動 :wviminfo! ~/tmp/viminfo
編集セッションを保存 :mksession vimbook.vim
セッションを復元 :source vimbook.vim
Vim の起動と同時にセッションを再開 vim -S vimbook.vim
Vim ウィンドウの大きさも復元 :set sessionoptions+=resize
すべてのファイルを保存 :wall
現在のセッションを保存 :mksession! [例)~/.vim/savename.vim ]
セッションをリロード :source ~/.vim/boring.vim
同じレイアウトで Vim を起動 vim -S ~/.vim/mine.vim
Windows と Unix を両方使う場合のセッション :set sessionoptions+=unix,slash
マークやレジスタ、コマンドライン履歴などは保存 :mksession! ~/.vim/secret.vim
他のセッションに切り換えてもコマンドライン履歴を保存 :wviminfo! ~/.vim/secret.viminfo
他のセッションを復元 :source ~/.vim/secret.vim
他のセッションを復元 :rviminfo! ~/.vim/secret.viminfo
モードライン無効(root,admin権限利用時。セキュリティが緩くなる) :set nomodeline

タグ:

linux vi vim bash
最終更新:2021年05月29日 17:44