VsVim
使用できるkey binding一覧
使用できる設定一覧
VsVimの設定ファイル
設定ファイルは以下のどこかに置く
%HOME%
%HOMEDRIVE%
%HOMEPATH%
%VIM%
%USERPROFILE%
code:.vsvimrc
" setting
"set guioptions+=a
set clipboard=unnamed,unnamedplus
" 見た目系
set number " 行番号を表示
set relativenumber
" set cursorline " 現在の行を強調表示
" set cursorcolumn " 現在の行を強調表示(縦)
set virtualedit=onemore " 行末の1文字先までカーソルを移動できるように
set visualbell " ビープ音を可視化
set showcmd " 入力中のコマンドをステータスに表示する
set laststatus=2 " ステータスラインを常に表示
" set nowrap "テキストが折り返されないようにする
set wrap
set cursorline " 現在の行をハイライト
" Tab系
set expandtab " Tab文字を半角スペースにする
set tabstop=4 " 行頭以外のTab文字の表示幅(スペースいくつ分)
set shiftwidth=4 " 行頭でのTab文字の表示幅
set softtabstop=4 " <Tab> の挿入や <BS> の使用等の編集操作をするときに、<Tab> が対応する空白の数。
" Tabの設定はVisual Studioに任せる
" 不可視文字を可視化(タブが「?-」と表示される)
set list
" 入力系
set textwidth=0
set backspace=indent,eol,start " <BS> の挙動を変更
set imdisable " insert mode を抜けるときIMEをoffにする
" 選択系
set virtualedit=block
" 検索系
set ignorecase " 検索文字列が小文字の場合は大文字小文字を区別なく検索する
set smartcase " 検索文字列に大文字が含まれている場合は区別して検索する
set incsearch " 検索文字列入力時に順次対象文字列にヒットさせる
set wrapscan " 検索時に最後まで行ったら最初に戻る
set hlsearch " 検索語をハイライト表示
" I like highlighting strings inside C comments.
let c_comment_strings=1
" 保存時に行末の空白を除去する
autocmd BufWritePre * :%s/\s\+$//ge
" 保存時にタブをスペースに変換
autocmd BufWritePre * :retab
" key bindings
" <Leader> を<Space> にする
let mapleader = "\<Space>"
" Don't use Ex mode, use Q for formatting
noremap Q gq
" CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo,
" so that you can undo CTRL-U after inserting a line break.
inoremap <C-U> <C-G>u<C-U>
" 折り返し時に表示行単位での移動できるようにする
nnoremap k gk
nnoremap j gj
vnoremap k gk
vnoremap j gj
nnoremap gk k
nnoremap gj j
vnoremap gk k
vnoremap gj j
" <C-l>にハイライト消去・ファイル変更適用効果を追加
nnoremap <C-l> :nohlsearch<CR>:checktime<CR><Esc><C-l>
nnoremap <Esc><Esc> :nohlsearch<CR>
" 検索で使う規定の正規表現を Very Magic にする
nmap / /\v
" jj で insert mode を抜ける
inoremap jj <ESC>
" 誤動作すると困るキーを無効にする
nnoremap ZZ <Nop>
nnoremap ZQ <Nop>
" 矢印キーを無効にする
noremap <Up> <Nop>
noremap <Down> <Nop>
noremap <Left> <Nop>
noremap <Right> <Nop>
inoremap <Up> <Nop>
inoremap <Down> <Nop>
inoremap <Left> <Nop>
inoremap <Right> <Nop>
" 行を移動
nnoremap <A-k> "zdd<Up>"zP
nnoremap <A-j> "zdd"zp
" " 複数行を移動
vnoremap <A-k> "zx<Up>"zP[V]
vnoremap <A-j> "zx"zp[V]
" Yでカーソル位置から行末までヤンクする
nnoremap Y y$
" x,Xでカーソル文字を削除する際レジスタを汚さない
nnoremap x "_x
vnoremap x "_x
nnoremap X "_X
vnoremap X "_X
" s,Sでカーソル文字を削除する際レジスタを汚さない設定
nnoremap s "_s
vnoremap s "_s
nnoremap S "_S
vnoremap S "_S
" ビジュアルモードで < > キーによるインデント後にビジュアルモードが解除されないようにする
vnoremap < <gv
vnoremap > >gv
" n, N キーで「次の(前の)検索候補」を画面の中心に表示する
nnoremap n nzz
nnoremap N Nzz
" 数字のインクリメント/デクリメント
nnoremap + <C-a>
nnoremap - <C-x>
"押しにくい$及び^をリマッピング
nmap H ^
nmap L $
vmap H ^
vmap L $
" ウィンドウ関連
nnoremap s <Nop>
nnoremap s= <C-w>=
nnoremap so <C-w>_<C-w>|
nnoremap sO <C-w>=
nnoremap sd :bd<CR>
nnoremap ss :<C-u>sp<CR>
nnoremap sv :<C-u>vs<CR>
nnoremap st :tabnew<CR>
nnoremap sx :tabclose<CR>
nnoremap <M-l> gt
nnoremap <M-h> gT
" function key 関連
" cf.
" 相対行番号表示の切り替え
nnoremap <F12> :set relativenumber!<CR>
" コマンドラインモードで %% を入力すると現在編集中のファイルのフォルダのパスが展開されるようにする
cnoremap %% <C-R>=expand('%:p:h').'/'<cr>
References