Aller directement au contenu

Mode « VI »


Introduction

Vim Logo

Le mode « VI » de Kate est un projet pour apporter l'édition modale de type « VIM » à l'éditeur de texte Kate et par extension à d'autres programmes KDE, partageant le même composant d'éditeur. Le projet a commencé comme un projet « Google Summer of Code » de 2008 - où toutes les fonctionnalités de base ont été écrites. J'ai continué à maintenir et à développer davantage ce code. Ainsi, le nombre de fonctionnalités manquantes de VIM diminue lentement. La plupart des utilisateurs de VIM seront déjà productifs concernant le mode VI de Kate. Une liste des éléments manquants est disponible en bas de la page.

Cette page est censée fournir un aperçu mis à jour de ce travail.

Pour activer le mode d'entrée de VI, veuillez aller à
Paramètres / Configurer Kate… → Édition → Mode d'entrée VI.
Il peut également être basculé avec le paramètre « Mode d'entrée de VI » dans le menu « Modifier ». La touche de raccourci par défaut est « Meta » + « CTRL » + « V » - où la touche » Meta » est aussi appelée « Windows ».

Objectifs

L'objectif du mode « VI » n'est _pas_de totalement remplacer les fonctionnalités de VIM et la prise en charge de toutes les fonctionnalités de VIM. Son objectif est de rendre le « mode de fonctionnement comme VIM » pour l'édition de texte - et les habitudes apprises avec VIM - disponibles pour les programmes utilisant l'éditeur de texte Kate comme éditeur interne. Ces programmes incluent

  1. L'éditeur de texte Kate
  2. KWrite - Éditeur simple de texte de KDE
  3. KDevelop - un environnement de développement intégré (IDE) avancé pour de nombreux langages de programmation
  4. Kile - un éditeur pour LaTeX

Le mode VI est conçu pour bien s'intégrer avec les programmes. Il s'écarte du comportement de VIM lorsque cela apporte quelque chose.Par exemple, la commande « : W » ouvrira un dialogue pour l'enregistrement en mode VI de Kate.

Incompatibilités avec Vim

Il n'y a que quelques fonctionnalités du mode VI de Kate qui sont incompatibles avec VIM (Sans compter les choses manquantes). Elles sont listées ci-dessous avec les raisons correspondantes.

  1. ** Kate : ** « U » et « CTRL » + « r » permet de refaire une action.
    ** VIM  : ** « CTRL » + « r » permet de refaire une action normale. « U » est utilisé pour annuler toutes les dernières modifications sur une ligne.
    La raison d'avoir le raccourci « U » agir pour refaire une action dans le mode VI de Kate est que le raccourci « CTRL » + « r » par défaut est pris par la fonction de remplacement de Kate (Recherche et remplacement). Par défaut, le mode VI ne remplacera pas les raccourcis de Kate (Cela peut être configuré dans Configuration / Configurer Kate… / Édition / Mode d'entrée VI). Ainsi, le fait de refaire une action doit également être disponible comme un appui de touche « normal ». En outre, le comportement de la commande « U » dans VIM ne correspond pas bien au système interne d'annulation de Kate, il ne serait donc non trivial de prendre en charge de toute façon.
  2. **Kate : ** « : print » affiche la boîte de dialogue « Imprimer »,
    **Vim : ** « : print » imprime les lignes de la plage fournie comme les commandes de son ancêtre « ed ». Les commandes comme « : print » sont disponibles non seulement dans mode VI, mais aussi pour les utilisateurs utilisant « régulièrement » Kate. J'ai donc choisi de laisser la commande « : print » lancer la boîte de dialogue d'impression - en suivant le principe de la moindre surprise au lieu d'imiter le comportement de VIM.
  3. **Kate : ** « Y » supprime jusqu'à la fin de la ligne.
    **Vim : ** « Y » supprime la totalité de la ligne, tout comme « yy ». Le comportement de VI pour la commande « Y » est en fait un bogue. Pour les commandes de modification et de suppression, « cc » / « dd », effectueront leurs actions sur la ligne actuelle et « C » / « D » effectueront leurs actions de la colonne du curseur à la fin de la ligne. Cependant, « yy »» et « Y » suppriment la ligne actuelle. En mode VI de Kate, la commande « Y » effectuera la suppression jusqu'à la fin de la ligne. Ceci est décrit comme « plus logique » [Voir dans la documentation de VIM] 2.
  4. **Kate : ** « : map » modifie les lignes sélectionnées du document par utilisation de l'expression JavaScript fournie.
    **Vim : ** « : map » ajoute la table de correspondance fournie aux modes « Normal » et « Visuel ». La commande « map » était déjà réservée par Kate. Dans la version 4.12+, vous pouvez utiliser une combinaison de « : nmap » et« : vmap » pour le remplacer.

