Cuando estoy programando a veces necesito cambiar caracteres o etiquetas (en lenguajes de marcado) que rodean instrucciones. Por ejemplo, en Python a veces tengo que cambiar comillas dobles por comillas simples; lo cual se hace un poco incómodo, porque tienes que desplazarte a las comillas de inicio y a las de fin y sustituirlas individualmente.
Para este problema existe una solución: la extensión
vim-surround
para los editores Vim y Neovim. Con ella puedo reemplazar los caracteres
o etiquetas muy fácilmente. Para sustutuir print("Hello, world!")
por
print('Hello, world!')
basta con pulsar cs"'
en modo normal dentro
de las comillas. También puedo sustituir comillas por etiquetas de
lenguajes de marcado como HTML y viceversa. Por ejemplo, puedo sustituir
'Hello, world!'
por <h1>Hello, world!</h1>
escribiendo cs'<h1>
.
La orden para realizar sustituciones puede parecer difícil de recordar,
pero no lo es si sabes inglés y piensas que cst"
quiere decir change
surrounding tag [with] " y cs"'
quiere decir change surrounding "
with '.
Esta extensión además permite borrar alrededor de donde estamos
situados. Si, por ejemplo, queremos borrar las comillas en
print('Hello, world!')
, solamente tenemos que escribir ds'
.
Podemos añadir también etiquetas HTML alrededor de una palabra o varias
palabras. Escribir ysiw<em>
en modo normal con el cursor en la palabra
hola, envuelve la palabra con la etiqueta em
: <em>hola</em>
. yss)
envuelve una línea donde está el cursor entre paréntesis. Para tener un
mayor control sobre el texto a envolver se puede utilizar el modo
visual. Cuando tengas algún texto seleccionado pulsa S y escribe el
carácter, etiqueta o caracteres para rodear el texto.
¿Pero que pasa si quieres añadir una etiqueta para PHP (su sintaxis
es <?php código?>
)? Para hacer esto debemos añadir la siguiente línea a
nuestro archivo de configuración de Vim (.vimrc
):
autocmd FileType php let b:surround_45 = "<?php \r ?>
. Con esto
podemos rodear varias líneas de código con las etiquetas de PHP,
seleccionando un texto en modo visual y pulsando S-
en caso de que
estemos trabajando con un un archivo escrito en PHP. Podemos rodear
también una línea en modo normal pulsando yss-
.
A continuación, dejo más ejemplos de lo que podéis hacer con vim-surround. El carácter marcado en la columna del texto original representa la posición del cursor. Recordad que el cursor debe ubicarse entre las comillas o etiquetas que queráis reemplazar. Podéis verlos en acción en el vídeo que os he mostrado al principio de este artículo.
Texto original | Orden | Resultado |
---|---|---|
"Look ma, I'm HTML!" | cs"<q> | <q>Look ma, I'm HTML!</q> |
if x>3 { | ysW( | if ( x>3 ) { |
my $str = whee!; | vllllS' | my $str = 'whee!'; |
<div>Yo!</div> | dst | Yo! |
Hello world! | yssB | {Hello world!} |
Comentarios