为什么在Vim中的DiffOrig中使用0d_?

时间:2012-03-22 10:33:46

标签: vim

在Vim的在线手册中,:help DiffOrig 将显示建议的命令序列以获取当前编辑文件的更改。

这是:

command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
                   \ | wincmd p | diffthis

我想知道0d_的影响是什么。我在正常模式下尝试0d_,它的工作方式与dd类似,但我无法理解为什么会在这里使用。

1 个答案:

答案 0 :(得分:8)

让我们解释一下:假设你有原始的foo.txt包含(带行号):

1 a
2 c
3 d
~

您在第1行和第2行之间添加了一行“b”:

  • :vert new在垂直拆分中创建一个新的空缓冲区(:help :new
  • :set bt=nofile使其成为暂存缓冲区(:help 'bt')。注意:

    1 a  | 1 ·<cursor here
    2 b  | ~
    3 c  | ~
    4 d  | ~
    ~    | ~
    
  • :r #在当前行后插入,备用文件(#)的内容,存储在文件系统中。您尚未保存其他缓冲区,因此您可以获得原始内容。 (:help alternate-file)。
    :help :r告诉您它始终插入后。因此:

    1 a  | 1
    2 b  | 2 a
    3 c  | 3 c
    4 d  | 4 d
    ~    | ~
    
  • :0d_删除第一行。为什么0,我真的不知道,我宁愿 写下来:1d_:help range告诉:

      

    当使用0(零)时,大多数命令将其解释为1

    _指定它进入黑洞寄存器。看到 关于:help :d ex命令的:d,它按行工作。

其余的很明显。