¿Cómo puedo deshacerme de los espacios finales en vim sin romper &?


0

Leí la wiki y puse esto en mi vimrc:

autocmd FileType less,sass,yml,css,html,php,twig autocmd BufWritePre <buffer> :%s/\s\+$//e

Ahora el problema es cada vez que guardo &está roto: repite una mezcla de la última sustitución y la sustitución. Si, por ejemplo, lo hago :s/foo/bary luego guardo, &parece que sí :s/foo//. Me gustaría que lo hiciera :s/foo/bar/. ¿Cómo puedo restaurar esta funcionalidad?

Respuestas:


1

Intente cambiar la :%s...parte de su comando automático a esto:

:call setline(1, map(getline(1,'$'), 'substitute(v:val,"\\s\\+$","","")'))

¡Muchas gracias! ¡adoptado!
greg0ire

1

Debería evitar el uso :substitute, ya que actualmente no hay una manera fácil de guardar y restaurar la última cadena de sustitución; El :help function-undo-searchno ayuda aquí.

La mayoría de los complementos (como se muestra en la página Wiki referenciada) también sufren este problema. Se usaría una solución alternativa call setline(substitute(getline(lnum)), '\s\+$', '', '')en un bucle sobre todas las líneas, pero probablemente sea mucho más lento que el :substitute.


Probablemente no acepte su respuesta, pero +1 es muy informativo.
greg0ire
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.