DEV Community

Reinan Br.
Reinan Br.

Posted on • Edited on

Configurando o AutoComplete do Vim pelo Termux

Um guia prático de como ativar o autocomplete do vim.

O Vim pode parecer difícil para os que não o conhecem, devido ao meme de "como sair do Vim usando :q e Esc?!".

Embora existam várias lendas sobre o Vim, é preciso entender e aceitar que ele é realmente uma das melhores ferramentas para edição de código pelo terminal (se não a melhor).

Vamos agora iniciar um tutorial de como configurar o Vim com autocompletar no Termux.

Para instalar o Vim no Termux, precisamos primeiro executar o seguinte comando:

$ pkg i vim
Enter fullscreen mode Exit fullscreen mode

Agora, instalar as configurações e linguagens nescessárias para um bom funcionamento dos plugins do vim:

pkg i git npm nodejs python3 golang php composer python3-jedi pylint
Enter fullscreen mode Exit fullscreen mode

Instalando o nodejs atualizado:

# Download and install nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

# in lieu of restarting the shell
\. "$HOME/.nvm/nvm.sh"

# Download and install Node.js:
nvm install 22

# Verify the Node.js version:
node -v # Should print "v22.18.0".
nvm current # Should print "v22.18.0".

# Verify npm version:
npm -v # Should print "10.9.3".

Enter fullscreen mode Exit fullscreen mode

Agora, o Rust:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Enter fullscreen mode Exit fullscreen mode

Depois, instale o plug-vim:

$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Enter fullscreen mode Exit fullscreen mode

Depois disso, vamos configurar o .vimrc para aceitar plugins e instalar o Coc, que será responsável pelo autocompletar nos códigos.

Usando o próprio Vim, insira o seguinte código no .vimrc:

$ vim ~/.vimrc # abrindo o código
Enter fullscreen mode Exit fullscreen mode

Cole:

call plug#begin('~/.vim/plugged')
Plug 'neoclide/coc.nvim', {'branch': 'release'}
call plug#end()
Enter fullscreen mode Exit fullscreen mode

Depois disso, salve, pressionando Esc e, logo em seguida, digitando :wq.

Em seguida, abra novamente e execute, fora do modo insert, o seguinte comando no Vim:

:PlugInstall
Enter fullscreen mode Exit fullscreen mode

Após isso, saia do modo de instalação com :q. No modo insert, adicione as seguintes linhas no .vimrc para que ele funcione normalmente:

" Usar <Tab> para completar ou navegar nas sugestões
inoremap <silent><expr> <TAB>
      \ pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <silent><expr> <S-TAB>
      \ pumvisible() ? "\<C-p>" : "\<C-h>"

" Mapear Enter para selecionar a sugestão
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#_select_confirm() : "\<CR>"

" Configuração de navegação usando setas
nmap <silent> [g <Plug>(coc-diagnostic-prev)
nmap <silent> ]g <Plug>(coc-diagnostic-next)

" Mostrar informações de erro e diagnósticos
nmap <silent> <leader>rn <Plug>(coc-rename)

" Formatar o código
nmap <silent> <leader>f <Plug>(coc-format)
Enter fullscreen mode Exit fullscreen mode

Depois disso, use comandos no Vim como:

:CocInstall coc-python coc-java coc-tsserver coc-go
Enter fullscreen mode Exit fullscreen mode

para instalar algumas linguagens, como esse comando que instala o autocompletar para Python, Java, TypeScript e Golang.

É preciso adaptar o Termux e o Vim para trabalhar com algumas linguagens.

Por exemplo, para Python, é necessário instalar o jedi antes, usando o pip. Quando abrir o primeiro arquivo Python no Vim, ele solicitará a instalação do pylint para poder ler as bibliotecas instaladas.

Seguindo esses passos, o Vim deve funcionar parecido com isso:

Vim configurado com sucesso

O .vimrc mais ideal para mim (que eu uso) é esse aqui.

call plug#begin('~/.vim/plugged')
" Plugin para sintaxe de Elixir
Plug 'elixir-editors/vim-elixir'

