← Volver al blog

Vim para Visual Studio 2015 y superior: configuración, atajos de teclado y consejos

Publicado el
2 min de lectura
--- vistas

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

vim

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

vim

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>)

<pre class="lang:default" decode:true="">:imap jj <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$i
nnoremap 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>

set clipboard=unnamed

Además, te recomiendo imprimir este útil cheatsheet para VIM.

vim

Disponible para colaboración por contrato

Estoy disponible para colaborar por contrato. Si tiene una idea de proyecto interesante, reserve una llamada por Calendly.

Agenda una llamada de 30 min