vimrc – ¿Cómo escribir rápidamente una expresión C donde se repite la variable asignada?

Pregunta:

A veces quiero escribir una expresión como esta:

table[row][col] = std::max(table[row][col], other_table[row+1][col+1])

(este es el código C ++. Desafortunadamente, no hay forma en C ++ de eliminar la duplicación excepto escribiendo una función auxiliar como void update_max(auto& a, auto const& b) { a = std::max(a, b); } pero esa posibilidad no se considerará aquí)

¿Cómo puedo escribir la parte repetida ( table[row][col] ) rápidamente?

Para simplificar, puede asumir que la expresión es "simple" (puede hacer coincidir con alguna expresión regular simple como .*;(.\{-})= ), pero la solución para el caso general también está bien. (el problema es que la gramática de C ++ es muy compleja)

Respuesta:

Puede repetir el último texto insertado en el modo de inserción usando CTRL-R . o CTRL-A

Pero debe salir del modo de inserción para completar el cambio. Ingrese al modo de inserción y escriba

table[row][col]

Luego salga del modo de inserción y vuelva a ingresar usando Esc a y escriba el resto de la línea antes de la parte repetida

table[row][col] = std::max(

Finalmente, escriba CTRL-R . (o CTRL-A )

table[row][col] = std::max(table[row][col]

y terminar la línea.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım