Есть ли команда для удаления строки (или n строк) над текущей? Выше = ток не включен.
Т.е. есть альтернатива, dkкоторая не удаляет текущую строку? Подобно тому, как o/ Oи p/ Pработать, но с удалением.
В настоящее время я делаю kdd, что перемещает курсор на одну строку вверх и удаляет его. Я мог бы сделать nnoremap <Leader>d kdd
и nnoremap <Leader>D jdd-
, но иметь альтернативу, которая не двигает курсор, кажется лучшим вариантом. Есть ли такие?
key-bindings
cursor-movement
normal-mode
Мартин Тот
источник
источник
nnoremap <Leader>d kddj
иnnoremap <Leader>D jddk
?kddj
илиjddk
, положение столбца не сохраняется. Я не говорю, что это большая проблема, но это раздражает. Для записиkddj
перемещает курсор на 1 строку ниже исходной позиции. Иjdd-
кажется лучшей альтернативой,jddk
потому что, по крайней мере, я возвращаюсь к первому не пробелу. Если строка ниже той, которую я хочу удалить, пуста, я остаюсь в начале строки.Ответы:
обрезает линию над текущей строкой.
обрезает 5-ю строку над текущей строкой (но перемещает курсор).
обрезает 5 строк над текущей строкой.
обрезает 5 строк ниже текущей строки.
источник
РЕДАКТИРОВАТЬ Я не знал встроенных функций, предложенных @Romainl в своем ответе: конечно, метод
-d
and+d
следует отдавать предпочтение, так как он намного проще, чем добавление функций к вашему..vimrc
Может быть, добавление чего-то такого к вашему
.vimrc
может быть тем, что вы хотите:Эти функции удаляют строку ниже или строку поверх текущей и возвращаются в позицию перед удалением.
Для функции
DeleteOver()
нам нужно подняться на одну строкуnormal k
после удаления, потому что удаление меняет номер исходной строки, которая не происходит сDeleteUnder()
Вы также можете добавить это к вашему
.vimrc
Создать отображения, вызывающие функции.
источник
nostartofline
опции.Если мы используем небольшой регистр удаления "-, мы можем восстановить позицию курсора после удаления выше n строк.
Например, d0dgk"-Pудаляет строку выше 1 и восстанавливает курсор туда, где он был.
d0удаляет символы из курсора до первого символа строки. Поскольку 0это исключительное движение, символ под курсором не удаляется. И удаленные символы помещаются в маленький регистр удаления "-.
dgkудаляет выше 1 строки. Это оставит текущую строку, потому что gkне является linewise и эксклюзивным.
"-P помещает текст из небольшого регистра удаления "-.
Это своего рода хак. Но если вы ищете не-ex команды, подумайте об их использовании.
источник
"-P
не хочешь"-p
. Последний немного портит текст.Возможно, вы улучшите свой рабочий процесс, если не боитесь ... прыгать :)
Пример:
Ваши действия (нормальный режим, курсор находится
_
):/I want
Enter
5dd
Ctrl-o
. Вот и все.Конечно, romainl ответ будет наилучшим, если все, что вы хотите удалить целые строки, и вы можете легко посчитать их смещение (например, используя относительные числа белья). Выше приведен более общий способ «действовать»: перейдите туда, используя что-то, что считается прыжком: это означает, что вы всегда можете вернуться назад после изменения текста.
Например, если вы используете абсолютные номера строк, вы можете заменить их на
/I want
Enter
что-то вроде78gg
или,78G
чтобы перейти непосредственно к этому номеру строки.источник
Основываясь на решении ms-kim, я разработал несколько другой вариант, который сохраняет коллаж.
OBS: я также использовал этот пост в качестве ссылки.
источник
Если вы хотите удалить повторяющиеся строки во всем файле, просто сделайте следующее:
Пример:
В командном режиме
Если вы просто хотите сначала получить список строк:
источник