2010-01-18 25 views
36

En Vim, si tengo código como (en Ruby):Retirar un par de paréntesis, corchetes o llaves en Vim

anArray << [anElement] 

y mi cursor está en la primera [, puedo saltar a ] con la clave %, y puedo eliminar todo el contenido entre el [] par con d%, pero ¿qué ocurre si solo quiero eliminar [ y ] dejando todo el contenido restante entre los dos. En otras palabras, ¿cuál es la manera más rápida de llegar a:

anArray << anElement 
+9

que haría 'xf] ', pero no hace paren-juego. O bien, primero haga una coincidencia de paren manual mediante '%', luego 'x' seguido de dos barras de respuesta, seguidas de' x'. –

+0

excelente pregunta. Soy un usuario de vim prolífico, y esto aparece de vez en cuando, y no tengo una buena solución incorporada. – Peter

+0

La segunda opción de Alok funciona. – user2023370

Respuesta

42

Usando el plugin Surround.vim de Vim:

http://www.vim.org/scripts/script.php?script_id=1697

... se puede eliminar con delimitadores que rodean ds<delimeter>.

Instalación a través Vundler plugin:

Añadir:

Plugin 'tpope/vim-surround' 

a su archivo y ejecutar .vimrc : PluginInstall

+0

Tal vez soy solo yo, pero no puedo hacer nada con el complemento. Es demasiado complicado y contradictorio. – I159

42

ma%x`ax (posición de la marca en el registro a, vaya a igualar paren, eliminar char, ir a marcar a, borrar char).

EDIT:

%x``x hace lo mismo (gracias a ALOK por la punta)

+14

Como dije en mi comentario principal, no necesita una marca manual: puede ir a la última posición con dos marcadores. Entonces% x''x es más rápido. –

+0

Esto es similar a lo que he estado haciendo, pero es una gran cantidad de pulsaciones de teclas para un editor que se supone que es muy eficiente en la impresión de teclas. – Josh

+4

Me gusta '%% x''x' mejor, ya que puede estar en cualquier lugar dentro de los parens. –

2

Las otras respuestas funcionan bien si desea borrar delimitadores de una línea a la vez.

Si por el contrario desea eliminar una función y es delimitadores de todo el uso de archivos:

:%s/function(\(.*\))/\1/g 

que sustituye function(arguments) con arguments por todas partes en el archivo.

4

Si tiene problemas con las marcas que apuntan a que el primer carácter de la línea o con el uso de% ...

di[vhp 

funciona tan bien ... Elimina a juego corchetes [], cuando el cursor está en cualquier lugar dentro. '[' Puede ser sustituido por '{' o '('.

26

Uno puede tomar ventaja de los objetos de texto incorporados en Vim (ver :help text-objects). La edición deseada puede enunciarse como una secuencia de la siguiente tres acciones.

  1. cortar el texto entre corchetes.

    di[ 
    
  2. Seleccione (vacío) entre corchetes.

    va[ 
    
  3. Pegue el texto cortado sobre ellos.

    p 
    

En total se da

di[va[p 
+2

¡Gracias por demostrar una forma que no es un plugin de hacer esto! Ideal para aquellos de nosotros que trabajamos en sistemas integrados. – ijustlovemath

Cuestiones relacionadas