Supongo que funcionaría solo cuando no se usa '. *' En el patrón
AK
10
No es necesario repetir la cadena, solo hazlo %s/string//ng.
slm
23
(similar a lo que dijo Gustavo, pero adicionalmente :)
Para cualquier búsqueda anterior , puede hacer simplemente:
:%s///gn
No se necesita un patrón, porque ya está en el registro de búsqueda ( @/).
"%" - do s/en todo el archivo
"g" - Búsqueda global (con golpes múltiples en una sola línea)
"n" - evita que cualquier sustitución de s/- nada se borra! ¡nada debe deshacerse!
(ver: :help s_flagpara más información)
(De esta manera, funciona perfectamente con " Buscar texto seleccionado visualmente ", como se describe en vim-wikia tip171 )
Hay 3 modos en el editor VI como se muestra a continuación
:que está entrando de Commanda Command-linemodo. Ahora, todo lo que escriba después :está en CLI (interfaz de línea de comandos)
%sespecifica todas las líneas. Especificar el rango como %medio hace sustitución en todo el archivo. La sintaxis para la sustitución de todas las ocurrencias es:%s/old-text/new-text/g
gespecifica todas las ocurrencias en la línea. Con la gbandera, puede hacer que se sustituya toda la línea. Si este gindicador no se utiliza, solo se sustituirá la primera aparición en la línea.
n especifica el número de apariciones de salida
//la barra doble representa la omisión de replacement text. Porque solo queremos encontrar.
Una vez que tenga el número de ocurrencias, puede presionar la Ntecla para ver las ocurrencias una por una.
Para encontrar y contar en un rango particular de línea número 1 a 10:
: 1,10s / hola // gn
Tenga en cuenta que el %archivo completo se repone con ,números de línea separados.
Para buscar y reemplazar en un rango particular de línea número 1 a 10:
Busque con *para hacer una "búsqueda limitada" para lo que está debajo del cursor, o haga una /patternbúsqueda estándar .
Úselo :%s///gnpara obtener el número de ocurrencias. O puede usar :%s///npara obtener el número de líneas con apariciones.
** Realmente pude encontrar un complemento que diera mensajes de "coincidir con N de N 1 en N 2 líneas" con cada búsqueda, pero por desgracia.
Nota: No se confunda con la complicada redacción del resultado. El primer comando podría darle algo como lo 4 matches on 3 linesque el último podría darle 3 matches on 3 lines. Si bien es técnicamente preciso, este último es engañoso y debería decir "coincidencia de 3 líneas". Entonces, como puede ver, realmente nunca hay necesidad de usar la última forma (solo 'n'). Obtiene la misma información, más claramente, y más usando el formulario 'gn'.
:g/xxxx/d
) es terrible, peligrosa e inferior a otras en esta página. Anule la selección.Respuestas:
Esto eliminará todas las líneas con patrón e informará cuántas se eliminaron. Deshacer para recuperarlos después.
fuente
EL camino es
:% s / patrón // gn
fuente
Necesitas la
n
bandera. Para contar palabras, use:y una palabra en particular:
Ver
count-items
sección de documentación.Si simplemente escribe:
luego, la línea de estado también le dará el número de coincidencias en vi.
fuente
:% s / string / string / g dará la respuesta.
fuente
%s/string//ng
.(similar a lo que dijo Gustavo, pero adicionalmente :)
Para cualquier búsqueda anterior , puede hacer simplemente:
No se necesita un patrón, porque ya está en el registro de búsqueda (
@/
)."%" - do
s/
en todo el archivo"g" - Búsqueda global (con golpes múltiples en una sola línea)
"n" - evita que cualquier sustitución de
s/
- nada se borra! ¡nada debe deshacerse!(ver:
:help s_flag
para más información)(De esta manera, funciona perfectamente con " Buscar texto seleccionado visualmente ", como se describe en vim-wikia tip171 )
fuente
utilizar
cuando la cadena del patrón es demasiado larga y no le gusta volver a escribirla.
fuente
Respuesta corta :
Para aprender :
Hay 3 modos en el editor VI como se muestra a continuación
:
que está entrando deCommand
aCommand-line
modo. Ahora, todo lo que escriba después:
está en CLI (interfaz de línea de comandos)%s
especifica todas las líneas. Especificar el rango como%
medio hace sustitución en todo el archivo. La sintaxis para la sustitución de todas las ocurrencias es:%s/old-text/new-text/g
g
especifica todas las ocurrencias en la línea. Con lag
bandera, puede hacer que se sustituya toda la línea. Si esteg
indicador no se utiliza, solo se sustituirá la primera aparición en la línea.n
especifica el número de apariciones de salida//
la barra doble representa la omisión dereplacement text
. Porque solo queremos encontrar.Una vez que tenga el número de ocurrencias, puede presionar la
N
tecla para ver las ocurrencias una por una.Para encontrar y contar en un rango particular de línea número 1 a 10:
%
archivo completo se repone con,
números de línea separados.Para buscar y reemplazar en un rango particular de línea número 1 a 10:
fuente
Sugiero hacer:
*
para hacer una "búsqueda limitada" para lo que está debajo del cursor, o haga una/pattern
búsqueda estándar .:%s///gn
para obtener el número de ocurrencias. O puede usar:%s///n
para obtener el número de líneas con apariciones.** Realmente pude encontrar un complemento que diera mensajes de "coincidir con N de N 1 en N 2 líneas" con cada búsqueda, pero por desgracia.
Nota: No se confunda con la complicada redacción del resultado. El primer comando podría darle algo como lo
4 matches on 3 lines
que el último podría darle3 matches on 3 lines
. Si bien es técnicamente preciso, este último es engañoso y debería decir "coincidencia de 3 líneas". Entonces, como puede ver, realmente nunca hay necesidad de usar la última forma (solo 'n'). Obtiene la misma información, más claramente, y más usando el formulario 'gn'.fuente