在Vim的在线手册中,:help DiffOrig
将显示推荐的命令序列以获取当前编辑文件的更改.
这里是:
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
\ | wincmd p | diffthis
Run Code Online (Sandbox Code Playgroud)
我想知道是什么效果0d_.我试过0d_正常模式,它的工作原理dd,但我无法理解为什么它在这里使用.
让我们解释一下:假设你有原始的foo.txt包含(带行号):
1 a
2 c
3 d
~
Run Code Online (Sandbox Code Playgroud)
您在第1行和第2行之间添加了一行"b":
:vert new在垂直split(:help :new)中创建一个新的空缓冲区:set bt=nofile使它成为临时缓冲区(:help 'bt').注意:
1 a | 1 ·<cursor here
2 b | ~
3 c | ~
4 d | ~
~ | ~
Run Code Online (Sandbox Code Playgroud):r #在当前行之后插入备用文件(#)的内容,存储在文件系统中.您尚未保存其他缓冲区,因此您可以获得原始内容.(:help alternate-file).
:help :r告诉你它总是插入后.因此:
1 a | 1
2 b | 2 a
3 c | 3 c
4 d | 4 d
~ | ~
Run Code Online (Sandbox Code Playgroud):0d_删除第一行.为什么0,我真的不知道,我宁愿写它:1d_.:help range讲述:
当使用0(零)时,大多数命令将其解释为1
该_指定它进入到黑洞寄存器.请参阅
:help :d有关:dex命令,它的工作原理行动作.
其余的很明显.