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.