command@sshhost works
This commit is contained in:
		@@ -1,3 +1,33 @@
 | 
				
			|||||||
function zle-accept-line-with-ssh () {
 | 
					function zle-accept-line-with-ssh () {
 | 
				
			||||||
	echo "stub"
 | 
					    # prevent replacing empty lines with "ssh -p"
 | 
				
			||||||
 | 
					    if [[ ${BUFFER} == "" ]]; then
 | 
				
			||||||
 | 
					        zle .accept-line
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						firstword=${BUFFER[(w)1]}
 | 
				
			||||||
 | 
						# Rough translation: "if @ is in firstword"
 | 
				
			||||||
 | 
						if [[ ${firstword[(i)@]} -le ${#firstword} ]]; then # Lit: "if the index of '@' within firstword is less than the length of firstword"
 | 
				
			||||||
 | 
							origbuffer=$BUFFER
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							cmd=${firstword%@*} # set cmd to everything BEFORE the @
 | 
				
			||||||
 | 
							host=${firstword#*@} # set host to everything AFTER the @
 | 
				
			||||||
 | 
							# ports!
 | 
				
			||||||
 | 
							if [[ ${host[(i):]} -le ${#host} ]]; then
 | 
				
			||||||
 | 
								port="-p ${host#*:}"
 | 
				
			||||||
 | 
								host=${host%:*}
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
							args=${origbuffer#${firstword} } # set args to everything AFTER the first word
 | 
				
			||||||
 | 
							[[ $args == $firstword ]] && args="" # Prevent "command command@host" from running a command with no args
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if [[ $cmd == "" ]] && [[ $args == "" ]]; then
 | 
				
			||||||
 | 
								BUFFER="ssh $port $host"
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								BUFFER="ssh $port -t $host \"$cmd ${args}\""
 | 
				
			||||||
 | 
							fi
 | 
				
			||||||
 | 
						fi
 | 
				
			||||||
 | 
						unset host port cmd
 | 
				
			||||||
 | 
						zle .accept-line
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					zle -N accept-line zle-accept-line-with-ssh
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user