Edited at

SSHと履歴検索で便利なalias

会社でも共有して、自分でも重宝している、無いとツライAlias(というかzshとpecoの使い方の話)


環境


  • MacOS(Linuxでも良い)

  • zsh

  • peco


pecoのインストール

pecoを使う前提なので、下記でpecoをインストールする。

$ brew install peco


履歴検索

ctrl + r で履歴検索を便利にするやつ。


設定内容

HISTFILE=~/.zsh_history

HISTSIZE=1000000
SAVEHIST=1000000
HIST_STAMPS="yyyy/mm/dd"
function history-all { history -E 1 }

function peco-history-selection() {
BUFFER=$(history | tail -r | awk '{$1="";print $0}' | egrep -v "ls" | uniq -u | sed 's/^ //g' | peco --layout bottom-up)
CURSOR=$#BUFFER
zle reset-prompt
}

zle -N peco-history-selection
bindkey '^R' peco-history-selection


SSH接続先検索

~/.ssh/conf.d/*/ 配下のconfigを読み込んで、ctrl + s でSSH接続先を絞るやつ。

### SSH

function peco-ssh () {
local selected_host=$(awk '
tolower($1)=="host" {
for (i=2; i<=NF; i++) {
if ($i !~ "[*?]") {
print $i
}
}
}
'
~/.ssh/conf.d/*/config | sort | peco --layout bottom-up --query "$LBUFFER")
if [ -n "$selected_host" ]; then
BUFFER="ssh -A ${selected_host}"
zle accept-line
fi
zle clear-screen
}
zle -N peco-ssh
bindkey '^S' peco-ssh