tee*_*pap 128 vim diff preview
我用Vim.我打开一个文件.我编辑它,我希望在保存之前看到我编辑的内容.
我怎么能在Vim中这样做?
cha*_*aos 146
:w !diff % -
Run Code Online (Sandbox Code Playgroud)
Tob*_*cke 89
因为有些人询问了命令的解释
:w !diff % -
Run Code Online (Sandbox Code Playgroud)
这是我尝试写一个更详细的答案:
我假设你正在使用cat
和echo
安装一个系统(例如几乎任何GNU/Linux,Mac OS,BSD和其他类UNIX系统).
以上命令的工作原理如下:
在vim中保存文件的语法是:
:w <filename>
Run Code Online (Sandbox Code Playgroud)在vim中执行shell命令的语法是:
:!<command>
Run Code Online (Sandbox Code Playgroud)在vim发布的shell环境中,%
碰巧指向当前文件名.您可以通过执行以下操作来验证这一点:
:!echo %
Run Code Online (Sandbox Code Playgroud)
这应输出文件名(如果vim在没有文件名的情况下运行,则输出错误).
使用cat我们也可以输出文件的内容:
:!cat %
Run Code Online (Sandbox Code Playgroud)
这应该返回上次保存状态的文件内容,如果从未保存过,则返回错误.
程序diff能够从标准输入(stdin)读取.其手册页说明了以下内容:
[...]如果文件是" - ",则读取标准输入.[...]
执行不带文件名的save命令而是后面的shell命令会导致vim将文件内容写入shell的stdin,而不是将其保存在物理文件中.您可以通过执行来验证这一点
:w !cat
Run Code Online (Sandbox Code Playgroud)
这应该始终打印文件当前内容(这将被写入文件).
把它放在一起(或tl; dr):文件被"保存"到stdin,diff以文件名和stdin作为输入运行.
知道这个也可以比较文件与vimdiff做这样的事情 - 这只是一个你不想这样做的想法:
:w !cat > /tmp/tempFile && vimdiff /tmp/tempFile % && rm /tmp/tempFile
Run Code Online (Sandbox Code Playgroud)
(然后打开readonly并关闭vimdiff使用:qall
)
Bil*_*nch 55
http://vim.wikia.com/wiki/Diff_current_buffer_and_the_original_file
这是一个函数和命令,用于查看当前编辑的文件与文件系统中未修改版本之间的差异.只需将它放在你的vimrc或插件目录中,打开一个文件,进行一些修改而不保存它们,然后做
:DiffSaved
.Run Code Online (Sandbox Code Playgroud)function! s:DiffWithSaved() let filetype=&ft diffthis vnew | r # | normal! 1Gdd diffthis exe "setlocal bt=nofile bh=wipe nobl noswf ro ft=" . filetype endfunction com! DiffSaved call s:DiffWithSaved()
要退出差异视图,您可以使用该
:diffoff
命令.下面是一个类似的功能,适合模仿
'cvs diff'
命令......
来自vimrc_example.vim:
" Convenient command to see the difference between the current buffer and the
" file it was loaded from, thus the changes you made.
if !exists(":DiffOrig")
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
\ | wincmd p | diffthis
endif
Run Code Online (Sandbox Code Playgroud)
git支持以下命令
:w !git diff --no-index -- % -
通过将以下内容添加到 ~/.vimrc 将其映射到命令
command GitDiff execute "w !git diff --no-index -- % -"
现在执行:GitDiff
成为一个方便的小命令,可以在每次保存之前快速显示差异。
归档时间: |
|
查看次数: |
32366 次 |
最近记录: |