Portál AbcLinuxu, 12. května 2024 11:41


Dotaz: Vim: backup souboru s plnou cestou

14.3.2007 21:17 pasmen | skóre: 45 | blog: glob | Praha
Vim: backup souboru s plnou cestou
Přečteno: 142×
Odpovědět | Admin
Ahoj,

chtel bych, aby se mi soubory editovane pomoci Vimu zalohovaly. Volby set backup a set backupdir=adresar znam, ale chtel bych, aby se soubory zalohovaly pod zadany adresar s plnou cestou. Takze pokud budu editovat napr. /etc/hosts, zazalohuje se jako (napr.) ~/.backup/etc/hosts~. Jde to nejak udelat? Hledal jsem cely den ale nic... Dik
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

14.3.2007 21:35 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše Re: Vim: backup souboru s plnou cestou
Odpovědět | | Sbalit | Link | Blokovat | Admin
Napsat si skript, který
  1. upraví ~/.vimrc
  2. spustí (g)vim
Užívej dne – možná je tvůj poslední.
14.3.2007 22:43 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: Vim: backup souboru s plnou cestou
Pravda, to je cesta, ani me to nenapadlo. Mozna dokonce existuje nejaka promenna prostredi, ktera ten adresar urcuje, bylo by to jeste drobet cistsi. Ale mel jsem na mysli primo vim-way :-) Ale asi to bez prepsani fakt nepujde (mam ten dojem ze adresar musi byt predem vytvoreny, jeste se podivam). I tak dik.
15.3.2007 09:46 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: Vim: backup souboru s plnou cestou
Tak jsem to po dnu cteni vyresil :-) Napsal jsem si nasledujici skript:
fu! SetBackupDir()
    let s:dirname = "~/.backup" . expand("%:p:h")
    execute "silent !mkdir -p " . s:dirname
    execute "set backupdir=" . s:dirname
endf

autocmd BufWritePre *  call SetBackupDir()
Zda se mi to docela elegantni, jeste bych misto volani systemoveho mkdir radsi pouzil built-in funkci, ale jaksi se u me nejmenuje mkdir ale nejak jinak. Nevi nekdo jak napr. vypsat vsechny funkce typu *mkdir?
15.3.2007 11:22 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše Re: Vim: backup souboru s plnou cestou
call mkdir("dir_name", "p") nefunguje?
Užívej dne – možná je tvůj poslední.
15.3.2007 11:44 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: Vim: backup souboru s plnou cestou
Jak se to vezme: funguje, ale i pri pouziti "p" to zarve, pokud uz adresar existuje. Pokud ne tak ho vytvori a vse je OK. Kdyz ale ulozim znovu, zarve, ze adresar nemohl byt vytvoren.
15.3.2007 13:39 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše Re: Vim: backup souboru s plnou cestou
Možná by to šlo vyřešit pomocí
if !isdirectory("dir_name")
  call mkdir("dir_name", "p")
endif
Užívej dne – možná je tvůj poslední.
15.3.2007 13:59 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: Vim: backup souboru s plnou cestou
Jo to funguje, dekuju. Koukam ze se budu muset skriptovani ve vimu poradne naucit, kousky co to umi praci ulehci tisickrat.
15.3.2007 14:17 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše Re: Vim: backup souboru s plnou cestou
Až ti to bude chodit, mohl bys to tu zveřejnit? Někomu by se to ještě mohlo hodit.
Užívej dne – možná je tvůj poslední.
15.3.2007 14:43 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: Vim: backup souboru s plnou cestou
Jasna vec, skript (mam ho nazvany setbackup.vim) je v ~/.vim/plugin a ma tenhle obsah:
fu! SetBackupDir()
        " zalohuj soubory s celou cestou pod ~/.backup
        let s:dirname = expand("~/.backup") . expand("%:p:h")
        " pokud je potreba, vytvor adresar
        if !isdirectory(s:dirname)
                call mkdir(s:dirname, "p")
        endif
        execute "set backupdir=" . s:dirname
endf

" pred ulozenim souboru nastav adresar pro zalohu
autocmd BufWritePre *  call SetBackupDir()

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.