Видаліть з поточного положення курсору до заданого номера рядка в редакторі vi


108

Як видалити блок тексту з поточного рядка курсору до заданого номера рядка in vi?

Наприклад:

 49 <j:set var="changeSet" value="${build.changeSet}" /> <----- delete from here (cursor position)
 50 <j:if test="${changeSet!=null}">
 51   <j:set var="hadChanges" value="false" />
 52   <TABLE width="100%">
 53     <TR><TD class="bg1" colspan="2"><B>CHANGES</B></TD></TR>
 54     <j:forEach var="cs" items="${changeSet.logs}" varStatus="loop">
 55       <j:set var="hadChanges" value="true" />
 56       <j:set var="aUser" value="${cs.hudsonUser}"/>
 57       <TR>
 58         <TD colspan="2" class="bg2">${spc}Revision <B>${cs.revision}</B> by
 59           <B><j:choose>
 60             <j:when test="${aUser!=null}">${aUser.displayName}: </j:when>
 61             <j:otherwise>${cs.user}: </j:otherwise>
 62           </j:choose></B>
 63           <B>(${cs.msgAnnotated})</B>                <----- to here (line 63)
 64          </TD>
 65       </TR>
 66       <j:forEach var="p" items="${cs.paths}">
 67         <TR>
 68           <TD width="10%">

У Vim я зазвичай використовую для цього режим візуального вибору, але Vim у мене немає на цьому сервері. Також було б швидше вказати номер рядка, а не рахувати, скільки рядків знаходиться в блоці в деяких випадках.


Відповіді:


210

Ви можете використовувати щось на зразок d63Gвидалення з поточного рядка до рядка 63.


5
Ооо, рішення в звичайному режимі - ще краще!
seanhodges

50
Щоб додати до цього, якщо ви хочете видалити рядки 45 - 64, зробіть: 45,64d
ThinkCode

110

Для видалення з а до b використовуйте

:a,bd

від поточного до b використання

:,bd

(де в коді а і b замінюються вашими номерами)


1
Відмінно. Я зміг зробити ":., 63d", щоб виконати приклад видалення вище. Дякую нудно!
seanhodges

13

Те саме, що прийнята відповідь, але трохи швидше набрати:

d63gg видаляє з поточного рядка до рядка 63.


8

Навіщо рахувати рядки? Перейдіть до останнього рядка, який ви бажаєте видалити, і позначте його, ввівши maякий "позначає" його ідентифікатором "а". Потім перейдіть до верхнього рядка, який потрібно видалити, і введіть d'aдля видалення, щоб позначити "a". Бам!


Не працює (vim 7.4.160, CentOS). Можливо, для цього потрібне якесь розширення або спеціальна конфігурація.
Німецький Хохлов

6

Щоб видалити блок рядків у Vi:

n: є від номера рядка

m: Це на номер рядка

  1. Від поточного рядка до заданого номера рядка-

    :,md

  2. від / до конкретних номерів рядків

    :n,md

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.