Je voudrais la liste des matchs, quand je frappe:Comment pouvez-vous lister les résultats de la recherche de Vim?
/example
pour que je vois où tous les matches sont à la fois.
Je voudrais la liste des matchs, quand je frappe:Comment pouvez-vous lister les résultats de la recherche de Vim?
/example
pour que je vois où tous les matches sont à la fois.
" put in your ~/.vimrc file
" START search related configs and helps
"
" ignore case when searching
set ignorecase
" search as characters are entered, as you type in more characters, the search is refined
set incsearch
" highlight matches, in normal mode try typing * or even g* when cursor on string
set hlsearch
" yank those cheat commands, in normal mode type q: than p to paste in the opened cmdline
" how-to search for a string recursively
" :grep! "\<doLogErrorMsg\>" . -r
"
" how-to search recursively , omit log and git files
" :vimgrep /srch/ `find . -type f \| grep -v .git \| grep -v .log`
" :vimgrep /srch/ `find . -type f -name '*.pm' -o -name '*.pl'`
"
" how-to search for the "srch" from the current dir recursively in the shell
" vim -c ':vimgrep /srch/ `find . -type f \| grep -v .git \| grep -v .log`'
"
" how-to highlight the after the search the searchable string
" in normmal mode press g* when the cursor is on a matched string
" how-to jump between the search matches - open the quick fix window by
" :copen 22
" how-to to close the quick fix window
" :ccl
" F5 will find the next occurrence after vimgrep
map <F5> :cp!<CR>
" F6 will find the previous occurrence after vimgrep
map <F6> :cn!<CR>
" F8 search for word under the cursor recursively , :copen , to close -> :ccl
nnoremap <F8> :grep! "\<<cword>\>" . -r<CR>:copen 33<CR>
" omit a dir from all searches to perform globally
set wildignore+=**/node_modules/**
" use perl regexes - src: http://andrewradev.com/2011/05/08/vim-regexes/
noremap//\v
"
" STOP search related configs and helps
L'utilisation :set hlsearch
mettra en évidence tous les matches en jaune vous permettant de numériser le fichier facilement des correspondances. Cela peut ne pas être ce que vous voulez bien, après la recherche,: g // p vous donnera la la liste correspond
devrait être ': set hlsearch' non ': hlsearch'. –
Il est également utile de mapper ': nohl' pour effacer les hautes lumières lorsque vous n'en avez plus besoin. – Kos
:g//p
Dans sa forme plus:
:global/regular-expression/print
Vous pouvez laisser le motif/regex et Vim réutilisera le terme de recherche précédent.
Anecdote: L'outil grep a été nommé d'après cette séquence de commandes.
Pour développer ce ... au lieu de
/example
:g//p
vous pouvez également écrire directement
:g/example/p
ou, comme p (Rint) est l'action par défaut pour la: g (MONDIALES) commande, cela peut être raccourci à
:g/example
Et au lieu de p (Rint), d'autres actions sont possibles, par exemple effacer). Voir: help: global
Vous pouvez également faire:
g/pattern/#
qui imprime le motif que vous voulez et le numéro de la ligne.
+1 pour les numéros de ligne. – iamnotmaynard
Nice.Mais si vous avez déjà activé les numéros de ligne, alors # n'est pas nécessaire. Il montre les numéros de ligne par défaut –
si vous voulez regarder cette liste et sauter rapidement entre les matchs, pensez à utiliser
:vimgrep example %
ou
:grep example %
Cette renseignera la « liste d'erreurs » avec tous des matchs afin que vous puissiez utiliser :copen
de les énumérer tous dans la mémoire tampon quickfix, appuyez sur Entrée sur une ligne particulière pour accéder à cette correspondance, ou utiliser des commandes comme :cn
et :cp
pour aller et venir.
pour une explication détaillée, voir my reply to a similar question
+1 pour la capacité de naviguer dans les résultats de recherche! –
Une autre possibilité est d'utiliser les commandes include de recherche de fichiers.
[I
Ceci affichera toutes les occurrences du mot sous le curseur. Il se peut que ce soit plus que ce dont vous avez besoin, car il recherchera également tous les fichiers inclus dans le fichier actuel.Mais la bonne chose à propos de cette commande est que l'affichage des résultats de recherche montre également le nombre de correspondances, en plus du nombre de lignes de chaque correspondance.
:help include-search
pour voir beaucoup de variantes.
Une note sur
:g//p
Cela peut être réduit davantage à
:g//
parce que, comme d'autres l'ont dit, p (Rint) est l'action par défaut.
Est-il possible d'obtenir le résultat de '[I' avec le contexte, comme sur grep' --contexte 9'? –
J'ai juste appris un nouveau: le Location List
!
Tapez :lvim foo %
pour rechercher foo
dans le fichier actuel et entrez tous les résultats contenant foo
dans la liste de lieux .
Tapez :lopen
pour ouvrir la liste des emplacements dans la fenêtre de raccourci, qui est entièrement navigable comme d'habitude.
Utilisez :lnext
/:lprevious
à à la liste (utilisation tpope/dépréciés applications pour la meilleure expérience)
est-il un paramètre pour avoir: lopen fait par défaut? – lkraav
Bon conseil! Cela m'a amené à faire ce mapping qui augmente automatiquement le mot sous le curseur et ne Lopen un seul coup: nnoremap
g/pattern
Si vous avez :set number
, les numéros de ligne de commande affiche ci-dessus ainsi.
Si vous n'avez pas :set number
, puis
g/pattern/#
affiche les numéros de ligne.
vous pouvez obtenir une fenêtre quickfix
agréable avec les résultats sous forme de votre modèle de recherche en cours
:vim // %
:copen
super pratique si vous Crafted déjà un modèle de recherche complexe en utilisant seulement /pattern
Modifier: ont simplement trouvé cela fonctionne également pour tous les tampons ouverts
:bufdo vimgrepadd // %
:copen
Ctrl-f pour lister tous les résultats de la recherche:
nmap <C-f> :vimgrep /<C-r>//g %<CR> \| !:copen <Enter>
J'aime beaucoup votre F5- F8 idées. Ce serait bien d'avoir quelques visualisations/sorties de ces commandes ici. Comment F8 est conçu pour fonctionner? Il recherche seulement le répertoire courant? - - L'omission d'un répertoire est une coutume - - pourquoi 'node_modules'? - - Comment regexes perl changent le fonctionnement par défaut de Vim? - - Voici comment j'ai conçu ma recherche de fichiers .tex https://askubuntu.com/a/789769/25388 Ce serait bien d'apprendre de vous comment l'améliorer. Ce n'est pas si intuitif que j'ai oublié moi-même souvent la logique. –
node_modules est le répertoire contenant beaucoup de code js des modules npm si vous développez des frontaux ... c'est juste un exemple ... –
faites une sauvegarde de votre .vimrc et ajoutez ces paramètres, chargez-les avec: donc% et que d'essayer de lancer les "help" dans les commandes ... vim est dur - vous devrez répéter ces milliers de fois, mais une fois que vous les maîtrisez, vous allez rire @everyone qui pointe leurs nouvelles fonctionnalités UI IDE. .. –