2012-08-11 12 views
10

Estaba tratando de aprender algunos nuevos atajos en vim y descubrí g_. De acuerdo con http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/

$ → go to the end of line 
g_ → go to the last non-blank character of line 

Cuándo se debe utilizar en lugar de $ g_?

+3

... cuando desea ir al último carácter no en blanco en la línea, en caso de que la línea tenga espacios al final? –

Respuesta

6

Creo que la diferencia más importante se afirma simplemente en los archivos de ayuda:

:h $ 
In Visual mode the cursor goes to just after the last character in the line. 

Así que si lo hace v$d se elimina incluyendo "después del último carácter", que es la nueva línea por lo que traerá la línea debajo de ella hasta la actual. Pero si lo hace vg_d mantendrá la nueva línea.

De hecho, no sabía acerca de g_, parece útil.

Editar Dado que esta respuesta obtiene upvotes, desde entonces he utilizado g_ (y su inverso, _) para hacer una asignación que da un tirón/borra la línea actual excluyendo líder/espacios en blanco y excluyendo los saltos de línea:

" delete/yank line, but only whitespace-trimmed version 
nnoremap <Leader>dd _yg_"_dd 
nnoremap <Leader>yy _yg_ 
8

g_ es IMPRESIONANTE cuando está tirando del texto para pegarlo en algún lugar donde no desea incluir el salto de línea, como la línea de comando donde ejecutará automáticamente el comando.