![Uso de teclas VI para editar comandos de shell en UNIX](https://rvso.com/image/23944/Uso%20de%20teclas%20VI%20para%20editar%20comandos%20de%20shell%20en%20UNIX.png)
Solía tener un compañero de trabajo que era muy bueno en UNIX.
Me mostró cómo usar las combinaciones de teclas de Vi para editar mis comandos de shell.
Colocó el comando en un archivo que se ejecutaba cada vez que iniciaba sesión.
Desde entonces, me mudé a un proyecto diferente.
Lamentablemente no recuerdo cómo configurar esto.
¿Hay alguien aquí que sepa cómo usar las combinaciones de teclas de Vi para editar comandos en la terminal?
¿Cómo puedo hacer que esa configuración sea permanente?
Respuesta1
¡Estás hablando de la mejor característica jamás vista!
Puede usar los comandos vi para editar los comandos del shell (y el historial de comandos) agregando esto a su .bashrc
archivo:
set -o vi
También puede ejecutar ese comando desde la línea de comando para afectar solo su sesión actual.
Si no usa bash, sustituya el archivo rc apropiado por su shell.
Esto le permite usar comandos vi para editar cualquier comando...
También puedes usar jy kpara moverte por tu historial (después de presionar ESC).
También puedes usar /(después de presionar ESC) para buscar comandos antiguos.
En otras palabras, para encontrar ese comando súper largo que cp
hiciste hace diez minutos:
ESC/CPENTER
Luego puede recorrer todos los comandos coincidentes en su historial con ny N.
¡Todo esto me hace 10 billones de veces más productivo en la línea de comando!
Respuesta2
Si estás usando bash, como ya respondieron jahroy y evil otto, puedes usar
set -o vi
para hacer que bash use comandos de edición estilo vi.
Una vez que haya hecho esto, puede escribir Esc vpara iniciar el editor vi con un archivo temporal que contiene una copia de la línea de comando actual. Puedes editar el comando, incluso reemplazándolo con varias líneas; cuando guarde el archivo ( :wq
), el shell ejecutará los comandos editados.
Si tu prefieres
set -o emacs
puedes usar Ctl-XCtl-Epara hacer lo mismo. Utilizará su editor preferido $EDITOR
, no necesariamente emacs.
(Personalmente, uso vi (en realidad vim) para la mayor parte de mis ediciones, pero prefiero set -o emacs
en el shell; entrar y salir del modo de inserción es excelente para editar archivos, pero incómodo para comandos interactivos. YMMV.)
Respuesta3
Puede usar set -o vi
para cambiar los comandos de edición de línea como publicó @jahroy, pero puede estar pensando en el fc
comando (disponible en bash y creo que ksh, pero probablemente no tcsh), que pondrá el comando anterior en un editor (FCEDIT o EDITOR). , que probablemente haya configurado en vi) y luego ejecuta el comando cuando sale del editor. Consulte la página de manual o help fc
para obtener más detalles, o simplemente pruébelo.
Respuesta4
De hecho, esta es la característica más importante jamás vista. Aunque hay más:
Crea un archivo llamado
.editrc
que contiene la línea
bind -v
Línea de edición, es una biblioteca de versiones con licencia BSD que proporciona servicios similares a readline. Ese .editrc configurará sus combinaciones de teclas en modo vi en el shell de línea de comando de MySQL, o en cualquier aplicación que no use readline.
Me he vuelto algo olvidadizo con el paso de los años, por eso mi .zshrcobtiene algunos envoltoriospara el modo vi, para mostrarme en qué modo estoy en la línea de comando. Es agradable.
Sé que en zsh puedes escribir
bindkey -L
y obtenga la lista de combinaciones de teclas. Estoy seguro de que bash debe tener algo similar. No todas las claves vi están vinculadas de forma predeterminada. Átalos como mejor te parezca y estarás listo para las carreras.