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
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
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".
Agora, o Rust:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Depois, instale o plug-vim
:
$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
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
Cole:
call plug#begin('~/.vim/plugged')
Plug 'neoclide/coc.nvim', {'branch': 'release'}
call plug#end()
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
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)
Depois disso, use comandos no Vim como:
:CocInstall coc-python coc-java coc-tsserver coc-go
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:
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
Top comments (0)