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

DeltaIV
fonte

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'.

statox
fonte
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.

todos
fonte
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.

nst0022
fonte
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).

BurnsBA
fonte