2010-12-06 8 views
6

¿Cómo puedo recuperar la última cadena que utilicé para una búsqueda o una búsqueda & reemplazar?Obtener la última búsqueda o buscar y reemplazar cadena de nuevo en vim?

Por ejemplo, supongamos que ingreso :%s/some_text/some_other_text/gc y vim me devuelve el mensaje de error E486: Patterns not found: some_text. Luego me doy cuenta de que en realidad quería escribir some_magic_text en lugar de some_text. En ese momento, ¿cómo puedo recuperar mi cadena original en la fila de comandos inferior (o como se llame) para poder cambiarla y hacer una segunda búsqueda? ¿Hay algún pequeño comando ingenioso para eso?

En este breve ejemplo parece innecesario, pero cuando el texto que busca reemplazar es muy largo y acaba de escribir una letra incorrecta, es increíblemente fastidioso tener que volver a escribir todo.

Y estoy usando MacVim si eso hace la diferencia.

Respuesta

3

Echa un vistazo a este vimvcast que explica lo que quieres.

+2

Ctrl-p, esa era la única. Muchas gracias. – c00kiemonster

+3

También puede usar el registro '/'. e.g: ':% s/ /' y luego ir desde allí. – rossipedia

0

De manera más general, puede recuperar cualquier comando que haya escrito previamente al ingresar los primeros caracteres, y luego usar la flecha varias veces para navegar en el historial.

En su caso, podría escribir:
:%s<Up>

Ver :help history

6

Desde el modo normal, golpeó q/ para navegar a través de su historial de búsqueda!

1

Esta respuesta podría ser una buena mejora para lo que está buscando, después de todo.

Utilice la búsqueda con resaltado, para comprobar de forma interactiva si la expresión regular que está elaborando definitivamente está funcionando, y luego úsela en un reemplazo de búsqueda.

  1. :se is (incsearch, mejor dicho se is en su .vimrc)
  2. /<search term>
  3. cheque con n/N si está satisfecho con los partidos
  4. :s%//<replace term>/g

Cuando la omisión de la <search term> en la búsqueda-reemplazar en 4., el l Se usará la búsqueda utilizada.

Para acceder a la lista de los últimos comandos (buscar-reemplazar) use q:, o como ya se indicó q/ para la lista de los últimos términos de búsqueda.

Bono:
Al utilizar :se gd, s/<search>/<replace> se comportará como s/<search>/<replace>/g.

Solo se puede acceder a la primera coincidencia de búsqueda en cada línea al agregar /g, por lo que esencialmente ambos comportamientos se acaban de cambiar.

Cuestiones relacionadas