Emacs tiene un útil comando transpose-words
que le permite a uno intercambiar la palabra antes del cursor con la palabra después del cursor, preservando la puntuación.¿Cómo emular las palabras de transposición de Emacs en Vim?
Por ejemplo, 'stack |overflow
' + M-t = 'overflow stack|
' ('|
' es la posición del cursor).
<a>|<p>
se convierte en <p><a|>
.
¿Es posible emularlo en Vim? Sé que puedo usar dwwP
, pero no funciona bien con la puntuación.
Actualización: No, dwwP
es realmente no una solución. Imagínese:
SOME_BOOST_PP_BLACK_MAGIC((a)(b)(c))
// with cursor here^
Emacs’ M-t habría cambiado b
y c
, resultando en (a)(c)(b)
.
Lo que funciona es /\w yiwNviwpnviwgp
. Pero estropea ""
y "/
. ¿Hay una solución más limpia?
Update²:
Resuelto
:nmap gn :s,\v(\w+)(\W*%#\W*)(\w+),\3\2\1\r,<CR>kgJ:nohl<CR>
imperfecta, pero funciona.
Gracias Camflan por traer el elemento %#
a mi atención. Por supuesto, todo está en el wiki, pero no me di cuenta de que podría resolver el problema de exacta (Emacs lo hizo completamente bien) duplicación de la función transpose-words
.
Estoy teniendo dificultades para buscar en Google "% #". ¿Qué significan aquí? –
Use la ayuda de Vim incorporada:: h/\% # –