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.


Respostas:


210

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


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)


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.


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!


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.