Como posso arrancar (copiar) o caractere único no qual o cursor repousa?

49

Conheço muitas maneiras de copiar coisas:

yiw= puxar a palavra atual
yaw= puxar toda a palavra (inclui um espaço à direita)
yy = puxar a linha atual
3yy= puxar três linhas a partir da atual
yap= puxar todo o parágrafo (inclui a nova linha à direita)

Também posso excluir ou alterar um único caractere:

x= excluir o caractere sob o cursor
r= substituir o caractere sob o cursor

Mas como no mundo você simplesmente copia um único caractere sob o cursor?

Minha motivação é que estou programando em Perl 6 e alguns dos operadores são caracteres Unicode. Agora eu estou usando código Perl 6 Config :: INI do tadzik como um ponto de partida para um analisador personalizado, por exemplo, e eu teria gostado de ter copiado apenas que um caracter de aspas francês (um operador de hiper) a partir desta linha :

my %hash = $<sections>».ast;

Eu poderia usar a versão "Texas" de dois caracteres do operador hiper >>, mas achei que parecia melhor e menos ambígua do que >>>:

my %hash = $<sections>>>.ast;

insira a descrição da imagem aqui
insira a descrição da imagem aqui

Christopher Bottoms
fonte
11
Componha facilmente a operação com o movimento, como de costume:yl
VanLaser
@VanLaser Good idea! Eu estava pensando que o movimento não funcionaria porque eu só queria aquele personagem. Mas sua sugestão funciona muito bem para ASCII. Poste isso como resposta e eu votarei. Curiosamente, ele não funciona com esse caractere Unicode, mas ytX(" yank til X") parece funcionar quando Xé o caractere à direita.
Christopher Bottoms
Eu me pergunto, esse é um caractere, seja Unicode, ou não existem dois caracteres ocultos / substituídos usando o concealrecurso Vim ?
VanLaser
@VanLaser Parece dois "caracteres".
Christopher Bottoms
BTW, como você apresenta o »personagem?
VanLaser

Respostas:

41

Compondo a operação puxão com o tantas vezes utilizado "um caractere para a direita" movimento deve funcionar: yl.

BTW (para comentar um comentário do OP), para mim »pode ser puxado dessa maneira, no gVim ou no Vim terminal. Talvez um problema de codificação (arquivo)?

VanLaser
fonte
4
Arrancar »funciona bem para mim também. Eu uso vypara puxar um único personagem. Não sei por que uso isso, e yltalvez tenha tido uma razão consciente uma vez, mas agora é apenas reflexo.
Jjaderberg
3
Eu sempre y<space>pensei que era puxar o personagem por baixo do cursor e acrescentá-lo como resposta, mas depois de verificar a ajuda, percebo <space>e lsou a mesma coisa.
Brett Y
Isso é legal e aparentemente ainda mais fácil de acertar, exceto talvez quando o espaço é usado como líder.
VanLaser
11
@jjaderberg Eu gosto do seu comentário, por favor poste como resposta. Obrigado!
21815 Christopher Bottoms
11
@brettanomyces Eu gosto do seu comentário, por favor poste como resposta. Obrigado!
Christopher Bottoms
14

Normalmente, eu pressiono vy( puxão visual ), às vezes xu( excluir desfazer ) também. Além disso, se você deseja puxar o caractere antes do cursor, em vez de lvypressionar Xu, acho que essa é a razão pela qual pressiono xupela corrente. :-)

Observe que Xufará o cursor se mover para esse caractere.

Kent
fonte
Você quer dizer hvy. Tentei editá-lo, mas aparentemente corrigir um caractere em um comando vim não é uma alteração significativa para ser aceitável.
precisa
9

A maneira mais simples de fazer isso é xexcluir o caractere, que também o coloca no buffer e Pcolocá-lo de volta. Você pode mover o cursor e colar o caractere de volta para onde quiser p(após o cursor) ou P(antes do cursor), desde que não altere o buffer.

BruceK
fonte