Plug 'neoclide/coc.nvim', {'branch': 'release'}
"Plug 'phpactor/phpactor', { 'do': 'composer install --no-dev -o' }
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
Plug 'othree/html5.vim'         " Suporte ao HTML5 (requisito)
Plug 'evanleck/vim-svelte', {'for': 'njk'} " Suporte básico a njk/nunjucks
Plug 'morhetz/gruvbox'
call plug#end()


autocmd BufNewFile,BufRead *.njk set filetype=htmldjango


"theme
hi Normal ctermfg=Red ctermbg=Black
syntax on colorscheme gruvbox


" config coc
inoremap <silent><expr> <TAB>
      \ pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <silent><expr> <S-TAB>
      \ pumvisible() ? "\<C-p>" : "\<C-h>"

" Mapear Enter para selecionar a sugestão
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#_select_confirm() : "\<CR>"

" Configuração de navegação usando setas
nmap <silent> [g <Plug>(coc-diagnostic-prev)
nmap <silent> ]g <Plug>(coc-diagnostic-next)

" Mostrar informações de erro e diagnósticos
nmap <silent> <leader>rn <Plug>(coc-rename)

" Formatar o código
nmap <silent> <leader>f <Plug>(coc-format)

"teclas:wq





"theme
hi Normal ctermfg=Red ctermbg=Black
syntax on colorscheme gruvbox
"

" Melhorando o destaque de sintaxe
"set termguicolors
"syntax on
"colorscheme gruvbox

"Fundo escuro e contraste adequado
"theme
hi Normal ctermfg=Red ctermbg=Black
syntax on colorscheme gruvbox
"

" Melhorando o destaque de sintaxe
"set termguicolors
"syntax on
"colorscheme gruvbox

"Fundo escuro e contraste adequado
set termguicolors
syntax on
colorscheme gruvbox

" Fundo escuro e texto claro
hi Normal ctermfg=White ctermbg=Black

" Comentários
hi Comment ctermfg=Gray cterm=italic

" Palavras-chave (if, else, return, etc.)
hi Keyword ctermfg=Yellow cterm=bold

" Funções definidas pelo usuário
hi Function ctermfg=Blue cterm=bold

" Funções embutidas (ex: print, len, console.log)
hi BuiltinFunction ctermfg=LightBlue cterm=bold

" Métodos de classes
hi Method ctermfg=LightCyan cterm=bold

" Classes e Structs
hi Class ctermfg=Blue cterm=bold
hi Struct ctermfg=Blue cterm=bold

" Variáveis
hi Identifier ctermfg=Cyan
hi Variable ctermfg=LightCyan

" Parâmetros de funções e métodos
hi Parameter ctermfg=LightYellow

" Constantes e valores imutáveis
hi Constant ctermfg=LightBlue cterm=bold
hi Boolean ctermfg=LightMagenta
hi Number ctermfg=LightMagenta
hi String ctermfg=LightGreen

" Operadores (+, -, *, /, =, etc.)
hi Operator ctermfg=White cterm=bold

" Tipos (int, string, float, etc.)
hi Type ctermfg=Green cterm=bold
hi StorageClass ctermfg=Green cterm=bold

" Pré-processadores e diretivas (#define, import, require, etc.)
hi PreProc ctermfg=Magenta

" Caracteres especiais (como '\n', '\t')
hi Special ctermfg=Red

" Retorno de funções (ex: return, yield, etc.)
hi Return ctermfg=Yellow cterm=bold

" Exceções e erros (ex: throw, try, catch)
hi Exception ctermfg=Red cterm=bold

" Declarações de fluxo (for, while, break, continue)
hi Loop ctermfg=Yellow cterm=bold

" Erros e avisos
hi Error ctermfg=White ctermbg=DarkRed
hi Warning ctermfg=Black ctermbg=Yellow



hi MethodCall ctermfg=LightCyan cterm=bold

" Define cores para variáveis e chamadas de métodos separadamente
hi Variable ctermfg=Cyan
hi Method ctermfg=LightCyan cterm=bold
Enter fullscreen mode Exit fullscreen mode

Top comments (0)