Cómo eliminar el texto seleccionado en el editor vi

116

Estoy usando PuTTY y el editor vi. Si selecciono cinco líneas con el mouse y quiero eliminar esas líneas, ¿cómo puedo hacerlo?

Además, ¿cómo puedo seleccionar las líneas usando mi teclado como puedo en Windows donde presiono Shifty muevo las flechas para seleccionar el texto? ¿Cómo puedo hacer eso en vi?

Peter Mortensen
fuente
1
Tengo la lista de hombre impresa pero no pude encontrar cómo eliminar el texto seleccionado
x Eliminar el carácter a la derecha del cursor X Eliminar el carácter a la izquierda del cursor D Eliminar hasta el final de la línea dd Eliminar la línea actual: d Eliminar la línea actual de lagmonster.org/docs/vi.html espero que ayude un poco
Mawg dice reinstalar a Monica
1
¿Preguntas de VIM sobre superusuario? Jajaja
Pascal Thivent
1
@Pascal: hmm, sí, tienes razón. Respuesta bien formateada, por cierto. Ah, y su pregunta no era sobre VIM, sino sobre VI. ;)
Marcel Korpel

Respuestas:

215

Estoy usando PuTTY y el editor vi. Si selecciono cinco líneas con el mouse y quiero eliminar esas líneas, ¿cómo puedo hacerlo?

Olvídese del ratón. Para eliminar 5 líneas, ya sea:

  • Vaya a la primera línea y escriba d5d( ddelimina una línea, d5delimina 5 líneas) ~ o ~
  • Escribir Shift-vpara entrar en el modo de selección linewise , a continuación, mover el cursor hacia abajo usando j(sí, uso h, j, ky lpara mover a la izquierda , abajo , arriba , derecha , respectivamente, que es mucho más eficiente que el uso de las flechas) y el tipo dpara eliminar la selección.

Además, ¿cómo puedo seleccionar las líneas usando mi teclado como puedo en Windows donde presiono Shifty muevo las flechas para seleccionar el texto? ¿Cómo puedo hacer eso en vi?

Como dije, use Shift-vpara ingresar al modo de selección por líneas o vpara ingresar al modo de selección por caracteres o Ctrl-vpara ingresar al modo de selección por bloques. A continuación, pasar con h, j, ky l.

Sugiero pasar algún tiempo con el Tutor de Vim (ejecutar vimtutor) para familiarizarse con Vim de una manera muy didáctica.

Ver también

Pascal Thivent
fuente
1
En realidad, vim tiene un excelente soporte para mouse si su terminal lo admite. Por ejemplo, usando el gpmdemonio en una consola, o ejecutándolo xtermo konsoleen un entorno gráfico, puede decirle a vim set mouse=a(o agregarlo a su .vimrc) y el mouse se puede usar para seleccionar, cambiar el tamaño de las divisiones, etc.
Ben Voigt,
@Ben Tienes razón, no uso el mouse en absoluto, pero esto no significa que VIM no pueda manejarlo (en ciertas circunstancias). De hecho, estaba eliminando esta parte inexacta de mi respuesta mientras escribías.
Pascal Thivent
Además, es muy difícil saber cuándo su V es mayúscula o no ... Sugeriría decir [Shift] + [V] para la selección del modo de línea.
Ben Voigt
Sé que ha pasado un tiempo, pero ¿por qué el uso de h, j, ky lsería mucho más eficaz que utilizar las flechas? No veo ningún problema al usar las flechas y el resultado final es el mismo. Además, las flechas se diseñaron por primera vez para ese propósito, por lo que su disposición se siente mucho más intuitiva (al menos para mí)
Frederico Pantuzza
1
@FredericoPantuzza Es una cuestión de movimiento del brazo en ese punto: el objetivo es mantener los dedos en las teclas de la fila de inicio en todo momento. Tener que levantar el brazo derecho y deslizarlo hacia las teclas de flecha para usarlas se suma con el tiempo.
AndrewF
59

Hágalo de la forma vi.

Para borrar 5 líneas presione: 5dd(5 borrar)

Para seleccionar (copiarlos en el portapapeles), escriba: 10yy

Es un poco difícil de entender, pero muy útil de aprender al usar esos terminales remotos.

Tenga en cuenta las curvas de aprendizaje de algunos editores:


(fuente: calver en unix.rulez.org )

OscarRyz
fuente
31

Si desea eliminar usando números de línea, puede usar:

:startingline, last line d

Ejemplo:

:7,20 d

Este ejemplo eliminará las líneas 7 a 20.

Vladimir verleg
fuente
Hasta ahora no he tenido conocimiento de este consejo. ¡Funciona a las mil maravillas! ¡Gracias!
Tung
13

Resaltar con el mouse solo resalta los caracteres en el terminal. VI realmente no obtiene esta información, por lo que debe resaltar de manera diferente.

Presione 'v' para ingresar a un modo de selección y use las teclas de flecha para moverlo. Para eliminar, presione x. Para seleccionar líneas a la vez, presione shift + v. Para seleccionar bloques, intente ctrl + v. Eso es bueno para, digamos, insertar muchas líneas de comentarios delante de su código :).

Estoy bien con VI, pero me tomó un tiempo mejorar. Mis compañeros de trabajo me recomendaron esta hoja de trucos . Guardo una copia impresa en la pared para esos momentos raros en los que olvido algo.

¡Feliz piratería!

heymatthew
fuente
6

Cuando se usa un terminal como PuTTY , generalmente los clics del mouse y las selecciones no se transmiten al sistema remoto. Por tanto, vi no tiene idea de que acaba de seleccionar un texto. (Hay excepciones a esto, pero en general las acciones del mouse no se transmiten).

Para eliminar varias líneas en vi, use algo como 5ddeliminar 5 líneas.

Si no está utilizando Vim , le recomiendo encarecidamente que lo haga. Puede usar la selección visual, donde presiona Vpara iniciar un bloque visual, mueve el cursor al otro extremo y presiona dpara eliminar (o cualquier otro comando de edición, como ycopiar).

Greg Hewgill
fuente
1
@Justin L .: Use <kbd>a</kbd>.
Greg Hewgill
1
¡Gracias! : D ¿Hay más de estos escondidos en alguna parte?
Justin L.
1
Putty es capaz de transmitir comandos del mouse; la primera oración puede estar desactualizada.
congusbongus
3

Si desea eliminar todas las líneas de un archivo de su número de línea actual, utilice dG, eliminará todas las líneas, es (shift g)decir, el final del archivo.

Syed
fuente