Fryboyter

Suche von fzf beschleunigen

Vor einigen Wochen habe ich einen Artikel über fzf veröffentlicht. In diesem habe ich angemerkt, dass fzf zum suchen den Befehl find verwendet, was in bestimmten Fällen nicht gerade schnell ist. Was kann man also dagegen unternehmen?

Die Lösung lautet FZF_DEFAULT_COMMAND und fd. Wie in einem anderen Artikel angemerkt handelt es sich bei fd um eine schnellere Alternative zu find. Damit fzf fd verwendet, trägt man folgendes unter die bereits vorhandenen Einträge für fzf in der .zshrc ein.

export FZF_DEFAULT_COMMAND='fd --type f'

Wenn man nun noch den Terminal Emulator neu startet bzw. die Konfiguration der zsh neu einliest, sollte fzf deutlich schneller Ergebnisse ausspucken. Anstelle von fd kann man auch ripgrep nutzen. Hier würde der Eintrag zum Beispiel folgendermaßen aussehen.

export FZF_DEFAULT_COMMAND='rg --files --no-ignore --hidden --follow'

Das beide Einträge sollten auch unter anderen Shells wie der Bash funktionieren.

Linux | OSBN

Deutschsprachiger Linux-Chat in der Matrix

Wie schon das eine oder andere mal angemerkt, setze ich große Hoffnung auf das Matrix-Protokoll wenn es um Chats geht. Daher rühre ich mal wieder die Werbetrommel und möchte auf den Raum #linuxdeutsch:matrix.org hinweisen.

Im Grunde genommen handelt es sich hierbei nur um einen Raum, in dem es hauptsächlich um Linux geht und in dem deutsch gesprochen wird. Viele werden jetzt vermutlich denken, das das ja nichts besonderes ist. Und ihr habt recht.

Aber… Aktuell sind dort 89 Konten eingeloggt und es wird sogar regelmäßig kommuniziert. Das ist schon mal mehr als es aktuell in vielen IRC-Kanälen und Jabber-Räumen der Fall ist. Zudem ist Matrix eben die Zukunft. Zugegeben die Aussage steht auf dünnem Eis und ist ziemlich subjektiv. Aber sie steht meiner Ansicht nach auf dickerem Eis als Aussagen, dass zum Beispiel Mastodon ein gleichwertiger Ersatz für Facebook ist. Oder das man problemlos anstelle von Twitter twtxt nutzen kann. Aber selbst wenn die Aussagen richtig sind, fehlen trotzdem die Nutzer (auf die Masse bezogen). Matrix kann dies, zumindest teilweise, mit Brücken (die Teil des Konzepts sind) in andere Netzwerke wie IRC oder Slack kompensieren. Somit spielt es im besten Fall keine Rolle was der Gesprächspartner nutzt. Und sind wir mal ehrlich. Jemanden von seinem Netzwerk zu überzeugen funktioniert doch zu 98 Prozent nicht. Lustigerweise kann ich aber, zumindest auf meinen Freundes- und Bekanntenkreis bezogen, die Aussage treffen, dass immer mehr Matrix nutzen.

Linux | OSBN

In Verzeichnisstruktur schnell nach oben wechseln

Ab und zu muss ich in einer Verzeichnisstruktur arbeiten die ziemlich verästelt ist. Wenn man in dieser dann zum Beispiel zwei Ebenen nach oben will, kann man cd ../.. nutzen. Will man aber zum Beispiel sechs Ebenen höher, muss man schon aufpassen, dass man ensprechend viele .. und / eingibt.

Um dies zu vereinfachen, kann folgende Funktion genutzt werden (getestet mit der zsh).

function up {
     
    local counter=${1:-1}
    local dirup="../"
    local out=""

    while (( counter > 0 )); do
        let counter--
        out="${out}$dirup"
    done

    cd $out
}

