Gfishline est un prompt Linux inspiré de fish.
Go to file
Benjamin VAUDOUR bea7084d5b Corrections + ajout de la possibilité de naviguer dans la complétion avec les touches fléchées 2024-03-02 21:19:12 +01:00
.gitignore Commit initial 2024-03-02 15:05:33 +01:00
LICENSE Commit initial 2024-03-02 15:05:33 +01:00
README.md Corrections + ajout de la possibilité de naviguer dans la complétion avec les touches fléchées 2024-03-02 21:19:12 +01:00
completer.go Corrections + ajout de la possibilité de naviguer dans la complétion avec les touches fléchées 2024-03-02 21:19:12 +01:00
fishline.go Corrections + ajout de la possibilité de naviguer dans la complétion avec les touches fléchées 2024-03-02 21:19:12 +01:00
formater.go Commit initial 2024-03-02 15:05:33 +01:00
go.mod Corrections + ajout de la possibilité de naviguer dans la complétion avec les touches fléchées 2024-03-02 21:19:12 +01:00
go.sum Commit initial 2024-03-02 15:05:33 +01:00
splitter.go Commit initial 2024-03-02 15:05:33 +01:00

README.md

gfishline

Gfishline est un prompt Linux inspiré de fish.

Il supporte la coloration syntaxique et lautocomplétion.

Utilisationtypique

Gfishline peut être utilisé de la façon suivante:

package main

import (
    "fmt"
    "os"
    "gitea.zaclys.net/bvaudour/gfishline"
)

func main() {
    prompt := "\033[1;31m> \033[m"
    fl := gfishline.New()

    // Les deux lignes ci-dessous permettent dutiliser la complétion et le formatage par défaut.
    //
    // Pour une complétion plus élaborée, utilisez fl.SetCompleter(cb) où cb est une fonction de la forme
    // `func (word []string, wordIndex []string, isSpaceIndex bool) (choices []string)`.
    //
    // Pour un formatage plus élaboré, utilisez fl.SetFormater(cb) où cb est une fonction de la forme
    // `func (in [string) (out [string])`.
    fl.SetCommands("help", "exit", "print")
    fl.SetOptions("--help", "-h")

    defer fl.Close()
    for {
        input := fl.Prompt(prompt) // fl.PromptPassword(prompt) pour masquer ce qui est saisi
        if result, ok := input.Ok(); ok {
            //@TODO Do some stuff with input
            if result == "exit" {
                return
            }
        } else if err, ok := input.Err(); ok {
            fmt.Printf("\033[1,31mErreur système : %s\033[m\n", err)
            os.Exit(1)
        }
    }
}

Raccourcis clavier disponibles

Raccourci clavier Action
Ctrl+A, Home Retour au début de la saisie
Ctrl+E, End Retour à la fin de la saisie
Ctrl+B, Left Déplacement dun caractère vers la gauche
Ctrl+F, Right Déplacement dun caractère vers la droite
Alt+B, Ctrl+Left Déplacement dun mot vers la gauche
Alt+F, Ctrl+Right Déplacement dun mot vers la droite
Ctrl+U Suppression de tous les caractères du début de la ligne au curseur (curseur non compris)
Ctrl+K Suppression de tous les carctères du curseur (compris) à la fin de la ligne
Ctrl+D (si saisie commencée), Del Suppression du caractère sous le curseur
Ctrl+D (si ligne vide) Termine lapplication (EOF)
Ctrl+H, Backspace Suppression du caractère avant le curseur
Alt+D, Alt+Del Suppression du prochain mot
Alt+Backspace Suppression du précédent mot
Ctrl+C Termine lapplication (avec erreur)
Ctrl+P, Up (si ligne vide au départ) Remonte à lhistorique précédent
Ctrl+N, Down (si ligne vide au départ) Descend dans lhistorique
Ctrl+R, Up (si ligne non vide) Recherche dans lhistorique (par préfixe de ligne) à partir de la fin
Ctrl+S, Down (si ligne non vide) Recherche dans lhistorique (par préfixe de ligne) à partir du début
Ctrl+Y Copie le dernier élément supprimé
Alt+Y Remonte dans lhistorique des éléments supprimés et les copie (implique Ctrl+Y précédemment lancé)
Ctrl+G, Cancel Annule les dernières actions temporaires (historique, recherche, copie, historique de copie)
Tab, Up (si complétion commencée) Complétion suivante
Shift+Tab, Down (si complétion commencée) Complétion précédente
Left (si complétion commencée) Complétion à gauche
Right (si complétion commencée) Complétion à droite