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 |
最終更新:2021年05月29日 17:44