Commandes prises en charge

Commandes prises en charge en mode normal / visuel

ToucheDescription
aEntrez en mode d'insertion et ajoutez
AEntrez en mode d'insertion et ajoutez à la fin de ligne
iBasculer en mode d'insertion
IInsérez avant le premier caractère non vide de la ligne
vBasculer en mode visuel
VPassez en mode « Ligne visuelle »
<c-v>Passez en mode « Bloc visuel »
gvRe-sélectionnez le visuel
oOuvrir une nouvelle ligne sous
OOuvrez une nouvelle ligne au dessus
JRejoignez-nous
cModifier
CModifier jusqu'à la fin de ligne
ccModifier une ligne
sSubstituer un caractère
SSubstituer une ligne
ddSupprimer une ligne
dSupprimer
DSupprimer jusqu'à la fin de ligne
xSupprimer un caractère
XSupprimer un caractère en arrière
guBasculer en minuscules
guuBasculer la ligne en minuscule
gUBasculer en majuscules
gUUBasculer la ligne en majuscule
yEnlever
yyLigne directrice
YEnlever jusqu'à la fin de ligne
pColler
PColler avant
r.Remplacer un caractère
RBasculer en mode de remplacement
:Basculer en ligne de commandes
/Rechercher
uAnnuler
<c-r>Refaire
URefaire
m.Définir une marque
>>Indenter la ligne
<<Supprimer l'indentation de la ligne
>Indenter les lignes
<Supprimer l'indentation des lignes
<c-f>Défiler d'une page vers le bas
<pagedown>Défiler d'une page vers le bas
<c-b>Faire défiler la page vers le haut
<pageup>Faire défiler la page vers le haut
<c-u>Faites défiler d'une moitié de page
<c-d>Faites défiler d'une demi-page vers le bas
zzCentrer la vue sur le curseur
gaImprimer le code des caractères
.Répéter la dernière modification
==Aligner la ligne
=Aligner des lignes
~Modifier la casse
<c-a>Ajouter au numéro
<c-x>Soustraire du numéro
<c-o>Aller au saut précédent
<c-i>Aller au prochain saut
<c-w>hBasculer vers la vue gauche
<c-w><c-h>Basculer vers la vue gauche
<c-w><left>Basculer vers la vue gauche
<c-w>jBasculer vers la vue inférieure
<c-w><c-j>Basculer vers la vue inférieure
<c-w><down>Basculer vers la vue inférieure
<c-w>kBasculer vers la vue supérieure
<c-w><c-k>Basculer vers la vue supérieure
<c-w><up>Basculer vers la vue supérieure
<c-w>lBasculer vers la vue de droite
<c-w><c-l>Basculer vers la vue de droite
<c-w><right>Basculer vers la vue de droite
<c-w>wBasculer vers la vue suivante
<c-w><c-w>Basculer vers la vue suivante
<c-w>sScinder horizontalement
<c-w>SScinder horizontalement
<c-w><c-s>Scinder horizontalement
<c-w>vScinder verticalement
<c-w><c-v>Scinder verticalement
gtBasculer vers l'onglet suivant
gTBasculer vers l'onglet précédent
gqqFormater la ligne
gqFormater les lignes
q. / qDémarrer / terminer l'enregistrement de la macro à l'aide du nom de macro fourni.

Mouvements pris en charge

