J'ai vu un ninja vim qualifié le faire il y a quelque temps, mais je ne savais pas du tout commencer.
A) Existe-t-il un moyen de configurer la couleur d'arrière-plan de vims afin que les lignes consécutives avec un contenu identique soient mises en évidence.
B) Si quelqu'un sait comment faire cela, un bon réglage serait que la mise en évidence se produise sur des lignes consécutives mais ne considère que le premier mot (pas la ligne entière).
Un deuxième ajustement si la surbrillance peut être configurée en différentes couleurs est utilisé en fonction du nombre de lignes correspondantes (ou des mots en fonction de AB est actif). Donc, nous n'avons que deux lignes consécutives qui correspondent ensuite au vert, 3 à 5 lignes consécutives puis à l'orange, 6+ puis au rouge.
la source
Réponses:
Les
match
ensembles suivants semblent fonctionner pour (A):Il semble que l'ordre soit crucial ici. Si les correspondances
Low
ouMedium
viennent aprèsCritical
, elles sont subsumées par les exigences plus lâches de celles-ci, et de même pourLow
wrtMedium
.La surbrillance n'apparaît pas immédiatement après avoir ajouté, disons, une 3e ou 6e ligne de dupe, mais une fois que vous vous déplacez un peu après les avoir ajoutées. Je ne sais pas exactement ce qui le déclenche.
Pour B, j'imagine que vous pourriez remplacer l'expression régulière par:
En général, remplacez tous les mots
(.*)
par(\S+).*
et\1
par\1.*
, ou tout ce qui constitue un mot pour vous.la source
Comme point de départ, voici un modèle de recherche qui correspond aux lignes en double (en ignorant les changements dans les espaces blancs de tête):
:help pattern
fournira plus d'informations sur la façon de faire des expressions rationnelles comme celle-ci:help syntax
vous montrera comment prendre cette expression régulière et la transformer en quelque chose qui est mis en évidence pour vousApprendre à écrire des scripts de syntaxe peut être difficile, donc une bonne solution à court terme est de le faire `` à la volée '' en veillant à
'incsearch'
ce que les recherches soient mises en évidence et en mappant une clé pour effectuer la recherche ci-dessus, c'est-à-dirennoremap <F5> /^\s*\(.\+\)\n\zs\(\s*\1\n\)\+<CR>
la source
yy10p
sur la ligne avec l'expression régulière complète, puis de sélectionner les parties que vous souhaitez supprimer et frapperr<space>
. Je vais peut-être ajouter une commande pour «remplacer tout sauf la sélection sur cette ligne avec des espaces» pour accélérer un peu les choses.,r
puis joignez les lignes<space>
en mode normal / visuel.