Est-il possible de marquer une plage de texte dans Vim et de changer sa couleur de surbrillance (en rouge) plutôt que de sélectionner une autre plage de texte et de changer cette couleur (en vert) sur?Mettez en surbrillance les plages de texte dans Vim
Répondre
je crois que le plug-in Txtfmt est ce que vous cherchez ...
Txtfmt fournit une sorte de capacité "texte riche" pour le texte brut dans vim.La mise en évidence est réalisée via des caractères de marqueur cachés insérés directement dans le tampon, de sorte que la mise en évidence est rendue persistante sans avoir besoin de stocker des métadonnées en dehors du fichier.
Txtfmt est hautement configurable. Les paramètres par défaut prennent en charge 8 couleurs de premier plan (configurables), 8 couleurs d'arrière-plan (configurables) et toutes les combinaisons d'attributs gras, souligné et italique (par exemple, gras, gras-italique, gras-souligné, etc.). Une configuration autre que par défaut prend en charge les attributs supplémentaires suivants: standout, reverse et undercurl.
Il y a un fichier d'aide très complet, et l'auteur est plus qu'heureux de répondre aux questions d'utilisation ...
Je ne suis pas au courant de quelque façon que ce soit de faire quelque chose comme ceci, car cela nécessiterait le stockage de métadonnées non liées au contenu réel du fichier. Même si c'est seulement en mémoire pendant que Vim fonctionne, je ne connais pas de moyen de le faire.
Cela ne veut pas dire qu'il n'y a aucun moyen puisque ma connaissance de Vim est limitée. Mais il semble que quelque chose que Vim ne ferait pas.
D'accord. La surbrillance est appliquée aux groupes de surbrillance, qui sont créés en faisant correspondre le contenu du fichier (par exemple, la coloration syntaxique). Il doit y avoir quelque chose * dans le fichier * pour qu'ils correspondent. Vim est un éditeur de texte, pas un traitement de texte. Cela dit, en fonction de ce que vous voulez exactement, vous pouvez créer une coloration syntaxique personnalisée et un langage de balisage de base, si vous le souhaitez. – Cascabel
Je pensais que c'est un problème si le texte change. Mais je suis intéressé par les cas qui ne fonctionnent que pour les fichiers en lecture seule. Tout d'abord, j'ai besoin de cela pour l'analyse du fichier journal. – Vereb
Il y a une marque appelée plug-in/script:
Mark: un petit script pour mettre en évidence plusieurs mots dans des couleurs différentes en même temps. Par exemple, lorsque vous parcourez un gros fichier programme, vous pouvez mettre en évidence certaines variables clés. Cela facilitera le suivi du code source.
Je crois que le plugin est juste un moyen automatique de créer des groupes de correspondance pour le texte que vous sélectionnez/spécifiez. Peut-être est-ce bien ce que souhaite le PO, mais notez qu'il finira par mettre en évidence toutes les occurrences du texte correspondant, et pas seulement celle du texte que vous avez sélectionné. – Cascabel
Ingo Karkat travaille maintenant sur Mark, puisque l'auteur original l'a abandonné. https://github.com/vim-scripts/Mark--Karkat – Bodhi
Les trucs de base à partir est:
:hi Green guibg=#33ff33
:syntax region Green start=/\%20l/ end=/\%30l/
Ce qu'il fait:
- Définition du groupe highlight 'vert' avec la couleur de fond vert.
- Définir région syntaxe qui doit être mis en évidence avec le groupe highlight « vert » a commencé à partir de la ligne n ° 20 à la ligne n ° 30.
Maintenant, vous pouvez écrire une fonction et/ou commande qui prend visuellement le texte sélectionné et on applique des multiples groupes de couleurs prédéfinis. Une fois que vous avez cette fonction - lier à vos clés: par exemple \g pour le vert, \ r pour le rouge,
Upd:
Et voici un peu de vimscript:
function! HighlightRegion(color)
hi Green guibg=#77ff77
hi Red guibg=#ff7777
let l_start = line("'<")
let l_end = line("'>") + 1
execute 'syntax region '.a:color.' start=/\%'.l_start.'l/ end=/\%'.l_end.'l/'
endfunction
vnoremap <leader>g :<C-U>call HighlightRegion('Green')<CR>
vnoremap <leader>r :<C-U>call HighlightRegion('Red')<CR>
note:
Il ne peut pas réappliquer la surbrillance (vert à rouge par exemple).
C'est ce que je cherchais. Bons conseils. Pouvez-vous ajouter une chose à votre réponse? Comment puis-je également spécifier les numéros de colonne? Comme commencer à partir de la colonne 12 de la ligne 5 etc? –
Si cela ne vous dérange pas, j'ai ajouté quelques détails que je cherchais. –
@SazzadBinKamal faire ': h/\% c' dans vim pour obtenir des informations sur les colonnes dans vim regexps. –
On dirait que le Mark plugin fait ce que vous voulez. Une fois que vous l'avez installé, faites simplement une sélection visuelle et appuyez sur \m.
Que voulez-vous exactement faire? –
Maintenant, j'en ai besoin pour l'analyse des logs: pour marquer les lignes de logs intéressantes. Mais je peux imaginer de nombreux cas d'utilisation. – Vereb