Tengo un archivo con un montón de valores predeterminados de usuario. Quiero cambiar parte del texto, pero estoy luchando para encontrar un comparador y un sustituto. Usando el siguiente ejemplo:
###############################################################################
# Trackpad, mouse, keyboard, Bluetooth accessories, and input #
###############################################################################
# Trackpad: enable tap to click for this user and for the login screen
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true
Me gustaría reemplazar # Trackpad: ...
conrunning "Trackpad: ..."
Desglosando el problema, se me ocurrió algo usando un probador de expresiones regulares:
/\n\n#\s(.*)/g
Si intento usar esto en Vim, no funciona para mí:
:/\n\n#\s(.*)/running "\1"/g
Supongo que mi problema se reduce a dos preguntas específicas:
- ¿Cómo puedo evitar buscar
\n
caracteres y, en cambio, asegurarme de#
que no aparezca al final del grupo de búsqueda? - ¿Cómo puedo usar efectivamente los grupos de captura?
Hay algunas respuestas geniales a continuación. Es difícil elegir entre los tres, sin embargo, creo que la respuesta elegida es la más precisa para mi especificación original. Le recomiendo que pruebe las tres respuestas con el archivo real para ver cómo se siente al respecto.
:%s/\v\n\n#\s+(.*)/^M^Mrunning "\1"/
(agregó la bandera "mágica"). Es realmente difícil elegir una respuesta correcta para mi pregunta original, pero creo que esta respuesta es la más cercana a mi respuesta original esperada. También es el único que funciona en todo el archivo sin necesidad de seleccionar un rango.