2010-12-04 7 views
7

Je veux le régler de telle sorte que lorsque j'écris un fichier texte et l'enregistre - il est enregistré dans un dossier par défaut appelé TEXT qui sera dans mon dossier Vim principal, par exemple. C: \ Program Files \ Vim \ vim73 \ TEXTvim définir un dossier par défaut pour stocker tous les fichiers txt, comment?

au moment où ils sont enregistrés par défaut dans le dossier vim73 mélangé avec tout le reste. donc si je tape: W^M le fichier y est sauvegardé et je veux qu'il passe dans le dossier nommé TEXT

Répondre

9

Lorsque vous enregistrez un fichier, vim le fera par défaut dans votre répertoire de travail actuel. Vous pouvez utiliser la commande :pwd pour vérifier cela. Pour le changer, vous pouvez utiliser :cd SomeDirectoryPath.

Vous pouvez également ajouter la commande cd à votre fichier .vimrc (ou l'équivalent pour Windows) pour changer automatiquement votre répertoire actuel chaque fois que vous lancez vim.

+0

merci c'est ce que j'ai fait, en l'ajoutant à mon vimrc, fonctionne bien – elwoode

-1

Vous pouvez utiliser des abréviations, si elle est exécutée :w, le texte ci-dessous change automatiquement, je pense que cela pourrait vous aider.

cnorea w w! "C:\Program Files\Vim\vim73\TEXT" 
+1

Quelle mauvaise cartographie! w est une commande de déplacement si utile ... – Benoit

+0

@Benoit, je veux dire la commande: w save, pas la commande movemenet. Vous avez raison, je viens de le réparer. –

+0

toujours, en faisant cela, vous ne pouvez plus utiliser les commandes suivantes:: wn: wall: wq: win: windo: winc: wp. Donc, je suggère d'utiliser des abréviations à la place des mappings, de déclencher l'abréviation dans l'édition de commandes uniquement ('c'), et de ne pas déclencher d'autres abréviations (' nore') avec 'cnoreabbrev w w! "C: ...' – Benoit

3

Une autre approche possible serait d'intercepter le processus d'écriture avec un autocmd pour un événement d'écriture, probablement BufWriteCmd. Avoir la fonction autocmd vérifier pour voir si le fichier a une extension .txt (ou tout ce que vous utilisez) et contourner le processus d'écriture normale pour enregistrer cependant/où vous voulez. Pour docs voir:

:h BufWriteCmd 

Voici quelques code que vous pouvez mettre en vimrc, non testé à fond pour rendre le comportement sûr est exactement ce que vous voulez, mais il fonctionne essentiellement:

function! WriteTextFile() 
    execute 'write! c:\text\'.expand("%:p:t") 
    set nomodified 
endfunction 
au BufWriteCmd *.txt call WriteTextFile() 
+0

J'ai des autocmds similaires en utilisant 'bufwritepost' –

+0

@without: Cela fonctionnerait. La différence est le code que j'ai donné enregistre seulement dans le répertoire désiré. Si cela utilisait BufWritePost alors il enregistrerait les fichiers texte dans le répertoire désiré _en addtion_ au répertoire getcwd. Je pense que c'est aussi le cas si c'était simplement dans BufWrite, mais pas positif. –

0

Comme GWW mentionné, vous pouvez ajouter une commande cd au fichier _vimrc. J'ai trouvé le bon format à utiliser difficile à trouver. Le chemin ne doit pas être entouré de guillemets, les espaces doivent être échappés avec une barre oblique inverse, les barres obliques inverses ne doivent pas être échappées et le chemin doit se terminer par un antislash. Voici un exemple:

cd C:\Documents\ and\ Settings\someUser\ 

J'espère que cela aide.

Questions connexes