¿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-word
También hay
unix-filename-rubout
paraReadline
!fuente
unix-filename-rubout
es la respuesta correcta a la pregunta formulada, ya que elimina los espacios en blanco para recortar o, mientras queAlt-BkSpc
no 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 vi
Le 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
db
en este escenario en bash. También encontré quevi-backward-kill-word
en 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.db
que en algunos casos sí.