<C-p>
e <C-n>
permitir a conclusão das palavras encontradas no documento atual.
Estou fazendo algumas anotações e escrevendo digamos {0,1}^n
e (E,D)
muitas vezes. Estas são PALAVRAS constituídas por várias palavras.
Existe uma maneira de concluir WORDs com <C-p>
e <C-n>
(ou outro ins-completion
comando relacionado )?
autocompletion
Gonçalo Ribeiro
fonte
fonte
:abbreviate
. Por exemplo, emita o:ab 01n {0,1}^n
comando. Então, toda vez que você digitar01n
como uma palavra independente no modo Inserir, ela será expandida para{0,1}^n
.ins-completion
.Respostas:
Conclusão do modo de inserção com Ctrl-n
Não sei se você poderia concluir o WORD fora de escrever sua própria função (como onifuncional). No entanto, se você não se importa em expandir o que uma palavra corresponde aos seus caracteres, pode adicioná-los a 'iskeyword'
Por exemplo, meu 'iskeyword' é padronizado como
Em seguida, defino-o assim como os caracteres adicionais acima
Isso adiciona
{
,}
,,
,(
,)
, e^
para os personagens que compõem uma palavra (para além do que já fez)Depois disso, a digitação é
{
Ctrl-nconcluída em{0,1}^n
(em um arquivo que contém apenas os dois exemplos que você deu)Nota: Seria melhor fazer um
:set iskeyword+=
com apenas o material adicional, da seguinte maneira:Dessa forma, você deixa quaisquer outras coisas que compõem uma palavra-chave anexando os novos caracteres à configuração existente.
Expansão com abreviações
Embora não faça parte da pergunta original, outra funcionalidade semelhante (ish) é usar a funcionalidade de abreviação do nvi ou do Vim. Ao contrário da conclusão da palavra-chave, as abreviações não precisam se parecer com o texto final. Além disso, diferentemente da conclusão de palavras-chave, as abreviações se expandem automaticamente, e não apenas quando você as solicita. Dependendo da sua meta e uso, isso pode economizar bastante digitação e digitar muito texto sem a interrupção da solicitação de conclusão.
As abreviações são boas para um pequeno conjunto de palavras-chave e quando você pode defini-las com antecedência (elas não são descobertas no seu texto, como ocorre com a conclusão de palavras).
A idéia básica por trás das abreviações é que você associe uma WORD a algum outro texto, e sempre que o editor detectar que você digitou essa WORD (ou seja, o texto digitado é cercado por espaço em branco, onde a ação de conclusão é adicionar o espaço em branco após a palavra-chave ou sair do modo de inserção), é substituída por esse outro texto.
Digamos que seu arquivo contenha
{0,1}^n
muito e não haja outras variações. Digitar um pouco mais do que um dedo, talvez você queira apenas digitar01n
oumyvalue
expandi-lo para{0,1}^n
, mas apenas quando01n
oumyvalue
é uma palavra por si só (ou seja, se aparecer em outra palavra, não mude).Em nvi, você pode fazer
:abbrev 01n {0,1}^n
. Você pode fazer o mesmo no Vim, mas recomendo usar:iabbrev 01n {0,1}^n
para restringir a expansão ao modo de inserção.Então, se você tiver algum texto (onde
|
representa o cursor)E então você pressiona Escou Spaceou Tabmove os cursores, o texto é substituído e você tem (exemplo para usar o espaço)
e você pode continuar digitando sem interrupção.
Isso geralmente é usado para corrigir automaticamente erros de digitação comuns (por exemplo, alterar 'teh' para 'the'), mas pode ser igualmente útil para seu caso de uso, assumindo novamente que você não se importa em configurar os mapeamentos antes do tempo.
fonte
:set iskeyword+={,},,,(,),^
funciona como esperado.abbreviate
poderia ser mais adequado para este trabalho?