Apaga da posição atual do cursor para um determinado número de linha no editor vi

108

Como excluo um bloco de texto da linha do cursor atual para um determinado número de linha no vi?

Por exemplo:

 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%">

No Vim eu normalmente usaria o modo de seleção visual para isso, mas não tenho o Vim à minha disposição neste servidor. Também seria mais rápido especificar um número de linha em vez de contar quantas linhas estão dentro do bloco em alguns casos.

Seanhodges
fonte

Respostas:

210

Você pode usar algo como d63Gexcluir da linha atual até a linha 63.

cnicutar
fonte
5
Oooh, uma solução em modo normal - ainda melhor!
seanhodges
50
Para adicionar a isso, se você deseja excluir as linhas 45 a 64, você faz: 45,64d
ThinkCode
110

Para excluir de a para b, use

:a,bd

de atual para b usar

:,bd

(onde a e b em código são substituídos por seus números)

emprestável
fonte
1
Excelente. Consegui fazer ":., 63d" para executar o exemplo de exclusão acima. Obrigado emprestável!
seanhodges
13

Igual à resposta aceita, mas um pouco mais rápida de digitar:

d63gg exclui da linha atual para a linha 63.

apostl3pol
fonte
8

Por que contar linhas? Vá para a última linha que deseja excluir e marque-a digitando o maque a "marca" com o identificador "a". Em seguida, vá até a linha superior que deseja excluir e digite d'apara excluir para marcar "a". Bam!

Gary_W
fonte
Não funciona (vim 7.4.160, CentOS). Talvez precise de alguma extensão ou configuração especial.
Alemão Khokhlov
6

Para excluir um bloco de linhas no Vi:

n: é do número da linha

m: é para o número da linha

  1. Da linha atual até um determinado número de linha-

    :,md

  2. de / para números de linha específicos

    :n,md

SteveScm
fonte