Mode « VI »
Introduction
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.
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
- L'éditeur de texte Kate
- KWrite - Éditeur simple de texte de KDE
- KDevelop - un environnement de développement intégré (IDE) avancé pour de nombreux langages de programmation
- 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.
- ** 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. - **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. - **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. - **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
Touche | Description |
---|---|
a | Entrez en mode d'insertion et ajoutez |
A | Entrez en mode d'insertion et ajoutez à la fin de ligne |
i | Basculer en mode d'insertion |
I | Insérez avant le premier caractère non vide de la ligne |
v | Basculer en mode visuel |
V | Passez en mode « Ligne visuelle » |
<c-v> | Passez en mode « Bloc visuel » |
gv | Re-sélectionnez le visuel |
o | Ouvrir une nouvelle ligne sous |
O | Ouvrez une nouvelle ligne au dessus |
J | Rejoignez-nous |
c | Modifier |
C | Modifier jusqu'à la fin de ligne |
cc | Modifier une ligne |
s | Substituer un caractère |
S | Substituer une ligne |
dd | Supprimer une ligne |
d | Supprimer |
D | Supprimer jusqu'à la fin de ligne |
x | Supprimer un caractère |
X | Supprimer un caractère en arrière |
gu | Basculer en minuscules |
guu | Basculer la ligne en minuscule |
gU | Basculer en majuscules |
gUU | Basculer la ligne en majuscule |
y | Enlever |
yy | Ligne directrice |
Y | Enlever jusqu'à la fin de ligne |
p | Coller |
P | Coller avant |
r. | Remplacer un caractère |
R | Basculer en mode de remplacement |
: | Basculer en ligne de commandes |
/ | Rechercher |
u | Annuler |
<c-r> | Refaire |
U | Refaire |
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 |
zz | Centrer la vue sur le curseur |
ga | Imprimer 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>h | Basculer vers la vue gauche |
<c-w><c-h> | Basculer vers la vue gauche |
<c-w><left> | Basculer vers la vue gauche |
<c-w>j | Basculer 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>k | Basculer 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>l | Basculer 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>w | Basculer vers la vue suivante |
<c-w><c-w> | Basculer vers la vue suivante |
<c-w>s | Scinder horizontalement |
<c-w>S | Scinder horizontalement |
<c-w><c-s> | Scinder horizontalement |
<c-w>v | Scinder verticalement |
<c-w><c-v> | Scinder verticalement |
gt | Basculer vers l'onglet suivant |
gT | Basculer vers l'onglet précédent |
gqq | Formater la ligne |
gq | Formater les lignes |
q. / q | Démarrer / terminer l'enregistrement de la macro à l'aide du nom de macro fourni. |
Mouvements pris en charge
Touche | Description |
---|---|
h | Gauche |
<left> | Gauche |
<backspace> | Gauche |
j | Vers le bas |
<down> | Vers le bas |
<enter> | Vers le bas pour le premier caractère non vide |
k | Vers le haut |
<up> | Vers le haut |
– | Jusqu'au premier non vide |
l | Droite |
<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. » |
n | Rechercher le suivant |
N | Rechercher le précédent |
gg | Jusqu'à la première ligne |
G | Jusqu'à la dernière ligne |
w | Mot suivant |
W | MOT suivant |
b | Mot précédent |
B | MOT précédent |
e | Jusqu'à le fin du mot |
E | Jusqu'à le fin du MOT |
ge | Jusqu'à la fin du mot précédent |
gE | Jusqu'à 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 |
H | Vers la première ligne de fenêtre |
M | Vers la ligne médiane de la fenêtre |
L | Jusqu'à la dernière ligne de fenêtre |
gj | Vers la ligne visuelle suivante |
gk | Vers la ligne visuelle précédente |
Objets de texte pris en charge
Touche | Description |
---|---|
iw | Mot intérieur |
aw | Un mot |
iW | MOT intérieur |
aW | UN MOT |
i" | Double guillemet intérieur |
a" | Un guillemet double |
i' | Quote simple intérieure |
a' | Un guillemet simple |
i` | Quote inversée intérieure |
a` | Un guillemet inversé |
ib | Parenthèse intérieure |
i) | Parenthèse intérieure |
i( | Parenthèse intérieure |
ab | Une parenthèse |
a) | Une parenthèse |
a( | Une parenthèse |
iB | Accolade ouvrante |
o} | Accolade ouvrante |
i{ | Accolade ouvrante |
aB | Une 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 »
Touche | Description |
---|---|
<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.
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. :
Touche | Description |
---|---|
<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.