Nesse vídeos instalamos plugins para:
Os procedimentos foram realizados no Ubuntu Cinnamon
Assista ao Vídeo
VIDEO
Todas as configurações utilizadas no vídeo
Muitas coisas servirão para quaisquer outras Linguagens de Programação
01. Atualize seu sistema:
sudo apt update && \
sudo apt upgrade -y && \
sudo apt clean && \
sudo apt autoclean && \
sudo apt autoremove -y
sudo apt install vim curl git wget
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Adicione o código ao ~/.vimrc
vim ~/.vimrc
E dentro do arquivo:
O plugin https://github.com/terroo/vim-simple-emoji servirá pra testar se está tudo funcionando.
call plug#begin( '~/.vim/plugged' )
" Aqui vão os pluggins
" Plugin de Exemplo inicial
Plug 'terroo/vim-simple-emoji'
call plug#end()
Feche o ~/.vimrc
e abra novamente e em seguida rode:
: PlugInstall
Teste pra ver se está funcionando:
vim teste.md
Digite: :smile:
e dê espaço em seguida, se aparecer a carinha: 😃 é porque está tudo certo! Ou rode: :ShowEmoji
.
04. Instale fonts !
git clone https://github.com/terroo/fonts
cd fonts
mv fonts ~/.local/share/fonts
cd && rm -rf fonts
fc-cache -fv
Perceba que :ShowEmoji
já estará diferente. Altere a fonte para Jetbrains Mono e também para cursor I-Beam .
05. Instale um tema de cores vim ~/.vimrc
https://github.com/Matsuuu/pinkmare
Plug 'matsuuu/pinkmare'
Feche o Vim abra de novo e rode: :PlugInstall
. Após completada a instalação adicione ao seu ~/.vimrc
:
colorscheme pinkmare
" OPCIONAL: hi! MatchParen cterm=NONE,bold gui=NONE,bold guibg=NONE guifg=#FFFF00
set nu !
set mouse = a
set title
set cursorline
set encoding = utf-8 " Importante para o YCM
map q : quit < CR>
map < C- s> : write < CR> "echo 'stty -ixon' >> ~ /. bashrc && exec $SHELL'
https://github.com/ycm-core/YouCompleteMe
Antes instale as dependências
sudo apt install gcc g++ cmake make build-essential vim-nox python3-dev
Adicione esse plugin: ycm-core/YouCompleteMe
, :PlugInstall
Complete a instalação:
cd .vim/plugged/YouCompleteMe/
python3 install.py --clangd-completer # Somente C/C++
# python3 install.py --all # precisa do Go e NPM:
# sudo apt install golang npm
Adicione ao seu ~/.vim/.ycm_extra_conf.py
:
'-I/usr/include/gtkmm-3.0' ,
'-I./' ,
'-I/usr/include' ,
09. Testar e configurar
vim teste.cpp
Ao digitar #include <iostream>
e #include <vector>
ele irá autocompletar!
Caso não esteja adicione essa linha ao seu ~/.vimrc
let g:ycm_global_ycm_extra_conf = '~/.vim/.ycm_extra_conf.py'
Removendo a janela suspensa quando usa o autocomplete, adicione essa linha:
set completeopt -= preview
Para desabilitar os diagnósticos em tempo de escrita:
let g:ycm_show_diagnostics_ui = 0
Compilando: :terminal
e g++ teste.cpp
, pra sair do terminal: exit
.
https://github.com/jiangmiao/auto-pairs
Plug 'jiangmiao/auto-pairs'
https://github.com/MaskRay/ccls
sudo apt install ccls
Copie esse código abaixo e cole no seu .vimrc
:
let g:ycm_language_server =
\ [{
\ 'name' : 'ccls' ,
\ 'cmdline' : [ 'ccls' ] ,
\ 'filetypes' : [ 'c' , 'cpp' , 'cuda' , 'objc' , 'objcpp' ] ,
\ 'project_root_files' : [ '.ccls-root' , 'compile_commands.json' ]
\ }]
Mude o cuda … para: cc
, h
e hpp
Abra o o teste.cpp
e pare o mouse sobre o std::cout
e agurade 4 segundos e verá o ccls funcionando.
Perceba que ao autocompletar agora ele adiciona automaticamente um cabeçalho, se não quiser que isso aconteça, adicione essa linha ao seu .vimrc
:
let g:ycm_clangd_args=[ '--header-insertion=never' ]
E teste!
12. Adicionando o UtilSnips
https://github.com/SirVer/ultisnips e https://github.com/ervandew/supertab
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'
Plug 'ervandew/supertab'
Para funcionar adicione esse código:
let g:ycm_key_list_select_completion = [ '<C-n>' , '<Down>' ]
let g:ycm_key_list_previous_completion = [ '<C-p>' , '<Up>' ]
let g:SuperTabDefaultCompletionType = '<C-n>'
let g:UltiSnipsExpandTrigger = "<tab>"
let g:UltiSnipsJumpForwardTrigger = "<tab>"
let g:UltiSnipsJumpBackwardTrigger = "<s-tab>"
Teste com teste.cpp
e main<TAB>
. Se quiser edite os snippets(.vim/plugged/vim-snippets/UltiSnips/cpp.snippets
)
Bônus:
: AirlineTheme
: help AirLineTheme
Undefined variable: g:airline_symbols : let g:airline_symbols = {}
let extensao = expand ( '%:e' )
if ( extensao == "cpp" || extensao == "cc" || extensao == "h" || extensao == "hpp" )
Plug 'ycm-core/YouCompleteMe'
else
Plug 'zxqfl/tabnine-vim'
endif
ARQUIVO FINAL:
let extensao = expand ( '%:e' )
call plug#begin( '~/.vim/plugged' )
" Plugin de Exemplo inicial
Plug 'terroo/vim-simple-emoji'
" Aqui vão os plugins
Plug 'matsuuu/pinkmare'
if ( extensao == "cpp" || extensao == "cc" || extensao == "h" || extensao == "hpp" )
Plug 'ycm-core/YouCompleteMe'
else
Plug 'zxqfl/tabnine-vim'
endif
Plug 'jiangmiao/auto-pairs'
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'
Plug 'ervandew/supertab'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'dracula/vim' , { 'as' : 'dracula' }
call plug#end()
" TEMA DE CORES
colorscheme pinkmare
hi ! MatchParen cterm= NONE , bold gui = NONE , bold guibg= NONE guifg= #FFFF00
" CONFIGS RECOMENDADAS
set nu !
set mouse = a
set title
set cursorline
" MAPEAMENTOS LEGAIS
map q : quit < CR>
map < C- s> : w < CR>
" YOUCOMPLETEME
let g:ycm_global_ycm_extra_conf = '~/.vim/.ycm_extra_conf.py'
set completeopt -= preview
let g:ycm_show_diagnostics_ui = 0
let g:ycm_clangd_args =[ '--header-insertion=never' ]
let g:ycm_language_server =
\ [{
\ 'name' : 'ccls' ,
\ 'cmdline' : [ 'ccls' ],
\ 'filetypes' : [ 'c' , 'cpp' , 'cc' , 'h' , 'hpp' ],
\ 'project_root_files' : [ '.ccls-root' , 'compile_commands.json' ]
\ }]
" UTILSNIPS
let g:ycm_key_list_select_completion = [ '<C-n>' , '<Down>' ]
let g:ycm_key_list_previous_completion = [ '<C-p>' , '<Up>' ]
let g:SuperTabDefaultCompletionType = '<C-n>'
let g:UltiSnipsExpandTrigger = "<tab>"
let g:UltiSnipsJumpForwardTrigger = "<tab>"
let g:UltiSnipsJumpBackwardTrigger = "<s-tab>"
" VIM AIRLINE
let g:airline_theme = 'dracula'
" powerline symbols
let g:airline_left_sep = ''
let g:airline_left_alt_sep = ''
let g:airline_right_sep = ''
let g:airline_right_alt_sep = ''
let g:airline_symbols = {}
let g:airline_symbols . branch = ''
let g:airline_symbols . readonly = ''
let g:airline_symbols . linenr = '☰ '
let g:airline_symbols . maxlinenr = ' '
let g:airline_symbols . dirty= '⚡'
vim
cpp
linguagemc
Marcos Oliveira
Desenvolvedor de software