IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

[Vim] Peut-on, en mode commande, éviter taper un espace pour enclencher le caractère ^ ?


Sujet :

Shell et commandes GNU

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    605
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 605
    Points : 670
    Points
    670
    Par défaut [Vim] Peut-on, en mode commande, éviter taper un espace pour enclencher le caractère ^ ?
    Je débute avec vim.

    Tout d'abord, j'ai du installer vim sur Debian, et ne pas m'en tenir à vi qui était présent.
    vi affichait des caractères C, D ou autres quand j'utilisais les flèches. Je n'ai pas trop compris pourquoi ils avaient laissé cette fonctionnalité (qui peut servir à qui, exactement ? Et pour faire quoi ?), mais du coup, j'en ai conclu qu'il n'était pas utilisable, sauf à avoir tant de maîtrise de soi qu'on se sache capable de s'empêcher d'utiliser les flèches directionnelles d'un clavier 102 touches toute sa session d'édition durant.
    Je n'ai pas testé le pavé numérique, du coup. Peut-être que lui il aurait fonctionné. Mais je suis parti avec l'idée que vi était fait pour les claviers 84 touches et vim pour les 102 touches. Voilà.

    Mon souci du moment, c'est le caractère ^ utilisé dans les commandes.
    À l'opposé du $, il ramène le curseur en début de ligne. Mais sur nos claviers français, c'est un caractère mort : il lui faut un autre caractère d'appui pour se manifester : un e par exemple, pour que ^ + e frappés fassent ê.
    Donc quand on veut seulement ^, il faut taper ^ + espace. Exaspérant. Taper deux touches là où il n'en faudrait qu'une, c'est à dire un caractère de trop, vous convenez bien que face à tout ce que vi peut représenter, symboliser, c'est un crime.

    Existe t-il un moyen sous vim de permettre qu'il apparaisse à l'écran dès que la touche ^ est frappée, et sans qu'un espace doive suivre ?

    Merci !

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 382
    Points
    19 382
    Par défaut
    pourquoi vim ? ça fonctionne différemment dans le terminal ?
    qu'est-ce que tu appelles "le mode commande" ?

    t'as essayé AltGr-9 ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    À l'opposé du $, il ramène le curseur en début de ligne.
    Dans les expressions régulières, oui.
    Mais dans vim, tu peux utiliser "0".
    d0 efface toute la ligne avant le caractère courant.
    c0 change toute la ligne avant le caractère courant.
    0v$ sélectionne toute la ligne.
    etc.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    605
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 605
    Points : 670
    Points
    670
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    pourquoi vim ? ça fonctionne différemment dans le terminal ?
    qu'est-ce que tu appelles "le mode commande" ?

    t'as essayé AltGr-9 ?
    J'appelle mode commande celui où l'on provoque des actions à l'aide de d3w, par exemple, pour effacer trois mots,
    par opposition au mode d'édition où l'on saisit réellement le texte.
    Mais peut-être portent-ils d'autres noms.

    AltGr-9, ça ne change pas tellement la situation.
    Ca fait apparaître le ^ tout de suite, oui, mais à condition de frapper deux touches en même temps,
    au lieu de l'une après l'autre.

    @Flodelarab
    Le "0" du pavé numérique est parfait.
    Merci !

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 382
    Points
    19 382
    Par défaut
    Ca fait apparaître le ^ tout de suite, oui, mais à condition de frapper deux touches en même temps,
    et c'est traumatisant ?
    Mais peut-être portent-ils d'autres noms.
    effectivement, ça porte d'autre noms : https://en.wikibooks.org/wiki/Learni...itor/Vim/Modes
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    ça n'existe pas à ma connaissance. Le problème n'a pas l'air de te gêner pour ", je comprends pas pourquoi
    Si tu fais ^+2 ça le met en exponentiel, sous linux. ^ est unique dans son comportement.
    Tu peux sélectionner ^ et le copier coller si tu veux économiser ton clavier, mais du coup tu vas user ta souris.

    ça parait être un faux problème que tu as.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  7. #7
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    vi affichait des caractères C, D ou autres quand j'utilisais les flèches. Je n'ai pas trop compris pourquoi ils avaient laissé cette fonctionnalité (qui peut servir à qui, exactement ? Et pour faire quoi ?)
    Pour les flêches et A B C D, c'est à cause du stockage sur 3 octets des flèches directionnelles.

    Je copie-colle ici un bout d'un de mes scripts:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    while read -sn1 ligne
    do
        # Pour les flèches, la détection prend 3 caractères consécutifs: 
        # "\e" ou "\033" puis "[" puis "A" ou "B" ou "C" ou "D" 
        # Afin que les monolettres réagissent, il n'y a pas de "read -sn 3"
     
        if [ "$ligne" = "q" ]; then
            quit_perso
        elif [[ "$ligne" =~ [0-9] ]]; then
     
            blablabla
     
        elif [ "$ligne" = "A" ]; then
            curseur_y=$((curseur_y-1))
            curseur_adapt
        elif [ "$ligne" = "B" ]; then
            curseur_y=$((curseur_y+1))
            curseur_adapt
        elif [ "$ligne" = "C" ]; then
            curseur_x=$((curseur_x+1))
            curseur_adapt
        elif [ "$ligne" = "D" ]; then
            curseur_x=$((curseur_x-1))
            curseur_adapt
        fi
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  8. #8
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    605
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 605
    Points : 670
    Points
    670
    Par défaut
    Je ne comprends pas le but du script ?
    Il sert à patcher vi pour qu'il revienne à un fonctionnement normal ?

    Dans ce cas, pourquoi ne pas l'avoir patché depuis ?
    Je l'ai utilisé sur Debian 9, il déconnait toujours. Il faudra attendre Debian 15 pour que ce soit corrigé
    ou bien ça sert effectivement à quelqu'un que les flèches directionnelles fassent des A, B, C, D ?
    On ne va pas me dire qu'en C ou C++ on ne sait pas corriger ça !

    Alors ça sert à quoi et à qui, pour faire quoi ?
    Quelle est l'utilité pratique de ce comportement qui demeure ?

  9. #9
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 382
    Points
    19 382
    Par défaut
    tu pinailles.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #10
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Calme-toi, prends un verre d'eau, détends-toi et relis ce qui est écrit dans mon message précédent jusqu'à ce que tu comprennes.

    Je ne peux que répéter. Si les a b c d majuscules apparaissent, c'est juste parce que les flèches sont codées sur 3 octets alors que vi lis les octets 1 par un. Le 3ème octet est a b c ou d majuscules.

    Quand au script, c'est juste pour indiquer comment on peut récupérer l'appui de touches fléchées, dans un script shell, pour ceux que ça intéresse.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  11. #11
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Citation Envoyé par grunt2000 Voir le message
    Je débute avec vim.

    Tout d'abord, j'ai du installer vim sur Debian, et ne pas m'en tenir à vi qui était présent.
    vi affichait des caractères C, D ou autres quand j'utilisais les flèches. Je n'ai pas trop compris pourquoi ils avaient laissé cette fonctionnalité (qui peut servir à qui, exactement ? Et pour faire quoi ?), mais du coup, j'en ai conclu qu'il n'était pas utilisable, sauf à avoir tant de maîtrise de soi qu'on se sache capable de s'empêcher d'utiliser les flèches directionnelles d'un clavier 102 touches toute sa session d'édition durant.
    Ce n'est pas normal. Les flèches fonctionnent avec vi (le vrai) depuis la nuit des temps, plus précisément depuis 1979 donc bien avant que vim commence à être disponible, en 1991.

    Je n'ai pas testé le pavé numérique, du coup. Peut-être que lui il aurait fonctionné. Mais je suis parti avec l'idée que vi était fait pour les claviers 84 touches et vim pour les 102 touches. Voilà.
    C'est une conclusion erronée. vi est conçu pour s'adapter au terminal et au clavier utilisé en suivant la configuration associée à la valeur de la variable TERM dans la base terminfo (anciennement termcap). Il faudrait quand même clarifier quel est exactement le vi qui installé sur ta Debian.

    Mon souci du moment, c'est le caractère ^ utilisé dans les commandes.
    À l'opposé du $, il ramène le curseur en début de ligne. Mais sur nos claviers français, c'est un caractère mort : il lui faut un autre caractère d'appui pour se manifester : un e par exemple, pour que ^ + e frappés fassent ê.
    C'est un choix de configuration de ton système, tu peux choisir d'avoir l'accent circonflexe comme touche morte ou pas en fonction des types de claviers disponibles, mais tu vas râler quand il te faudra saisir des voyelles avec un accent circonflexe. Tu peux aussi assez facilement redéfinir une touche pour avoir un accent circonflexe en direct puisqu'AltGr+9 ne te plait pas. Prends par exemple la touche ² en haut à gauche qui ne sert à peu près jamais.
    ɹǝsn *sıɹɐlos*

  12. #12
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    605
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 605
    Points : 670
    Points
    670
    Par défaut
    Je n'arrive plus à reproduire l'incident.
    Depuis que j'ai installé vim, en repassant sur vi, il ne se reproduit plus. Enfin, si cela a un rapport.
    Curieux.
    Je n'aurais pas rêvé un incident pareil, si ?!

    Je ... je ... je vais sur emacs, d'accord ?!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Peut on mettre une commande linux avec python
    Par specimen35 dans le forum Général Python
    Réponses: 2
    Dernier message: 20/12/2007, 16h06
  2. Peut-on utiliser des commandes linux avec PERL
    Par undercrash dans le forum Linux
    Réponses: 2
    Dernier message: 01/03/2007, 14h12
  3. Execution d'un script php en mode commande
    Par erwan.bodere dans le forum Apache
    Réponses: 2
    Dernier message: 13/09/2006, 14h35
  4. [Dev-CPP] Peut-on voir la command line du projet?
    Par vdumont dans le forum Dev-C++
    Réponses: 2
    Dernier message: 04/04/2006, 21h28
  5. [TP]Peut-on mettre un commande dos dans le prog?
    Par pierre olmes dans le forum Turbo Pascal
    Réponses: 22
    Dernier message: 24/05/2003, 22h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo