Skip to content

Instantly share code, notes, and snippets.

@Affonso-Gui
Last active March 17, 2024 12:19
Show Gist options
  • Save Affonso-Gui/41b4b22902c4c1c6b85e940109819e2f to your computer and use it in GitHub Desktop.
Save Affonso-Gui/41b4b22902c4c1c6b85e940109819e2f to your computer and use it in GitHub Desktop.
VsVim config file
" vim settings
" Settings
" set relativenumber
set incsearch
set ignorecase
set smartcase
set nowrapscan
" set hlsearch
set virtualedit=onemore
set whichwrap=l,h
set wrap
" set scrolloff=3
set noexpandtab
" Auto Commands
" buggy: needs BufFocus event
" autocmd BufEnter,BufWinEnter * normal <C-c>
" Commands
nnoremap Y y$
" nnoremap n nzz
nnoremap <C-CR> m`o<ESC>``
nnoremap <S-CR> m`O<ESC>``
noremap zp mp{jzt`p
noremap ze <C-e>
noremap zs <C-y>
noremap gs ^t(b
nnoremap gD ^t(bgd
nnoremap gf :vsc Edit.GoToDefinition<CR>
nnoremap gF ^t(b:vsc Edit.GoToDefinition<CR>
nnoremap gr :vsc Edit.FindAllReferences<CR>
nnoremap gR ^t(b:vsc Edit.FindAllReferences<CR>
noremap mB :vsc Edit.ToggleBookmark<CR>
noremap gc :vsc Edit.ToggleLineComment<CR>
noremap [[ j[[k^
noremap ]] j]]k^
noremap ][ j:let s:search=@/<CR>?\v^( |\t)\{<CR>k^:let @/=s:search<CR>
noremap [] j:let s:search=@/<CR>/\v^( |\t)\{<CR>k^:let @/=s:search<CR>
" Emacs-like bindings
" Conflicting bindings
inoremap <C-d> <C-o>:vsc Edit.Delete<CR>
" inoremap <C-u> <C-o>:vsc Edit.EmacsUniversalArgument<CR>
" vnoremap <C-u> :vsc Edit.EmacsUniversalArgument<CR>
" inoremap - <Nop>
" vnoremap - <Nop>
" TODO: map window commands to C-x instead?
inoremap <C-w> <C-o>:vsc Edit.Cut<CR>
vnoremap <C-w> :vsc Edit.Cut<CR>
inoremap <C-r> <C-o>:vsc Edit.ReverseIncrementalSearch<CR>
" Navigation
noremap <C-f> l
inoremap <C-f> <C-o>l
noremap <C-b> h
inoremap <C-b> <C-o>h
noremap <C-n> j
inoremap <C-n> <C-o>j
noremap <C-p> k
inoremap <C-p> <C-o>k
noremap <C-a> 0
inoremap <C-a> <C-o>0
noremap <C-e> $l
inoremap <C-e> <Esc>A
noremap <A-m> ^
inoremap <A-m> <C-o>^
noremap <A-b> b
inoremap <A-b> <C-o>b
noremap <A-f> w
inoremap <A-f> <C-o>w
noremap <A-{> {
inoremap <A-{> <C-o>{
noremap <A-}> }
inoremap <A-}> <C-o>}
noremap <S-A-.> G
inoremap <S-A-.> <C-o>G
noremap <S-A-,> gg
inoremap <S-A-,> <C-o>gg
" noremap <C-A-b> B
" inoremap <C-A-b> <C-o>B
" noremap <C-A-f> W
" inoremap <C-A-f> <C-o>W
" Marks
nnoremap <C-Space> v
inoremap <C-Space> <Esc>v
" nnoremap <C-x><Space> <C-q>
" inoremap <C-x><Space> <C-o><C-q>
" vnoremap <C-x><Space> :vsc Edit.EmacsRectangleMarkMode<CR>
" Handled by Visual Studio
" Ctrl+G
" Ctrl+H
" Ctrl+J
" Ctrl+K
" Ctrl+L
" Ctrl+S
" Ctrl+T
" Ctrl+V
" Ctrl+W
" Ctrl+X
" Ctrl+Y
" Remove Bindings?
" Ctrl+Space
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment