Как выбрать / удалить до конца файла в vim / gvim?

42

Случайно мне удалось скопировать и вставить абзац в vim миллион раз. Как выбрать, а затем удалить текст из моей текущей позиции в конец файла?

В Windows это будет Ctrl-Shift-End, а затем Delete.

ripper234
источник
Вим отменил. Нажмите u.
Кусалананда

Ответы:

49
VGx

Войдите в визуальный режим, перейдите в конец файла, удалите.

В качестве альтернативы вы можете сделать:

Vggx

Удалить из текущей позиции в начало файла.

Марк Шиманский
источник
1
Тьфу, я никогда не буду помнить все эти ярлыки Vim. Ярлыки Windows намного более интуитивно понятны.
ripper234
Лично я считаю Vim более интуитивным. V, войдите в визуальный режим G, почти как «go», до конца файла. И х, удали.
Марк Шимански
10
@ ripper234: не пытайтесь запоминать «фрагменты» для выполнения конкретных задач, сосредоточьтесь на подкомандах. Это часть магии vim: использование этих небольших команд для создания более сложных и сложных вещей. Это почти бесконечно гибко.
Рейд
И это действительно помогает потратить время и прочитать соответствующие разделы справки vim с помощью: h command-you-need-help-for
Gjallar
1
Чтобы добавить к этому: бегите vimtutorиз командной строки, чтобы познакомиться с ними @ ripper234
Бернхард
48

dудаляется и Gперемещается в конец файла, поэтому dGудаляется до конца файла. Он включает в себя всю текущую строку, хотя; если вы находитесь на средней линии и хотите сохранить все до текущей позиции, вам нужно использовать метод Марка

Михаил Мрозек
источник
+1 Другой способ сохранить часть текущей строки D<enter>dG: Dудалить в EOL, <enter>перейти к следующей строке, dGудалить в EOF.
Джим Л.
8

Еще один метод: :.,$d

Это означает, что в режиме ex, адрес текущей строки до конца и удалить.

Кит
источник
7

Вы также можете просто напечатать, uчтобы отменить изменения, которые привели к ошибочному копированию-вставке.

vimmar
источник
не всегда возможно, см. «выбор». Представьте, что вы написали некоторый код в конце файла (и хотите, чтобы он где-то еще), dG позволяет вставлять с помощью p | P
relascope
2
vGx

отлично работает для многострочного выделения (в данном случае абзаца), но если вы хотите выделить в пределах одной строки, оно действует загадочно (выбирается от курсора до начала строки).

В случае выбора в пределах одной строки вы должны использовать:

v$x

Который входит в Визуальный режим ("v") и переходит в конец строки ("$") и удаляет ("x") от текущей позиции до конца строки.

Кайван Техрани
источник
0

Vggx не работал для меня, но vG $ d работал. vG $ выбирает EOF (последний символ последней строки), а затем любую команду, которую вы хотите выполнить.

= Этот подход (команда после выбора), кажется, работает лучше. Конечно, я использую Vim 8.1 на Windows 10 и несколько лет спустя.

user3473636
источник