Content-type: text/html
mcedit est un lien vers mc, Midnight Commander, le forçant à lancer immédiatement son éditeur interne. L'éditeur est une version pour terminaux de l'éditeur X Window autonome cooledit.
Pour définir une macro, appuyez sur Ctrl-R et tapez ensuite les combinaisons de touches que vous voulez exécuter. Appuyez à nouveau sur Ctrl-R quand vous avez fini. Vous pouvez ensuite affecter la macro à n'importe quelle touche en appuyant sur cette touche. La macro est exécutée quand vous appuyez sur Ctrl-A et ensuite sur la touche affectée. La macro est également exécutée si vous appuyez sur Meta, Ctrl ou Esc et la touche spécifiée, à condition que la touche ne soit pas utilisée pour une autre fonction. Une fois définies, les commandes de la macro prennent place dans le fichier ~/.mc/cedit/cooledit.macros. N'éditez PAS ce fichier si vous avez l'intention de réutiliser des macros dans la même session d'édition, car mcedit place en mémoire cache les définitions des touches de macros. mcedit écrase désormais une macro si une macro utilisant la même touche existe déjà, de sorte que vous n'avez pas besoin d'éditer ce fichier. Vous devrez également relancer tous les autres éditeurs en cours d'exécution pour que ces macros prennent effet.
F19 formatera du code C quand il est mis en évidence. Un fichier exécutable nommé ~/.mc/cedit/edit.indent.rc sera créé pour vous à partir du modèle par défaut. N'hésitez pas à l'éditer si nécessaire.
C-p exécutera ispell sur un bloc de texte d'une façon similaire. Le fichier script sera appelé ~/.mc/cedit/edit.spell.rc.
Le fichier ~/.mc/cedit/Syntax est réexaminé lors de l'ouverture de n'importe quel fichier par l'éditeur. Le fichier contient des règles pour la mise en évidence, placées sur des lignes séparées, qui définissent quels mots-clés seront mis en évidence et dans quelle couleur. Le fichier est également divisé en sections, chacune commençant par une ligne comprenant la commande file, suivie d'une expression rationnelle. L'expression rationnelle précise le nom de fichier auquel s'applique ce jeu de règles. Après cela, on trouve une description à afficher à gauche de la fenêtre d'éditeur expliquant le type de fichier à l'utilisateur. Un troisième argument optionnel est une expression rationnelle à comparer avec la première ligne de texte du fichier. Si le nom du fichier ou la première ligne de texte correspond, alors ces règles seront chargées.
La fin d'une section coïncide avec le début d'une nouvelle section. Chaque section est divisée en contextes, et chaque contexte contient des règles. Un contexte est une portée à l'intérieur du texte à laquelle appartient un ensemble de règles. Par exemple, la région située à l'intérieur d'un commentaire de type C (c.-à-d. entre /* et */) possède sa propre couleur. C'est un contexte, bien qu'il ne renfermera pas d'autres règles car il n'y a probablement rien que l'on veuille voir mis en évidence à l'intérieur d'un commentaire C.
Une section de programmation C triviale pourrait ressembler à ceci :
file .\*\\.c C\sProgram\sFile (#include|/\\\*) wholechars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_ # couleurs par défaut context default keyword whole if 24 keyword whole else 24 keyword whole for 24 keyword whole while 24 keyword whole do 24 keyword whole switch 24 keyword whole case 24 keyword whole static 24 keyword whole extern 24 keyword { 14 keyword } 14 keyword '*' 6 # commentaires C context /\* \*/ 22 # directives de préprocesseur C context linestart # \n 18 keyword \\\n 24 # constantes chaîne de caractères C context " " 6 keyword %d 24 keyword %s 24 keyword %c 24 keyword \\" 24
Chaque contexte débute par une ligne de la forme :
context [exclusive] [whole|wholeright|wholeleft]
[linestart] délim [linestart] délim
[avant-plan] [arrière-plan]
Le premier contexte fait exception. Il doit débuter par la commande
context default [avant-plan] [arrière-plan]
ou sinon cooledit renverra une erreur.
L'option linestart dicte que le délimiteur délim doit démarrer au début d'une ligne.
L'option whole spécifie que délim (le délimiteur) doit être un mot complet. Un mot complet est un groupe de caractères qui peut être modifié n'importe où dans le fichier avec la commande wholechars. La commande wholechars au-dessus définit simplement l'ensemble exactement à sa valeur par défaut et aurait par conséquent pu être omise. Pour spécifier qu'un mot ne doit être complet que sur la gauche, vous pouvez utiliser l'option wholeleft, et d'une façon similaire sur la droite. Les groupes de caractères de gauche et de droite peuvent être réglés séparément avec
wholechars [left|right] caractères
L'option exclusive provoque la mise en évidence du texte situé entre les délimiteurs, mais pas les délimiteurs eux-mêmes.
Chaque règle est une ligne de la forme :
keyword [whole|wholeright|wholeleft] [linestart]
chaîne avant-plan [arrière-plan]
Les chaînes de contexte ou de mots-clés sont interprétés en sorte que vous puissiez inclure des tabulations et des espaces avec les séquences \t et \s. Les sauts de ligne et le \ sont spécifiés avec \n et \\ respectivement. Étant donné que les caractères d'espacement sont utilisés comme séparateurs, ils ne peut être utilisés tels quels. De plus, \* doit être utilisé pour spécifier un *. Le * lui-même est un joker qui correspond à n'importe quelle longueur de caractères. Par exemple,
keyword '*' 6
colore tous les constantes caractères C en vert. Vous auriez également pu utiliser
keyword "*" 6
pour colorer les constantes chaînes de caractères, sauf que la chaîne reconnue ne peut s'étendre au-delà des sauts de ligne. Le joker peut également être utilisé à l'intérieur de délimiteurs de contexte, mais vous ne pouvez pas utiliser un joker comme dernier ou premier caractère.
Il est important de remarquer la ligne
keyword \\\n 24
Elle définit un mot-clé contenant les caractères \ et saut de ligne. Puisque les mots-clés ont une plus haute priorité que les délimiteurs de contexte, ce mot-clé empêche que le contexte se termine à la fin d'une ligne si elle se termine par un \ permettant ainsi à une directive de préprocesseur C de continuer sur plusieurs lignes.
Les couleurs sont elles-mêmes numérotées de 0 à 26 et sont expliquées plus bas dans OPTIONS COMPORTEMENTALES SUPPLÉMENTAIRES. Vous pouvez également utiliser n'importe quelle couleur dont le nom est spécifié dans /usr/lib/X11/rgb.txt (en fait, uniquement celles dont le nom n'est composé que d'un seul mot). Il vaut mieux n'utiliser que les couleurs numériques pour limiter l'utilisation de la palette de couleurs.
Les commentaires peuvent être inclus sur une ligne séparée et commencent par un « # ».
À cause de la simplicité de l'implémentation, il y a quelques cas de figure complexes qui ne seront pas traités correctement mais cela ne provoque qu'un agacement mineur. Dans l'ensemble, un large spectre de situations assez compliquées est pris en compte avec ces règles simples. C'est une bonne idée de jeter un coup d'½il au fichier de syntaxe pour voir quelques uns des trucs que vous pouvez utiliser avec un peu d'imagination. Si vous ne supportez pas les règles que j'ai codées, et que vous pensez disposer d'une règle qui pourrait être utile, envoyez-moi un email avec votre requête. Néanmoins, ne demandez pas de support pour les expressions rationnelles, car cela est tout bonnement impossible.
Un conseil utile est de travailler le plus possible avec les choses que vous pouvez faire plutôt que d'essayer des choses que cette implémentation ne peut traiter. Souvenez-vous également que le but de la mise en évidence de la syntaxe est de rendre la programmation moins sujette aux erreurs, et pas d'embellir le code.
MC_COLOR_TABLE="$MC_COLOR_TABLE:\ editnormal=lightgray,black:\ editbold=yellow,black:\ editmarked=black,cyan"
(La recherche et le remplacement avec scanf ne fonctionnaient pas correctement auparavant. Avec cette version, les problèmes liés à la recherche et au remplacement ont été résolus.)
Vous pouvez utiliser la recherche et remplacement de scanf pour chercher et remplacer une chaîne de format C. Jetez d'abord un coup d'½il aux pages de manuel de sscanf et sprintf pour voir ce qu'est une chaîne de caractères de format, et savoir comment elle fonctionne. Voici un exemple : supposez que vous voulez remplacer toutes les occurrences de, disons, un crochet ouvrant, trois nombres séparés par des virgules, et un crochet fermant, par le mot pommes, le troisième nombre, le mot oranges et ensuite le deuxième nombre, il faudrait alors remplir la boîte de dialogue Remplacement comme suit :
Entrez la chaîne à rechercher (%d,%d,%d) Entrez la chaîne de remplacement pommes %d oranges %d Entrez l'ordre des arguments 3,2
La dernière ligne spécifie que le troisième et ensuite le deuxième nombre seront utilisés au lieu du premier et du deuxième.
Il est conseillé d'utiliser cette fonctionnalité avec « Confirmation avant remplacement » activé, car on suppose avoir détecté une correspondance à chaque fois que le nombre d'arguments trouvés correspond au nombre donné, ce qui ne représente pas toujours une correspondance réelle. Scanf traite également les caractères d'espacement comme s'ils étaient élastiques. Notez que le format %[ de scanf est très utile pour l'analyse de chaînes de caractères et de caractères d'espacement.
L'éditeur affiche également les caractères non-us (160 et +). Quand vous éditez des fichiers binaires, vous devriez régler Affichage des bits (NdT : ou Bits d'affichage) à 7 bits dans le menu d'options pour conserver un espacement correct.
/usr/lib/mc/mc.ini
/usr/lib/mc/mc.lib
$HOME/.mc/ini
$HOME/.mc/cedit/