From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3888 invoked by alias); 28 Feb 2018 02:13:51 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: List-Unsubscribe: X-Seq: 23183 Received: (qmail 27453 invoked by uid 1010); 28 Feb 2018 02:13:50 -0000 X-Qmail-Scanner-Diagnostics: from mail-lf0-f44.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(209.85.215.44):SA:0(-1.9/5.0):. Processed in 15.360144 secs); 28 Feb 2018 02:13:50 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE,RCVD_IN_DNSWL_NONE,SPF_PASS,T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.1 X-Envelope-From: john.benninghoff@gmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=tfHNEFwuhmvR1SY04n+InmN4dEDDx3SEfhC+OhW9Iyg=; b=JlCzXgX2tqWkY8VHUfBMvhUw13CC121CJyltL1e+8PDQZZIScG/9iluLb8tCgYYaby ICMxPuXAAZSnvaeUUle9H+pem+FyE/SV5Mq7qJ86Ctd6bGFSze0Ymd3Bl+lvbwzRFX+M uz0lOdUHtDLIFEZADa1sMfqKSsN7TbYE9f89IYLxY4fYCd19gPYeFmM4HyFEiZRg+gJU 8AcRQpGZyYQCEqz215Lby75rOMopqY+JXF7ozFS89zcSgAmK+azBwW6Kz+E0f1qvriQs d4DK24saXKnJ8sBCtl8UYT2rcf4aHcMDU9k7kdUhPt9zRlCdyCHbmpE9kFPNdIvKJIRS iJ0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=tfHNEFwuhmvR1SY04n+InmN4dEDDx3SEfhC+OhW9Iyg=; b=BJsm1i7VsOeW8ZPVLuVbaBgrtNZG+bds+zYVi23K4FrLXZg1GTPj0Jr3tCRUX7Cymk m2O/5B0TJvuc9UvZhqs9FesJ1TIM8PJWegIn+5AXakx1nn66iOgRmK+0HiNRhrQXucPO OmACZEQCLsbRcVdystrndd7L+2kjjPiAPigMPwBvIVW03vGSC0c5w0LgzjW9g9t1p0tn l4IqaKK0LaahyV/PEoCKQv99AyVlQ8FR7EaLcSQpkutpk4Ug17bP0SceGHsYyCjNn8mK rISg0gSKBxDsd/kVhEMCORqL9PkeVNUEIVA/f35/3TWQxzr4lJbvmogTpHnmbTdcqF40 jxhg== X-Gm-Message-State: APf1xPCnKOqfavR4RBFbPt6Z1mS31OkKl3vzjKh19Tx5PKsYzoyaeaai PQA3LbGKhFzpfMkNYFFEhFNQzyJ9Bxprd1QrXxLYDA== X-Google-Smtp-Source: AG47ELtRPi7rs3rlQ+8e55pT+B+HhJK5iGEtP/5n5fn2bd6pfmqHpipA9iEal9eEiS389z/fY0dLipbpW0JtoS8rCXA= X-Received: by 10.25.234.148 with SMTP id y20mr11578129lfi.53.1519784009785; Tue, 27 Feb 2018 18:13:29 -0800 (PST) MIME-Version: 1.0 From: John Benninghoff Date: Tue, 27 Feb 2018 18:13:28 -0800 Message-ID: Subject: ssh host completion To: zsh-users@zsh.org Content-Type: multipart/alternative; boundary="94eb2c0ed1ea09e67405663c4a2b" --94eb2c0ed1ea09e67405663c4a2b Content-Type: text/plain; charset="UTF-8" I have tried to customize ssh completion using zstyle so that it uses only the host names configured in my ~/.ssh/config file. I use the following section in my .zshrc file to try to get the desired behavior: if [[ -r ~/.ssh/config ]]; then sconf=( $(sed -n '/^Host[=\t ]/{s///;s/#.*//;p;}' ~/.ssh/config) ) zstyle ':completion::complete:ssh:argument-1:' tag-order !users zstyle ':completion::*:ssh:*:' hosts $sconf #zstyle -e ':completion::*:ssh:*:' hosts REPLY=$sconf #zstyle -e ':completion::*:ssh:*:' hosts reply=$sconf # Use ^Xh to see context and tags applicable in CLI position fi Some of my failed zstyle attempts are commented out. I used the first zstyle command to eliminate the built-in users completion I didn't want(!users). The 2nd remaining zstyle command attempts to give me hostname completion based on hostnames in ~/.ssh/config. I know there is a built-in ssh hostname completion based on /etc/hosts. I want to remove that and replace it with the $sconf setting. I'm not sure how to remove the built-in hostname completion. *jbenninghoff@jb-mbpro 1: zstyle* completer :completion:* _complete _ignored filename :compinstall '$HOME/.zshrc' hosts :completion::*:ssh:*: kubeproxy pslab psnode184 ds-cluster-01 aws-ds rs1 rs-sles01 psedge ps135 psnode135 ansible dellclient dellnvme hec lenovo-sr630 s8 l8s lenovo b143-l8seth0 t1 t2 sles4 sles3 sles2 sles medge aws-p1 philips phil irs-edge irs aws-ara aws-araceli aws-jb aws-e2 o-prod oprod odev bhte bhtestedge bht bhtestn1 bhe bhprodedge bh bhnode1 ciscopocedge pocedge ciscopoc poc aws-es aws-m1 aws-e3 aws-mesos mesos aws-vgutta vg aws-deborah aws-e1 aws-juniper-poc juni aws-indexer labgw jump cjbox3 ciscojbox2 cjbox2 ciscojbox1 marco marcoaws sandboxsko sandboxd tron cobbler procurve sandbox4 ps1 ds1 pslab2 kddi pslab1 gracenote gr jbimpala0 rubi rubicon sandbox3 atsqa trig triggit lab-hdp msftp qa2 qa1 sftp cvprod cvqa cvdev qa3 return dglab1 ibm cent centVM edge vm1 edge1 sm1 edge2 esxv1 esxv2 esxv3 esxv4 esxv5 esxvm1 stackiq hp hpold plat bolt hp2 mbpro firefly cisco16 dell cisco sapporo tag-order :completion::complete:ssh:argument-1: !users Strangely, zstyle shows the correct list of hostnames in hosts section but those do not get used when I attempt completion by starting with 'ps' then tab for example. I get: *jbenninghoff@jb-mbpro 1: ssh psnode4* psnode40 psnode41 psnode42 psnode43 psnode44 psnode40.ps psnode41.ps psnode42.ps psnode43.ps psnode44.ps Which are hostnames in /etc/hosts but not in ~/.ssh/config. When I check the ssh completion in effect right after I type ssh by using ^Xh, I see the below output: *jbenninghoff@jb-mbpro 1: ssh* tags in context :completion::complete:ssh:: argument-1 options (_arguments _ssh _ssh) tags in context :completion::complete:ssh:argument-1: hosts users (_ssh _ssh) hosts (_hosts _combination _ssh_hosts _ssh _ssh) users (_users _combination _ssh_users _ssh _ssh) jbenninghoff@jb-mbpro 1: zsh --version zsh 5.3 (x86_64-apple-darwin17.0) jbenninghoff@jb-mbpro 1: type -a zsh zsh is /bin/zsh /John --94eb2c0ed1ea09e67405663c4a2b--