Muchas veces en vim me gustaría eliminar una línea por completo, así que uso dd. Sin embargo, luego necesito pegar esa línea en otra posición dentro de una línea, pero esto inserta una nueva línea antes de pegar, por lo tanto, me resulta muy difícil obtener el resultado deseado. Por ejemplo,
while( pasteInHere )
{
cin >> n; // Delete this line completely with dd
}
cuando hago esto con el código anterior obtengo:
while( pasteInHere )
cin >> n; // Delete this line completely with dd
{
}
que está muy lejos del resultado que quiero ... ¿cómo puedo suprimir este comportamiento de nueva línea o utilizar otro método que lo haga de manera muy eficiente? No creo que d $ sea bueno porque no solo tengo que ir al comienzo de la línea, sino que si quiero eliminar la línea vacía también necesito eliminarla en otro registro, ¡siento que debería haber una manera más fácil! Gracias.
cut-copy-paste
fYre
fuente
fuente
0D
eliminar línea excepto salto de línea. Y quegJ
unir líneas. Ahora puede poner el texto sin línea de corte y sin línea vacía.Respuestas:
Puede ir a cualquier parte de la línea sobre la línea que desea eliminar, luego presionar
JD
y pegarp
en el punto deseado.J
une las dos líneas y lo mueve al comienzo del texto que desea eliminar. Esto elimina un carácter de nueva línea y la sangría de la línea que desea mover.D
elimina de la posición actual del cursor al final de la línea, pero conserva el carácter de nueva línea.Sugerencia: puede usar
:pu
si eliminóD
o eliminóy$
y desea pegar con una nueva línea.fuente
No es realmente más simple, pero es un poco más eficiente, y también puede crear mapas en modo normal para ambas secuencias:
fuente
Puede lograr algo que funcione bastante bien con un
imap
. Agregue lo siguiente a suvimrc
:Esto creará una asignación para CTRL-apegar el último texto eliminado (con
dd
o similar). Si lo prefiere, puede usar una clave diferente para el mapeo.Referencias
fuente
Esto también se me ocurre un poco, nunca pensé optimizarlo antes, pero este mapeo funciona:
dil
es "de eliminación en línea", similar adiw
,di"
, etc.fuente
Pegar sin nueva línea
Ponga esto en su archivo .vimrc:
Ejemplo:
Ahora puede escribir
gp
para insertar#D51B3F
despuéscolor:
mientras mi cursor está:
en modo Normal.Yank sin nueva línea
Use la respuesta de flukus:
como acrónimo de eliminar línea interna . Esto también elimina la sangría principal.
fuente
Puede seleccionar el texto que desea copiar presionando
v
y luego llevarlo al búfer presionandoy
y luego pegarlo en cualquier lugarp
. No inserta ninguna línea nueva.fuente