Maneira mais simples de excluir uma palavra "composta"?


20

Desculpas se "composto" não for o termo técnico. Quero dizer o seguinte:

Hi, I-am-a-composite-word and we are not

Gostaria de excluir apenas a palavra composta. No modo de comando, se eu mover o cursor para I, repetir dwalgumas vezes, ou melhor digitar dwuma vez, seguido de algumas .pressionadas, fará o truque. No entanto, por várias razões, eu me vejo fazendo isso com bastante frequência durante o dia, portanto fiquei pensando se há alguma maneira mais simples.

PS: Eu não consideraria o comando d9wuma maneira mais simples. Contar uma longa sequência de palavras e traços não é minha idéia de "mais simples".

Respostas:


33

O que você está chamando de palavra composta é realmente uma PALAVRA (por oposição a uma palavra). Leitura :h worde :h WORDdeve ser útil:

                            *word*
A word consists of a sequence of letters, digits and underscores, or a
sequence of other non-blank characters, separated with white space (spaces,
tabs, <EOL>).  This can be changed with the 'iskeyword' option.  An empty line
is also considered to be a word.
                            *WORD*
A WORD consists of a sequence of non-blank characters, separated with white
space.  An empty line is also considered to be a WORD.

O que você está procurando aqui é dWquando você está no Iou diWquando está em qualquer lugar da palavra.

Talvez no futuro você também precise ler :h 'iskeyword'.


11
obrigado pela resposta: funciona. A propósito da definição: A WORD consists of a sequence of non-blank characters, separated with white space. Separated with white spacesignifica que a PALAVRA é separada por outras palavras ou PALAVRAS com espaço em branco, certo?
— DeltaIV 5/11

2
@DeltaIV Sim in-this-sentence there are four"WORDsas palavras são 4 in-this-sentence, there, aree four"WORDs. É fácil ver quando você usa we Wou be Bpropostas de exemplo. Observe que um espaço em branco pode ser um espaço "regular" ou um caractere de tabulação.
— Statox

11
Essa resposta seria mais útil imediatamente se iniciasse com "O que você está procurando aqui é dW .." em vez de forçar o leitor a percorrer o parágrafo do meio para encontrar a solução.
— Mark Meuer

9

Outra solução mais geral é excluir até o caractere de espaço em branco usando dt (com um espaço após o t), o que significa "excluir para [caractere]. Isso geralmente é útil para coisas como dt:e similares.


o que dt: faz?
— DeltaIV 5/11

11
Quando postei a mesma resposta, aprendi que você pode usar <code>dt </code>para incluir um espaço no final.
— precisa saber é o seguinte

2
@DeltaIV Na verdade o que você realmente precisa é de ler :h motion.txte utilização vimtutor, que vai ajudar muito você a obter o básico do Vim
— statox

@statox Eu costumava ser hábil na VIM ... há 10 anos :-) vimtutorparece muito interessante. Não sei se ele está instalado no servidor remoto (parece que nem o manutilitário está instalado). No entanto, vou verificar: se ele é instalado automaticamente junto com o vimpacote, então há grandes chances de que eu possa usá-lo.
— DeltaIV 5/11

11
@ BurnsBA Obrigado, isso é realmente útil para este site. Btw. você pode editar postagens de outras pessoas e até obter +2 reputação se sua edição passar por algum processo de revisão por pares. Mas, assim, aprendi algo novo também :-).
— allo

4

Se você quiser continuar usando dwe afins, e também quiser deixá-lo funcionar com um clique duplo em uma palavra, você pode adicionar

set iskeyword+=-

ao seu .vimrc, que adiciona -como um caractere de palavra.

Exemplo:

Clique duas vezes em qualquer caractere nos ab-cddestaques visualmente ab-cd.


Estou bem em mudar para dW, mas sua solução também é bem legal porque afeta o modo visual também, eu acho. Quero dizer, modificando o iskeyword, clicando duas vezes e pressionando deu devo poder excluir ab-cd. Certo?
— DeltaIV 5/11

Ou talvez eu deva mudar para o modo visual com v, em vez de clicar duas vezes. Certo?
— DeltaIV 5/11

11
@DeltaIV modificando iskeyword, você pode usar qualquer método com objetos de texto (incluindo iw ou aw, significativamente mais simples do que usar um mouse ou o modo visual)
— D. Ben Knoble

4

Não se esqueça dos comandos f(localizar) e t(para). Eu provavelmente apenas dt ou df (observe o espaço no final).

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.