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