No Vim (7.2), existe um comando no modo normal r
para substituir um único caractere por outro. Por exemplo, a digitação rX
substituirá o caractere sob o cursor X
e retornará ao modo normal.
Existe um comando no modo normal para inserir um único caractere e retornar ao modo normal?
Respostas:
MelBurslan está certo de que esse recurso não existe nativamente, mas a criação de um comando definido pelo usuário não é realmente o caminho a ser feito. Eu consertei por alguns minutos e cheguei a isso:
Que usa alguns truques do Vim que envolvem "colocar" texto de um registro, nesse caso o registro "expressão". A expressão que está sendo conectada ao registro é "
nr2char(getchar())
" que retornará uma única cadeia de caracteres.A razão pela qual construí o mapeamento dessa maneira é que obter informações do usuário "no meio do caminho" é complicado e pode se comportar de forma imprevisível; mesmo esse mapeamento derrubará o cursor na área de status enquanto aguarda o usuário digitar um caractere.
fonte
Agradecemos a Johnny por nos dar esta resposta fantástica nos comentários abaixo:
Isso mapeia Control + i para inserir um único caractere e o faz de forma muito concisa.
No seu arquivo vimrc, será semelhante a:
Alterei meu mapeamento para usar espaço e você pode alterar o seu para sua (s) chave (s) preferida (s):
fonte
Até onde eu sei, não existe essa função em nenhuma encarnação amplamente distribuída do editor vi, mas o vim tem um recurso para criar comandos personalizados. Já foi discutido aqui: neste tópico
Você pode criar seu comando personalizado fazendo o que deseja fazer.
fonte
Uma maneira simples de fazer isso é usar os comandos Recortar xe Colocar p. Diga que
*
é o caractere que você deseja inserir. Insira-o usando i * Esc. Então aperte x. Isso cortará o personagem. Agora, você pode pressionar ppara colocar o único personagem. Se você precisa inserir esse personagem 300 vezes, você pode digitar:300p
.fonte