Hoy voy a mostrarte un plugin increíble que añadirá el modo VIM a tu Visual Studio 2015 y superior. El plugin se llama VsVim, el enlace al marketplace de visual studio es - [link]. Puedes instalarlo simplemente desde Tools -> Extensions and updates
En la ventana modal, elige la pestaña Online, escribe VsVim en el cuadro de búsqueda y descarga la opción más relevante
Reinicia tu Visual Studio después de eso. Tras el reinicio, verás una ventana que menciona algunos conflictos de mapeos de teclas entre el plugin y VS. Elige todos los mapeos para VsVim o algo similar. La idea principal es sobrescribir todas las reglas de VS con las reglas de VsVim. Está bien, no te preocupes. Genial, ¡ahora puedes usar vim en tu VS! Prueba combinaciones como I (para pasar a insertar), V (Modo Visual), y mueve el cursor por toda el área de trabajo con las teclas de VIM como H, J, K, L, y demás.
Algunas recomendaciones:
Además, puedo recomendarte hacer algunas configuraciones para el modo VIM que son muy comunes: JJ para Esc (te permite salir del modo edición más rápido con la combinación JJ, igual que con <ESC>)
Desmapear Crtl + S (te permite guardar más rápido con Ctrl + S, que será gestionado por VSStudio, no por vim. En vim siempre deberías escribir :w para guardar documentos)
<pre class="lang:default"decode:true="">nnoremap <c-s>:w<CR> # normal mode: save
inoremap <c-s><Esc>:w<CR>l # insert mode: escape to normal and save
vnoremap <c-s><Esc>:w<CR># visual mode: escape to normal and save
Puedes guardar todas estas configuraciones en el archivo .vsvimrc y se aplicarán en cada inicio de visual studio. Cómo hacerlo - lee aquí: https://github.com/cboudereau/vsvimrc
Ubicación del archivo .vimrc:
Ejemplo de mi archivo .vimrc actual:
" version control
nnoremap Ud :vsc Team.Git.CompareWithUnmodified<cr>
" from https://github.com/justinmk/config/blob/master/.vsvimrc
nnoremap yxx ggVG:vsc
EditorContextMenus.CodeWindow.ExecuteInInteractive<cr>" fsharp refactoring
" not yet implemented
nnoremap Un i failwith "not yet implemented"" extract (p/P)arameter
nnoremap Up
yawOlet<Space><Esc>Pa<Space>=<Space>failwith<Space>"not<Space>yet<Space>implemented"<Esc>j$innoremap UP
ciw<Esc>pa=<Esc>p<Esc>yawOlet<Space><Space><Esc>Pa<Space>=<Space>failwith<Space>"not<Space>yet<Space>implemented"<Esc>j$i" convert to Union (C)ase
nnoremap Uc
<Esc>diwatype<Space>[<Struct>]<Space><Esc>pa<Space>=<Space><Esc>pa<Space>of<Space>string
" extract (R)ecord member type to (I)dentifier
nnoremap Uri
/:<CR>d$byiw$a=<Space><Esc>pbvuyiw?{<CR>Olet<Space><Esc>pa<Space>=<Space>failwith
"not yet implemented"<Esc>''<Esc>
" fsharp interactiv(E/e)nnoremap Ue Vggo:vsc
EditorContextMenus.CodeWindow.ExecuteInInteractive<cr>nnoremap UE VGGo:vsc
EditorContextMenus.CodeWindow.ExecuteInInteractive<cr>imap jj <ESC>nnoremap <c-s> :w<CR>inoremap <c-s><Esc>:w<CR>l
vnoremap <c-s><Esc>:w<CR>setclipboard=unnamed
Además, te recomiendo imprimir este útil cheatsheet para VIM.