Copio cosas de los almacenamientos intermedios de salida en el código de C++ en el que estoy trabajando en vim. A menudo, esta salida se atasca en cadenas. Y sería bueno poder escapar de todos los personajes de control automáticamente en lugar de retroceder y editar manualmente el fragmento pegado.Escape de caracteres durante pegar en vim
Como ejemplo podría copiar algo como esto:
error in file "foo.dat"
y la necesidad de ponerlo en algo como esto
std::string expected_error = "error in file \"foo.dat\""
estoy pensando que podría ser posible aplicar una función de reemplazar al cuerpo de la última pasta usando las marcas de inicio y fin de la última pasta, pero no estoy seguro de cómo hacerlo volar.
ACTUALIZACIÓN:
Joey Mazzarelli sugested usando
`[v`]h:%s/\%V"/\\"/g
después de una pasta.
Puesto que ninguna explicación fue dada por lo que estaba pasando y al principio pareció un poco escueta, pero difícil de explicar en los comentarios que pensé que había puesto una explicación de lo que creo que hace aquí:
`[ : Move to start of last paste
v : Start visual mode
`] : Move to end of last paste
h : adjust cursor one position left
:% : apply on the lines of the selection
s/ : replace
\%V : within the visual area
" : "
/ : with
\\" : \"
/g : all occurrences
Esto parece un buen enfoque, pero solo maneja el carácter único ", me gustaría que maneje líneas nuevas, pestañas y otras cosas que podrían esperarse que caigan en el texto. (Probablemente no sea unicode general) Entiendo que puede no haber sido claro en la definición del problema.
No debería estar en superusuario? – zmbush
@zipcodeman Creo que SO está bien ya que está usando vim específicamente para una tarea de codificación. Probablemente usaría SU si fuera por usar vim para una tarea sys-admin. –