Smartare historik med zsh och Vi-mode
Jag använder sedan länge Vi-läget i zsh, vilket jag gillar, även om jag alltid har saknat en liten grej. Nämligen widgeten history-search-backward
. Widgets är enligt mig ett litet konstigt namn för typ funktioner/plugins.
Nu undrar du kanske vad history-search-backward
? Om du använder skalet zsh kanske du till och med använder funktionen utan att ens veta om det. Låt oss säga att du körde ett kommando häromdagen som du vill köra igen, men det var ett komplext kommando och som du kanske inte minns eller inte bara orkar skriva igen. Vad gör man?
Det är nämligen så finurligt att history-search-backward
låter dig bläddra bland historiken, men bara bland kommandom som börjar med de tecken du skriver ut. Säg att du kopierade en fil och vill kopiera samma fil igen, skriv bara ut cp
och använd sedan piltangenterna för att bläddra bland din historik med kommandon som börjar på cp
.
Men använder man Vi-läget i zsh fungerar inte denna funktion med j
och k
, vilket är något jag har saknat. Men efter lite research hittade jag namnet på funktionen och hur du binder rätt tangenter till det:
bindkey -M vicmd k history-search-backward
bindkey -M vicmd j history-search-forward
Men om du inte vet vad kommandot börjar med då? Då går det faktiskt också att söka fritt i historiken. Och som standard är det Ctrl-R
för att söka och sedan Ctrl-R
igen för att bläddra mellan sökresultaten.
Men om man använder Vi-mode vill man ju göra det på rätt sätt så att säga, det vill säga att man använder /
för att söka och n
och N
för att bläddra bland sökresultaten. Det är som tur är enkelt ordnat med:
bindkey -M vicmd / history-incremental-search-backward
bindkey -M vicmd n history-incremental-search-backward
bindkey -M vicmd N history-incremental-search-forward