在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
有关:d
ex命令,它的工作原理行动作.
其余的很明显.