¿Hay un acceso directo en bash y zsh para eliminar un componente de una ruta? Por ejemplo, si escribo ls ~/local/color/y el cursor está al final de la línea, ¿hay un atajo para eliminarlo color/al final? Idealmente, quiero soluciones tanto en modo vi como en modo emacs
19

bindkey [key] vi-backward-kill-wordTambién hay
unix-filename-ruboutparaReadline!fuente
unix-filename-ruboutes la respuesta correcta a la pregunta formulada, ya que elimina los espacios en blanco para recortar o, mientras queAlt-BkSpcno se detendrá ante personajes como guión, guión, punto, etc.Por defecto, bash (y supongo que zsh) estará en modo emacs. Podrías probar algo como esto:
Esc + bdevolverá el cursor una palabra. Ctrl + keliminará hasta el final de la línea.
La mayoría de los shells modernos (como bash) implementarán funciones avanzadas de edición de línea de comandos. Esos comandos están cerca de la edición de emacs (Ctrl + A para el inicio de línea, Ctrl + E para el final de línea, ...).
Si está familiarizado con los editores similares a vi, puede intentar permitir el modo vi.
set -o viLe da a su shell modos similares a vi (modo de comando / modo de inserción), y obtiene acceso a los comandos estándar (d para eliminar, r para reemplazar, ...)
En el modo Vi, así es como harías lo que describiste:
fuente
dben este escenario en bash. También encontré quevi-backward-kill-worden zsh es lo que quiero, y es más conveniente que establecer el modo vi en bash. Pero todavía quiero encontrar un acceso directo de modo emacs para este propósito en bash.dbque en algunos casos sí.