Estoy seguro de que solía haber un complemento para este tipo de cosas, pero ahora que lo necesito, parece que no puedo encontrarlo (naturalmente), así que solo preguntaré agradable y simple.
¿Cuál es la forma más fácil de seleccionar entre paréntesis, comillas o, en general, una lista de caracteres coincidentes?
write ( *, '(a)' ) 'Computed solution coefficients:'
Por ejemplo, aquí me gustaría seleccionar (a)
, o Computed solution coefficients:
.
No me interesan las líneas múltiples, solo los casos que ocurren en una línea.
yi"
seleccionar todas las comillasci(
o loci)
hace por lo que estaba buscando. Gracias. Todavía no entiendo completamente eli
caso, pero a quién le importa mientras funcione, ¿verdad? :)Para seleccionar entre comillas simples, generalmente hago un
vi'
("seleccionar comillas simples internas").Dentro de un bloque de paréntesis, uso
vib
("seleccionar bloque interno")Dentro de un bloque de llaves puede usar
viB
("mayúscula B")Para hacer las selecciones "inclusivas" (seleccione también las comillas, paréntesis o llaves) puede usar en
a
lugar dei
.Puede leer más sobre las selecciones de objetos de texto en el manual o
:help text-objects
en vim.fuente
Este método de selección está integrado y bien cubierto en la ayuda de Vim. Cubre etiquetas XML y más.
Ver
:help text-objects
.fuente
Para seleccionar dentro de comillas simples use
vi'
.Para seleccionar dentro del uso de paréntesis
vi(
.fuente
ci'
oci(
para cambiar en lugar de seleccionar visualmente. Pero hace exactamente lo que quería. Gracias :)%vi(
o%vib
Use las flechas o
hjkl
para llegar a una de las expresiones entre paréntesis, luegov
para seleccionar el modo visual (es decir, seleccionar), luego%
para saltar al otro paréntesis.fuente
Escriba una función Vim en .vimrc usando la
searchpair
función incorporada:( http://vimdoc.sourceforge.net/htmldoc/eval.html )
fuente
Añadiría un detalle a la respuesta más votada:
Si está utilizando gvim y desea copiar al portapapeles, use
"+<command>
Para copiar todo el contenido entre corchetes (o parens o corchetes)
Por ejemplo:
"+yi}
copiará en el portapapeles todo el contenido entre las llaves que está el cursor.fuente
y
.He hecho un complemento
vim-textobj-quotes
: https://github.com/beloglazov/vim-textobj-quotesProporciona objetos de texto para los pares de comillas más cercanos de cualquier tipo. Usar solo
iq
oaq
le permite operar sobre el contenido de comillas simples ('), dobles (") o hacia atrás (`) que actualmente rodean el cursor, están delante del cursor o detrás (en ese orden de preferencia) En otras palabras, salta hacia adelante o hacia atrás cuando es necesario para llegar a las comillas.Es más fácil de entender mirando ejemplos (el cursor se muestra con
|
):foo '1, |2, 3' bar
; después de presionardiq
:foo '|' bar
foo| '1, 2, 3' bar
; después de presionardiq
:foo '|' bar
foo '1, 2, 3' |bar
; después de presionardiq
:foo '|' bar
foo '1, |2, 3' bar
; después de presionardaq
:foo | bar
foo| '1, 2, 3' bar
; después de presionardaq
:foo | bar
foo '1, 2, 3' |bar
; después de presionardaq
:foo | bar
Los ejemplos anteriores se proporcionan para comillas simples, el complemento funciona exactamente de la misma manera para las comillas dobles (") y las comillas posteriores (`).
También se puede utilizar cualquier otro operador:
ciq
,diq
,yiq
,viq
, etc.Por favor, eche un vistazo a la página de github vinculada anteriormente para obtener más detalles.
fuente
Un simple mapa de teclas en vim resolvería este problema. map viq F "lvf" hh Este comando anterior asigna viq a las teclas para buscar entre comillas. Reemplace "con cualquier carácter y cree sus mapas de teclas. Pegue esto en vimrc durante el inicio y debería poder usarlo siempre.
fuente