ToucheDescription
hGauche
<left>Gauche
<backspace>Gauche
jVers le bas
<down>Vers le bas
<enter>Vers le bas pour le premier caractère non vide
kUp
<up>Up
Jusqu'au premier non vide
lDroite
<right>Droite
<space>Droite
$Jusqu'à fin de ligne
<end>Jusqu'à fin de ligne
Vers la colonne 0
<home>Vers la colonne 0
^Vers le premier caractère de ligne
f.Rechercher un caractère
F.Recherchez un caractère en arrière
t.Vers un caractère
T.Un caractère en arrière
;Répétez la dernière commande « t. » ou « f. »
,Répétez la dernière commande « t. » ou « f. »
nRechercher le suivant
NRechercher le précédent
ggJusqu'à la première ligne
GJusqu'à la dernière ligne
wMot suivant
WMOT suivant
bMot précédent
BMOT précédent
eJusqu'à le fin du mot
EJusqu'à le fin du MOT
geJusqu'à la fin du mot précédent
gEJusqu'à la fin du mot précédent
%Jusqu'à l'élément correspondant
`[a-zA-Z><]Vers une marque
'[a-zA-Z><]Pour marquer une ligne
[[Jusqu'au début précédent du bloc d'accolades
]]Jusqu'au début suivant du bloc d'accolades
[]Jusqu'à l'extrémité précédente du bloc d'accolades
][Jusqu'à l'extrémité suivante du bloc d'accolades
*Jusqu'à la prochaine occurrence du mot sous le curseur
#Jusqu'à l'occurrence précédente du mot sous le curseur
HVers la première ligne de fenêtre
MVers la ligne médiane de la fenêtre
LJusqu'à la dernière ligne de fenêtre
gjVers la ligne visuelle suivante
gkVers la ligne visuelle précédente

Objets de texte pris en charge

ToucheDescription
iwMot intérieur
awUn mot
iWMOT intérieur
aWUN MOT
i"Double quote intérieure
a"Une double quote
i'Quote simple intérieure
a'Une quote simple
i`Quote inversée intérieure
a`Une quote inversée
ibParenthèse intérieure
i)Parenthèse intérieure
i(Parenthèse intérieure
abUn parenthèse
a)Un parenthèse
a(Un parenthèse
iBAccolade ouvrante
o}Accolade ouvrante
i{Accolade ouvrante
aBUne accolade
a}Une accolade
a{Une accolade
i<Signe d'inégalité intérieur
i>Signe d'inégalité intérieur
a<Un signe d'inégalité
a>Un signe d'inégalité
i[Parenthèse intérieure
I]Parenthèse intérieure
a[Une parenthèse
a]Une parenthèse
i,Virgule intérieure
a,Une virgule

Commandes prises en charge en mode « Insertion »

ToucheDescription
<c-d>Supprimer l'indentation
<c-t>Indentation
<c-e>Insérer à partir de dessous
<c-y>Insérer à partir de dessus
<c-w>Supprimer un mot
<c-r>.Insérer le contenu du registre
<c-o>Basculer vers le mode normal en une commande
<c-a>Augmenter le nombre sous curseur
<c-x>Diminuer le nombre sous curseur

L'objet de texte Virgule

C'est quelque chose qui m'a manqué dans VIM. L'objet « comma text » facilite la modification des listes de paramètres dans les langages de type C et dans d'autres listes séparées de virgules. Il s'agit essentiellement de la zone entre deux virgules ou entre une virgule et une parenthèse. Dans la ligne indiquée dans l'illustration à droite, les trois plages que cet objet texte peut s'étendre sont mises en évidence en rouge.

virgule jusqu'à

Intervalles d'objets de texte avec virgule. Si le curseur est au dessus, par exemple, prenons, « Argument-2 », en appuyant sur « c i », (« Changer la virgule intérieure ») supprimerait « double Argument-2 » et placerait le curseur entre les deux virgules en mode d'insertion. Un moyen très pratique de modifier les paramètres d'une fonction.

Barre de commandes émulées pour Vim

Kate 4.11 a introduit une option masquée de configuration permettant de lancer une nouvelle recherche / commande avec les caractères « /»  « ? » à la place de la barre standard de ligne de commandes de Kate « Rechercher / Remplacer ». La barre est destinée à reproduire la plupart des fonctionnalités de la barre de commandes de VIM, et également à résoudre de nombreux problèmes avec l'interaction des modes de Kate /Vim avec la barre de recherche / remplacement de Kate (Le remplacement interactif ne fonctionne pas. La recherche incrémentale ne positionne pas correctement le curseur. Elle est non utilisable dans les tables de correspondance / macros, etc.).

Les raccourcis suivants sont fournis par la barre de commandes émulées. Comme avec Vim, ceux-ci peuvent être ré-affectés avec « cmap », « cnoremap », etc. :

ToucheDescription
<c-r>.Insérer les contenus du registre.
<c-r><c-w>Insérez un mot sous le curseur (document).
<c-p>Invoquez le complètement spécifique à un contexte (Voir ci-dessous)
Se déplacer en arrière / vers le haut dans la liste de complètement.
<c-p>Se déplacer en avant / en arrière dans la liste de complètement.
<c-space>Extension de Kate pour Vim.
  mot en complètement automatique à partir du document.
<c-d>Extension de Kate pour VIM.
Dans une expression « sed-replace * (C'est-à-dire « s/trouver/remplacer/[g][c][i]) » *,
effacez le terme « trouver » et y placer le curseur.
<c-f>Extension de Kate pour VIM.
Dans une expression « sed-replace * (C'est-à-dire « s/trouver/remplacer/[g][c][i]) » *,
effacez le terme « remplacer » et y placer le curseur.
<c-g>.Extension pour VIM de Kate.
Comme avec le point, Inséré le contenu du registre nommé,
Mais ajoutez lui un caractère d'échappement, afin que, lorsqu'il est utilisé avec une recherche,
nous recherchions le contenu littéral du registre,
et non le contenu du registre interprété comme une expression « regex ».

Le « complètement pour un contexte spécifique » est décidé comme suit :

  • Dans une barre de recherche (« / » ou « ? »), le complètement automatique à partir de l'historique de recherche (qui comprend les recherches lancées grâce à « * » et « # » ; recherche effectuées dans les expressions avec « sed-replace », etc.)
  • Dans une barre de commande vide (« : »), le complètement automatique à partir de l'historique des commandes (Remarque : le complètement automatique des noms de commande est effectué automatiquement lorsque vous commencez la saisie).
  • Dans une barre de commandes contenant une expression « sed » de remplacement (Par exemple « : s /Chercher / Remplacer / gc »), si le curseur est positionné au dessus de « Chercher », alors, faire un complètement automatique à partir de l'historique de recherche. Si le curseur est au dessus de « Remplacer », alors, faire un complètement automatique à partir de l'historique des termes « Remplacer ».

Lors de l'exécution d'une expression « sed-replace » dans la barre de commandes avec l'option « C » (Par exemple, « s/trouver/remplacer/gc »), une expression de recherche / remplacement interactive de style VIM sera lancée.

Certains exemple d'utilisation de la barre de commandes émulées, avec des animations « GIF », sont fournis dans ce [blog] 3. Dans la version 4.11, la barre de commandes émulées peut être activée en définissant l'option de configuration masquée « Barre de commandes émulées en entrée pour VI » à « True » dans votre fichier de configuration « katerc/kwriterc/kdeveloprc ».

Fonctionnalités manquantes

Comme indiqué précédemment, l'objectif du mode « VI » de Kate n'est pas de prendre en charge 100% des fonctionnalités de VIM. Cependant, certaines fonctionnalités sont cruellement manquantes.

  • Mode « Bloc visuel » - En particulier la possibilité de préfixer / ajouter du texte à la sélection de blocs visuels.
  • Avoir des commandes « EX » disponibles dans d'autres programmes que l'application Kate.
  • Le code de recherche nécessite des améliorations et les commandes avec « * » et « # » doivent simplement être des recherches avec expressions rationnelles.

Si vous trouvez que certaines fonctionnalités sont manquantes ou si vous souhaitez aider celles mentionnées ci-dessus, n'hésitez pas à me contacter ou à m'envoyer des correctifs !  : -)

Modifier le journal

  • ** 16-05-2010 : **
    Version initiale. Collecté les informations à partir des entrées de forums et des fichiers « Readme » pour construire une seule source d'informations courantes.
  • ** 17-05-2010 : **
    Les raccourcis « CTRL » + « A » et « CTRL » + « X » ont été ajoutées (Nombre d'incrément / de décrément sous le curseur).
  • ** 30-08-2010 : **
    Page déplacée vers le site « kate-editor.org ».
  • ** 10609-2010 : **
    Correction du texte sur l'objet texte de virgule et réalisation de quelques correctifs de formatage
  • ** 03-02-2021 : **
    Tables de correspondance de touches converties vers le langage Markdown pour hugo.