Linux 使用最新更改对打开的文件进行备份

Linux 使用最新更改对打开的文件进行备份,linux,memory,vim,swap,Linux,Memory,Vim,Swap,我如何备份一个打开并被主动写入的文件,此外,我如何备份所述文件并对其进行最新更改 很长一段时间以来,我一直认为每当我写入一个文件时,创建的.swp文件基本上是仍然在交换内存中的最新文件,因此,如果我写入一个文件,然后备份.swp文件,我将拥有该文件的最新内容 我之前试过这个,但似乎不起作用。所以它要么不能像我想象的那样工作,要么在一个打开的文件中写入一些东西,然后改变到交换文件的方式之间有一段时间间隔。这些假设是否正确 主动写入文件的更改是否存在于内存中的其他位置 我想做的是制作一个脚本,在我写

我如何备份一个打开并被主动写入的文件,此外,我如何备份所述文件并对其进行最新更改

很长一段时间以来,我一直认为每当我写入一个文件时,创建的.swp文件基本上是仍然在交换内存中的最新文件,因此,如果我写入一个文件,然后备份.swp文件,我将拥有该文件的最新内容

我之前试过这个,但似乎不起作用。所以它要么不能像我想象的那样工作,要么在一个打开的文件中写入一些东西,然后改变到交换文件的方式之间有一段时间间隔。这些假设是否正确

主动写入文件的更改是否存在于内存中的其他位置

我想做的是制作一个脚本,在我写文件的同时对我正在写的文件做一个新的备份,包括到那时为止的所有更改,以防我的电脑崩溃或其他情况


编辑:我尝试打开文件,向其中写入一些内容,然后在尝试.swp文件之前等待大约1分钟,它确实发生了更改。

h撤销文件

从我的vimrc:

" Backup
set nobackup
set noswapfile
set nowritebackup
set undolevels=10000
set history=10000

if has('persistent_undo')
  set undodir=$v/undo
  set undofile
endif
还有一个脚本映射
b
在~/.vim/undo中写入文件,这是我的
undodir
(我在unix上的.bashrc上设置了
$v
->
~/.vim

“b->备份文件
功能!备份
“备份路径
让bck_file=展开(“$v/undo/bck_”)。strftime(“%y-%m-%d-%H-%m-%S”)
“文件路径
让bck_file.='--'.substitute(展开('%:p:r')、'/'、''u',g'))
“扩展
让bck_文件='-'。a:是的。展开('%:e')
沉默地执行a:s。”写。bck_文件
回音“备份线路”。a:是的文件类型:$bck_file='。bck_文件
端功能
命令-范围=%Backup调用备份(“,”)
“:在命令行中返回当天的备份路径
命令!-范围=%BackupView调用feedkeys(':e'
\.expand(“$v/undo/bckú”).strftime(“%y-%m-%d”))
nnoremap b:备份
vnoremap b:备份

我真的不明白你在这里做了什么,而且你在解释这是什么方面做得很糟糕,lol,sorry2。我创建了一个映射
,b
的快捷方式,将当前文件的备份文件写入
中。vim/undo
在日期之前的文件中
" b -> Backup file
function! Backup(s)
  " Backup path
  let bck_file = expand('$v/undo/bck_') . strftime('%y-%m-%d-%H-%M-%S')
  " File path
  let bck_file .= '--' . substitute(expand('%:p:r'), '/', '_', 'g')
  " Extension
  let bck_file .= '-' . a:s . '.' . expand('%:e')
  silent execute a:s . 'write! ' . bck_file
  echom 'Backup lines ' . a:s . ' of file: $bck_file = ' . bck_file
endfunction
command! -range=% Backup call Backup('<line1>,<line2>')
" :BackView to feed backup path of the day in command line
command! -range=% BackupView call feedkeys(':e '
            \ . expand('$v/undo/bck_') . strftime('%y-%m-%d'))
nnoremap <leader>b :Backup<CR>
vnoremap <leader>b :Backup<CR>