Je voudrais Ceci est très similaire à ce Question Mais au lieu de capturer la sortie STDIN, je voudrais que GVIM traite la sortie en tant que liste de fichiers à ouvrir - et sur un système Windows de sorte que Xargs ne soit pas garanti. Des idées? P> fondstr / m fond * .vim | gvim code> Pour ouvrir tous les fichiers
*. Vim code> contenant code> dans une seule instance de GVIM - mais je ne peux pas faire fonctionner la tuyauterie. p>
4 Réponses :
ouvrir PowerShell:
Merci, mais PowerShell est pas une option. Je besoin d'une solution avec dos de barebones.
in Bash:
grep -l background *.vim | sed 's/^/:edit /' > files vim -s files
Encore une fois merci, mais je suis à la recherche de solutions spécifiques dos; grep et xargs ne sont pas disponibles pour moi et les télécharger ne sont pas une option.
Je ne l'ai pas remarqué tag dos. Désolé.
Une autre idée avec Vim -S. Il a besoin d'un fichier temporaire cependant. Et aussi sed ou une magie ED (ED fait partie de VI, de sorte que vous l'avez sûrement).
Faire cela avec Vim pourrait gâcher votre terminal. Je suggérerais gvim $ (arrière-plan grep -l * .vim)
Je peux penser à quelques façons de faire ceci:
Utiliser Vimgrep: Après avoir exécuté GVIM, entrez: P>
@echo off REM Welcome to the hideous world of Windows batch scripts findstr /m background *.vim > list_of_files.txt REM Run GVIM (may not be required) gvim REM Still in command prompt or .bat file here REM for each line in the file "list_of_files.txt", pass the line to OpenInTab for /f %%i in (list_of_files.txt) do call:OpenInTab %%i goto:eof :OpenInTab REM Open the file in a separate tab of an existing vim instance gvim --remote-tab %~1 goto:eof
Jusqu'à présent, j'aime utiliser l'option Cleverness intégrée de Vim ... mais la sortie de FindStr est dans des chemins relatifs et VIM a besoin du chemin absolu d'ouvrir le fichier - Comment puis-je prépare la sortie de la répertoire actuelle?
Que diriez-vous: (. *)% S / \ v / ESCAPED_DIR $ \ 1 / g, où ESCAPED_DIR $ serait le chemin vers le répertoire approprié (y compris un séparateur de chemin final) avec des séparateurs de chemin échappé à barres obliques inversées (par exemple C: \\ chemin \\ à \\ pwd \)? (Les tours \ v sur le comportement super-magique des caractères spéciaux) regex.
VIM ne devrait pas avoir besoin du chemin absolu aussi longtemps que le chemin est relatif au répertoire que vous pouvez. Par conséquent, vous pouvez faire : cd common_path code> avant d'exécuter le
: g code> commander. Si vous souhaitez modifier les chemins, effectuez simplement
:% s @ ^ @ c: / chemin / vers / dossier / @ code> (VIM peut faire face à des barres obliques vers l'avant et cela permet d'éviter d'échapper au chemin).
Notez également que si list_of_files.txt est dans l'emplacement "CORE COMMUN", vous pouvez faire : cd%: p: h code> pour passer à la voie commune.
Merci pour l'aide à ce sujet. À partir du script de lot, je peux également émettre cette commande Vim -c "LCD% CD%" code> et qui semble fonctionner juste trouver. Mon problème est maintenant avec le
: g / ^ / exe 'Tabedit' getline ('.') Code> commande. Il semble seulement fonctionner avec le plus haut fichier. Des idées?
Il semble que le premier Tabedit code> arrête la commande
: g code> de l'exécution. J'ai modifié la description ci-dessus pour ajouter quelques alternatives (testées).
N'importe lequel d'entre eux ouvrira une instance distincte de gvim code> avec chaque nom de fichier - particulièrement utile s'il n'y a qu'un seul nom de fichier, mais fonctionne pour plusieurs noms de fichiers à condition que vous soyez ok avec plusieurs instances de GVIM:
findstr /m background *.vim | gvim_stdin
Il y a aussi cette question stackoverflow.com/questions/437262/... , mais la solution retenue ne fonctionne pas pour moi.