牢獄機械文書群 目次 » 計算機 » 現在地
現在のタブで開いているウインドウすべてを tar で保存
2012-05-17 00:52

vim で現在(のタブで)開いているウインドウすべてを tar でアーカイブ、圧縮する。

以下の例では system() で GNU tar を呼び出している。

引数の outname は保存先のファイル名かフルパスを*拡張子抜き*で、compress は圧縮形式を GNU tar に則って入れる。

(tar の圧縮オプション z...gzip, j...bzip2, Y...lzma, Z...compress)

function! VimTar(outname, compress)
    let suffix = ".tar"
    if len(a:compress) > 1
        echo "Error: invalid compress"
        return -1
    endif
    if a:outname == ""
        let a:outname = "out"
    endif
    let suffixes = ["gz","bz","lzma","Z"]
    let suffix .= "." .suffixes[match(['z','j','Y','Z'], '\C' .a:compress)]
    let filename = []
    windo call add(filename, substitute(expand("%:p"), "\\", "/", "g"))
    return system("tar c" .a:compress ."f " .a:outname .suffix ." " .join(filename))
endfunction
ファイル名に現在の日付時刻を入れたいなら最後の return 行を以下のようにする。
return system("tar c" .a:compress ."f " .a:outname ."_" .strftime("%Y%m%d") .suffix ." " .join(filename))
« もどる
inserted by FC2 system