2009-04-16 27 views

Respuesta

6

a través de expresiones regulares:

:s/\v([^, ]+)(\s*,\s*)([^, ]+)/\3\2\1/ 

Si lo haces a menudo se puede hacer un mapa de ella, por ejemplo:

:nmap <F5> :s/\v([^, ]+)(\s*,\s*)([^, ]+)/\3\2\1/<CR> 

Coloque el cursor sobre la línea que desea voltear y pulse F5.

0

Hum ... yo diría "tdwxx $ i,^[" tp, pero eso no es realmente eficiente o fácil, sólo lo suficientemente rápido para escribir ...

1

mapa una combinación de teclas para ejecutar el comando:

:s/^assert_equal \(.*\), \(.*\)$/assert_equal \2, \1 
4

Éste intercambia la palabra está el cursor con la siguiente - sólo tiene que pulsar F9 en el modo de comando:

:map <F9> "qdiwdwep"qp 
  • "qdiw: Poner la palabra está el cursor en el buffer 'q'
  • DW: Eliminar todos los caracteres al principio de la palabra siguiente (posiblemente coma + espacio)
  • e: Ir al final de la palabra
  • t: Pegar (coma + espacio)
  • "QP: Pasta buffer 'q' (la primera palabra)
1

siempre me ha gustado búsqueda de expresiones regulares y reemplazar para este tipo de tareas:

:s/\(\w*\), \(\w*\)/\2, \1/ 

intercambiará la primera palabra con la segunda en una lista separada por comas

+0

Basta con retirar el rango (%). : s funcionará en la línea actual a menos que le dé un rango. –

0

por algo este sencillo, sólo haría una pequeña macro

qadf ea, ^[pxxq 

continuación, @ un

distancia
Cuestiones relacionadas