В vim, как я могу удалить все строки в файле, кроме последних 100 строк?
В vim, когда мой курсор находится в первой строке, я могу нажать:
100dd
чтобы удалить первые 100 строк.
Но как удалить все строки, кроме последних 100 строк?
Ответ 1
В нормальном режиме:
G100kdgg
Другими словами:
G -> go to last line
100k -> go up 100 lines
dgg -> delete to top of file
Ответ 2
В режиме ex:
:1,$-100d
Объяснение: ":" помещает редактор в "ex mode". Команда d в режиме ex удаляет строки, указанные как номер одной строки, или диапазон строк. $- последняя строка, а арифметика может быть применена к номерам строк.
Ответ 3
Альтернативное решение общего назначения:
:%!tail -100
Вы можете использовать любую команду оболочки после ! для произвольного изменения текущего буфера. Vim запускает команду и передает текущий файл в stdin и считывает новый буфер из stdout.