Зачем использовать 0d_ в DiffOrig в Vim? - PullRequest
5 голосов
/ 22 марта 2012

В онлайн-руководстве Vim, :help DiffOrig покажет рекомендуемую последовательность команд для получения изменений текущего файла редактирования.

Вот оно:

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

Интересно, каков эффект 0d_. Я пробовал 0d_ в обычном режиме, он работает как dd, но я не могу понять, почему он здесь используется.

1 Ответ

8 голосов
/ 22 марта 2012

Давайте немного поясним: предположим, у вас есть оригинальный файл foo.txt, содержащий (с номерами строк):

1 a
2 c
3 d
~

Вы добавили строку, содержащую «b» между строками 1 и 2:

  • :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 о команде :d ex, она работает аналогично.

Остальное очевидно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...