vimrc
" ======== Suporte a Cores ========
" Ativar suporte a cores de 24 bits (necessário para cores em hexadecimal)
set termguicolors
 
" ======== Configurações Gerais ========
filetype plugin indent on
syntax on
set title
set encoding=utf-8
set backspace=indent,eol,start " Não precisa no Debian
set noerrorbells
set confirm
set hidden
set splitbelow
set splitright
 
" Faz o Vim lembrar e restaurar a última posição do cursor - exemplo do Debian 12
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
 
" ======== Caminhos ========
set path+=**
set noswapfile
set nobackup
set undodir=~/.vim/undodir
set undofile
 
" ======== Numeração de Linhas ========
set number 
set relativenumber
set scrolloff=2
set cursorline
 
" ======== Mudança do Cursor ========
let &t_SI="\e[6 q"
let &t_EI="\e[2 q"
 
" ======== Indentação ========
set autoindent
set smartindent
 
" ======== Tabulações ========
set expandtab
set tabstop=2
set softtabstop=2
set shiftwidth=2
 
" ======== Configurações de Busca ========
set ignorecase
set smartcase
set incsearch
set hls     " Será alternado no mapeamento de teclas...
let @/ = "" " Será redefinido no mapeamento de teclas...
 
" ======== Menu e Barra de Status ========
set wildmenu
set wildmode=longest,full
set wildoptions=pum
set noshowmode   " Negado para as definições da barra de status...
set laststatus=2
 
" ======== Quebra de Linha ========
set nowrap       " Negado para o mapeamento da quebra de linhas...
set linebreak
 
" ======== Caracteres Invisíveis ========
set nolist       " Negado para o mapeamento dos caracteres invisíveis...
set listchars=tab:›-,space:·,trail:⋯,eol:↲
set fillchars=vert:│,fold:\ ,eob:~,lastline:@
 
" ======== Estilo e Aparência ========
" Esquema de cores
" https://github.com/sainnhe/edge.git
call plug#begin('~/.vim/plugged')
 
" Gerenciador de plugins: temas e recursos
Plug 'sainnhe/edge'             " Tema Edge
call plug#end()
 
set background=dark
colorscheme edge
"colorscheme habamax
 
" Fundo transparente
hi Normal guibg=NONE ctermbg=NONE
 
" Linha do cursor
hi CursorLine guibg=#3E4452
 
" Linha de coluna
hi ColorColumn guibg=#202130
 
" Comentários em itálico
hi Comment cterm=italic gui=italic
 
" Divisão vertical de janelas
hi VertSplit ctermbg=NONE guibg=NONE ctermfg=7 guifg=#2c324d
 
" Barra de abas
hi TabLine      guifg=#9192a0 guibg=#2c324d gui=none
hi TabLineSel   guifg=#a1a2b0 guibg=NONE gui=bold
hi TabLineFill  guifg=#9192a0 guibg=#2c324d gui=none
 
" Seleção (modo visual)
hi Visual guifg=NONE guibg=#303140
 
" Cores das dobras (folding)
hi Folded guibg=NONE guifg=#505160 gui=italic cterm=italic
 
" ======== Configurações de Statusline ========
hi statusline   gui=bold guibg=#98C379 guifg=#101120
hi statuslinenc gui=NONE cterm=NONE guibg=#3E4452 guifg=#B0B1C0
 
" ======== Função: ActiveStatusLine ========
function! ActiveStatusLine()
    " Configurar statusline sem o modo atual
    set statusline=%1*\ [%n]\ %t%{&modified!=''?'\ \|\ +':''}
    set statusline+=\ %2*%=
    set statusline+=%{&ff}\ \|\ %{&fenc!=''?&fenc:&enc}
    set statusline+=\ \|\ %{&filetype!=''?tolower(&filetype):'no\ ft'}
    set statusline+=\ %1*\ %p%%\ %0*\ \ %l:%c\ \ 
 
    " Definir cores personalizadas para statusline
    hi User1 gui=NONE cterm=NONE guifg=#b0b1c0 guibg=#3E4452
    hi User2 gui=NONE cterm=NONE guifg=#b0b1c0 guibg=#3E4452
endfunction
 
" Inicializar a configuração do statusline
call ActiveStatusLine()