2012-06-04 3 views
11

Je voudrais rechercher tous les mots majuscules dans un dossier mais je n'ai aucune idée comment le faire (ou si c'est possible). J'ai trouvé ceci solution ici sur stackoverflow, mais cela ne fonctionne pas sur vim.Comment rechercher tous les mots en majuscules dans vim?

+2

Que voulez-vous faire avec les résultats? Selon vos mots, il pourrait être très simple regex, comme [A-Z] [a-z] + – hovanessyan

Répondre

22

À partir du mode de commande, en supposant que vous n'avez pas l'option ignorecase jeu:

/\<[A-Z]\+\> 

ou

/\v<[A-Z]+> 

Trouve une chaîne de lettres majuscules supérieures à longueur entourée par des limites de mots. La deuxième forme utilise «très magique». :help magic pour plus de détails

+0

+ 1 pour être une seconde plus rapide que moi – eckes

+0

Est-ce que je fais quelque chose de mal ou vos expressions ne sont pas correctes? Je reçois tous les mots mis en évidence, minuscules et majuscules aussi ... J'utilise gvim – sica07

+3

': set noignorecase' –

20

La réponse la plus courte: /\<\u\+\>

+0

Que signifie" u "? – sica07

+6

+1, mais '/ \ v <\u+>' est plus court! –

+3

@ sica07 "\ u" signifie une lettre majuscule comme [A-Z]. – agudulin

1

Si vous voulez une liste de tous les mots en majuscules correspondant (vous n'êtes pas intéressé à sauter d'un mot à l'autre), vous pouvez utiliser:

echo filter(split(join(getline(1, '$'), ' '), '\v(\s|[[:punct:]])'), 'v:val =~ "\\v<\\u+>"') 

Avec:

  • getline(1, '$') qui renvoie une liste de toutes les lignes de la mémoire tampon courant
  • join(lines, ' ') qui aplatit cette liste de lignes
  • split(all_text, separators_regex) qui construisent une liste d'éléments de mot comme
  • et enfin filter(words, uppercase-condition) qui sélectionne uniquement les mots en majuscules.
+0

merci pour la réponse, mais je veux juste passer de l'un à l'autre – sica07

Questions connexes