Acoxambres no vim

Bom, instalei o vim 7 já faz algum tempo. Quem já usou ele, sabe que ele tem um recurso de completação pressionando a tecla <TAB> (esse recurso funciona com o <TAB> somente se você colocar um mapeamento no seu ~/.vimrc, normalmente esse recurso funciona pressionado ctrl+n), porém esse recurso faz uma varredura apenas no arquivo no qual se está digitando o texto.

Como utilizo o vim para digitar textos, além de códigos-fonte, senti falta de uma completação de palavras que não se restringisse ao arquivo que estou editando.

Na preguiça de procurar uma solução decente, resolvi acoxambrar. :)

Para poder ter na completação várias palavras que ainda não haviam sido inseridas nesse arquivo, fiz o seguinte:

- Coloquei no arquivo que estava editando a seguinte linha:

#include “arquivo.txt”

Onde arquivo.txt era um arquivo no qual eu havia escrito um longo texto, sobre assunto semelhante ao do texto que eu estava digitando, ou seja, possuíam várias palavras em comum. Quem programa em linguagem C já está acostumado a usar a diretiva #include para incluir arquivos de cabeçalho e sabe que o vim faz a pesquisa de nomes de funções, constantes, entre outros dentro desses arquivos, que estão contidos no #include.

Dessa forma, incluindo um arquivo de texto, estou criando uma espécie de dicionário onde o vim vai procurar as palavras. Após digitar o texto, remove-se a diretiva, pois ela não mais será útil.

Um exemplo:

#include “artigo1.txt”

Escrevendo textos com a completação por tabs.

O arquivo artigo1.txt deverá estar na mesma pasta onde se encontra o arquivo que você está editando.

Postei esse tópico mais como uma curiosidade pois me foi muito útil. É um negócio meio óbvio, mas vale como dica eu acho. Ah, se houver outra forma de inserir um dicionário de palavras, desculpem, mas como disse, eu tava com preguiça de procurar… :)

Mapeamento da tecla TAB:

function InsertTabWrapper()
let col = col(‘.’) – 1
if !col || getline(‘.’)[col - 1] !~ ‘\k’
return “\<tab>”
else
return “\<c-p>”
endif
endfunction
inoremap <tab> <c-r>=InsertTabWrapper()<cr>

Valeu pela correção, eljunior.

13 comentários até agora

  1. eljunior on

    buenas!
    tchê, só pra lembrar: o vim não completa via tecla TAB.
    no teu completa porque tem um mapeamento no teu vimrc. ;-)

  2. stummjr on

    sim, pois é, me esqueci desse detalhe… :)
    hehehe!!!

  3. fabiocpn on

    Interessante de qualquer foma!

  4. stummjr on

    ajeitei lá… :D

  5. eljunior on

    apoiado novo leiaute! :)

  6. stummjr on

    sim, achei massa tbm, só ainda não consegui ajeitar o blogroll…

  7. jvflima on

    layout é para os fracos…

  8. stummjr on

    sim, percebe=-se tua opinião pelo leiaute do teu blog… :D

  9. jvflima on

    sim ! que adianta um layout com conteudo idiota !

  10. stummjr on

    é melhor conteúdo idiota e boim leiaute do que conteúdo e leiaute idiotas… hehehe!

  11. eljunior on

    que é que o hacker psicótico tá enchendo o saco?

  12. jvflima on

    tah tah, que coisa bixa discuti layout, vai colori o teu entao !

  13. stummjr on

    beleza… hehehe!!!


Leave a reply

Você precisa fazer o login para publicar um comentário.