Befindet man sich beispiel in /etc/systemd/system/timer.target.wants und will in /etc/systemd/systemd_wechseln, reicht mit dieser Funktion der Befehl “up 2” aus.

Linux | OSBN

CopyQ - Text ohne Formatierung kopieren

Wie vor kurzem schon angemerkt, nutze ich für die Zwischenablage nun CopyQ. Im Grunde bin ich damit zufrieden, aber es stört mich, dass der Text immer inkl. eventuell vorhandener Formatierungen kopiert wird. Leider gibt es in den Einstellungen keine Möglichkeit dies abzustellen.

CopyQ bietet allerdings die durchaus mächtige Funktion an, neue Befehle zu erstellen. Mit diesem lassen sich auch vorhandene Befehle überschreiben. Wie eben das Kopieren von Text. Hierfür ist folgender Code nötig.

[Command]
Automatic=true
Command="
    copyq:
    if (dataFormats().indexOf(mimeHtml)) {
      removeData(mimeHtml)
      copy(mimeText, data(mimeText))
    }"
Icon=\xf031
Input=text/plain
Name=HTML ignorieren

Diesen kopiert man einfach und öffnet dann in CopyQ mittels F6 (alternativ Datei -> Befehle/Globale Tastenkombinationen…) das Fenster in dem man die Befehle erstellen kann. Dort findet man rechts unten die Schaltfläche “Befehle einfügen [Strg+V]“. Klickt man darauf wird der eben kopierte Code eingefügt. Anschließend klickt man noch auf OK und das war es schon. Von nun an wird jeder Text ohne Formatierungen in die Zwischenablage eingefügt.

Linux | OSBN

Fuzzy Finder für die ZSH

Gestern hatte ich in einem Anfall von Wahnsinn meine Konfiguration der ZSH_aufgeräumt. Anstelle von zwei Dateien habe ich nun sieben mit ziemlich viel Kommentaren. Dafür kann man endlich nachvollziehen welcher Eintrag was macht und es ist alles ordentlicher. Nur beim Aufräumen ist aber nicht geblieben.

Die Suchfunktion in der Historie hat mir in letzter Zeit irgendwie nicht mehr zugesagt. Daher habe ich fzf (command-line fuzzy finder) getestet. Nach dem Installieren das Pakets muss man nur folgende Einträge in die .zshrc eintragen.

source /usr/share/fzf/key-bindings.zsh
source /usr/share/fzf/completion.zsh

Wenn man nun mittels Strg + R in der Historie suchen will erhält man erst einmal eine etwas ungewohnte Anzeige, die aus den letzten Einträgen besteht. Erst einmal nichts besonderes. Sucht man aber beispielsweise nach “pac” für pacman, bekommt man schon deutlich besser aufbereitet Ergebnisse angezeigt.

Mit den Cursor-Tasten lässt sich dann der gewünschte Eintrag auswählen. Angezeigt werden wohl standardmäßig immer 8 Einträge. Wenn mehr Einträge vorhanden sind, kann man allerdings auch weiter nach oben scrollen.

Fzf lässt sich aber nicht nur für die Historie der Shell nutzen. Verwendet man anstelle von Strg + R Strg + T kann man “fuzzy” nach Dateien und Verzeichnissen suchen. Hierbei wird allerdings das normale find verwendet. Somit ist zumindest dieser Teil, gerade bei vielen Dateien nicht gerade schnell. So wie der Sourcecode aussieht kann man diesen aber vermutlich schnell anpassen, dass statt dessen das schnellere fd verwendet wird. Ein weiterer Shortcut wäre ALT + S mit dem man nach Verzeichnissen suchen und direkt in diese wechseln kann.

Alles in allem konnte ich mit fzf nun drei Erweiterungen komplett ablösen. Diese habe zwar keine Probleme gemacht, aber weniger ist ab und zu auch mehr. Fzf sollte meines Wissens nach auch unter Fish und Bash funktionieren.

Linux | OSBN