Tengo un par de funciones de shell definidas en mi .zshrc
que ahorran al escribir y permiten la integración con la pantalla. Por ejemplo:
function s()
{
screen -t "$1" ssh "$@"
}
Sin embargo, cuando uso estas funciones de shell, no puedo aprovechar las funciones integradas de finalización de comandos de zsh. (En el caso de SSH, completar automáticamente los nombres de host basados en known_hosts y ssh_config). ¿Cuál es la forma preferida de conectarse a los mecanismos de finalización existentes para los comandos para los que he creado contenedores?
EDITAR:
Gracias a Gilles por su respuesta a continuación. Usar compdef parece ser la forma de hacerlo, pero curiosamente no parece funcionar de manera uniforme. En este caso, tengo la siguiente configuración:
function s()
{
screen -t "$1" ssh "$@"
}
function m()
{
screen -t "man.$1" man "$1"
}
compdef $_comps[man] m
compdef $_comps[ssh] s
La finalización de mi función de contenedor 'm' funciona como se esperaba, sin embargo, la finalización de mi función 's' no lo hace; en lugar de intentar completar los nombres de host, parece que retrocede al autocompletado predeterminado al proporcionarme una lista de archivos cuando presiono 'tab'. ¿Hay alguna rareza en la forma en que se maneja la finalización de SSH, lo que significa que necesito hacer algo más?
fuente
compdefas xterm cxterm uxterm xterm-color
.