Par exemple, j'ai du code et j'utilise "*" pour chercher quelque chose dans ce code. Ne trouvant pas ce que je veux dans ce fichier, je voudrais utiliser quelque chose comme ack
ou grep
pour le chercher dans le répertoire local. Je sais que je peux faire :! ack whatever
pour faire la recherche depuis vim, mais ce que je voudrais savoir, c'est s'il y a un moyen de remplacer whatever
par le mot actuellement recherché dans vim.Comment récupérer le texte actuellement recherché dans vim?
Répondre
Riffing hors de Tim Henigan's answer, mettez dans votre .vimrc
cmap <C-R>/ <C-R>=substitute(substitute(@/, '^\\<', '', ''), '\\>$', '', '')
Maintenant, lorsque vous appuyez sur CTRL-R /
en mode ligne de commande, il baissera le mot marqueurs Boundry, de sorte que vous devriez être en mesure d'utiliser
:!grep CTRL-R / file-list
Vous pouvez tirer sur le mot dans un registre et utiliser le @regnum dans la ligne de mode commande
« 1YW : grep @ 1
La dernière chaîne de recherche est déjà dans le/registre –
Je ne l'ai pas trouvé un moyen de (facilement) passe le contenu d'une recherche inscrivez-vous un programme externe, sans avoir recours à applications clés et statmements eval
Cependant, vous pouvez utiliser <cword>
pour passer le mot actuellement sous le curseur sur un programme externe.
:!echo <cword>
ou
:!ack <cword>
Cela n'a pas fonctionné pour moi en utilisant vim 7.2 sur windows. –
oui, probablement parce que ack et grep ne gèrent pas le '\ <' et le '\>' le même .. –
vous pouvez faire: ':! echo @/'pour voir ce que vous devez travailler. –
Vous pouvez utiliser les touches Ctrl-r suivi de/pour insérer le registre dernière recherche.
:!grep <Ctrl-r>/file_list
Voir cette entrée Vim Tips Wiki pour plus d'informations.
Mise à jour:
La commande de commande de recherche *
inclut toujours les limites de mots. Cependant, la commande de recherche g*
se comporte de la même manière que *
, mais sans les limites de mots.
Cela peut être utilisé pour contourner votre problème plutôt que d'utiliser la macro personnalisée dans rampion's answer.
Cela fonctionne, bien que lorsqu'il est utilisé en conjonction avec '*' il a également le mot frontières. Est-il possible d'obtenir le texte sans eux? –
La recherche '*' configure le motif de recherche pour inclure les limites de mots. Donc vous ne pouvez pas utiliser '*' pour obtenir le modèle sans eux. –
@Paul Wicks: Voir ma mise à jour concernant la commande de recherche 'g *'. –
- 1. Suppression/modification du texte recherché dans Vim
- 2. Script Vim: comment récupérer le décalage horaire?
- 3. Méthode courte pour récupérer NeutralResourcesLanguageAttribute recherché
- 4. Mise à jour Vim fichier actuellement visualisé
- 5. Comment savoir qui ColorScheme une session Vim utilise actuellement
- 6. Comment récupérer le nom de rôle de l'utilisateur actuellement connecté dans la zone de texte à l'aide de vb.net?
- 7. Comment utiliser le texte correspondant dans le texte de remplacement dans vim
- 8. texte Changement appearence dans vim
- 9. GXT HtmlEditor - Comment récupérer le texte?
- 10. Le fichier 'LibrarySystem.ctrlSeparator' recherché dans C# .Net
- 11. Comment remplacer le texte actuellement sélectionné dans une zone de texte html?
- 12. Vim afficher le texte wchar correctement
- 13. Récupérer la liste des threads gérés actuellement actifs dans .NET?
- 14. Remplacer le texte de la ligne ci-dessus dans Vim
- 15. Suppression des « blocs » de texte dans vim
- 16. iphone récupérer le texte du bouton
- 17. Vim: Comment exécuter le texte sélectionné en tant que commandes vim?
- 18. Utiliser MAJ + Flèches pour sélectionner le texte dans vim/MacVim
- 19. php xpath traitant de l'apostrophe/guillemet simple dans le texte recherché
- 20. Récupérer le texte alt pour un contrôle dans le javascript?
- 21. vim, texte reformater à initializers
- 22. dans vim, comment ajouter/insérer du texte avec argdo?
- 23. récupérer le texte dans une cellule spécifique dans un QTableWidget?
- 24. Comment obtenir la taille de police du texte actuellement sélectionné dans le contrôle WebBrowser
- 25. Exact Timer recherché!
- 26. Déterminer le niveau de l'élément recherché
- 27. Comment récupérer le texte entre deux balises html avec C#?
- 28. Comment récupérer le texte du presse-papiers en fiducie partielle
- 29. Récupérer le texte entre les balises A
- 30. getwindowtext ne pas récupérer le texte
Génial, c'est exactement ce que je cherchais.J'ai modifié un peu le mappage pour éviter d'avoir à appuyer deux fois sur la touche Entrée: 'cmap/ = substitut (substitue (@ /, '^ \\', '', ''), '\\ > $ ',' ',' ') ' –
Une autre option consiste à utiliser la commande de recherche' g * 'plutôt que' * '. Voir ma réponse mise à jour pour plus de détails: http://stackoverflow.com/questions/2739135/how-to-retrieve-the-currently-searched-for-text-in-vim/2739223#2739223 –
'ctrl-r' suivi de '/' insère le texte du registre de recherche, mais si vous deviez faire 'ctrl-r' suivi de n'importe quelle lettre sur le clavier, cela insèrerait le contenu du registre correspondant. Outre les lettres, il existe d'autres registres spéciaux, tels que '.' (le dernier texte entré),'% '(le nom de fichier actuel), etc. En remappant' ctrl-r', vous verrouillez tous les raccourcis utiles possibles être construit à partir de ces différents registres. – nelstrom