Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以在vim中备份原始文件吗?_Vim - Fatal编程技术网

可以在vim中备份原始文件吗?

可以在vim中备份原始文件吗?,vim,Vim,是否可以在将新缓冲区写入文件之前复制原始文件,而不必离开vim手动复制 这个怎么样?编辑文件后,在:wq之前,您可以执行以下操作: :!cat myfile.txt > backup.txt 然后使用:wq保存。以前的内容将存储在backup.txtUPDATE 我意识到,对于初学者来说,我的解决方案可能有点复杂,不需要进行单文件备份,因此,如果您想要一个简单的解决方案,请使用: :!cp % ~/ %寄存器保留文件名,使用此extern命令,您可以将当前文件复制到主文件夹,也可以将

是否可以在将新缓冲区写入文件之前复制原始文件,而不必离开vim手动复制

这个怎么样?编辑文件后,在
:wq
之前,您可以执行以下操作:

:!cat myfile.txt > backup.txt
然后使用
:wq
保存。以前的内容将存储在
backup.txt

UPDATE 我意识到,对于初学者来说,我的解决方案可能有点复杂,不需要进行单文件备份,因此,如果您想要一个简单的解决方案,请使用:

:!cp % ~/ 
%寄存器保留文件名,使用此extern命令,您可以将当前文件复制到主文件夹,也可以将其更改为所需的任何文件夹

在Windows中,您可以使用此选项发送到C:上的备份文件夹:

:!copy % \backups\ 
您可以在.vimrc上通过以下方式打开快捷方式:

 nnoremap .b  :!cp % ~/
旧答案:

在保存修改之前,我同样需要备份,因此我创建了一个Bash和一个批处理(适用于Windows)文件来备份我想要的所有文件,并在.vimrc上使用此条件语句在两个系统之间自动选择:

if has("win32")
    nnoremap <leader>bc :! C:\C\SCRIPTS\backupWIN.bat<cr>
else
    nnoremap <leader>bc :!bash /home/vini/C/SCRIPTS/backup.sh<cr>
endif
下面是批处理文件的代码:

set start=%time%

::I didn't managed to make it print the seconds, so I choose to 
::override the same files if I save twice in the same minute  
@echo off
For /f "tokens=1-4 delims=/ " %%a in ('date /t') do (set mydate=%%a-%%b-%%c)
For /f "tokens=1-4 delims=/:" %%a in ('time /t') do (set mytime=%%ah%%bm%%c)


mkdir C:\Users\vini\Desktop\C\C-%mydate%-%mytime%
::careful with xcopy , read the documentation before modify it 
xcopy /E /Y C:\C C:\Users\vini\Desktop\C\C-%mydate%-%mytime%\
您只需更改目录的名称以匹配您的文件夹即可

我只是简单地使用:

:!cp % %.backup
它将在同一位置创建一个新文件,并附加
.backup

因为它是
补丁模式

:set patchmode=.orig

为什么要这样做?我更喜欢有时备份,这样我可以回滚到它。
:set patchmode=.bak
复制的。堆栈交换网络,如果您将原始问题重新发布到其他站点,建议您删除该问题。可以将其放到~/.vimrc:
au BufReadPost,BufNewFile/path/to/file,regex set patchmode=.orig
:set patchmode=.orig