" ============================================================================
"  Vifmrc — configuración personal de Vifm v0.14.4
"  Inspirada en la configuración por defecto y ajustada para el día a día
" ============================================================================

" ---------------------------------------------------------------------------
" Apariencia general
" ---------------------------------------------------------------------------
set columns=120
set lines=40
set laststatus=2
set showtabline=1
set termguicolors

" ---------------------------------------------------------------------------
" Comportamiento
" ---------------------------------------------------------------------------
set confirm=y
set trash
set undolevels=100
set history=100
set sort=name
set groupsort=name
set dotfiles=false
set fastrun
set followlinks

" ---------------------------------------------------------------------------
" Vista miller (columnas concéntricas)
" ---------------------------------------------------------------------------
set viewcolumns=miller
set fillchars+=millersep:'│'

" ---------------------------------------------------------------------------
" Vista previa asíncrona (desde v0.12)
" ---------------------------------------------------------------------------
set preview
set previewupdates=async

" ---------------------------------------------------------------------------
" Esquema de color
" ---------------------------------------------------------------------------
colorscheme gruvbox

" ---------------------------------------------------------------------------
" Atajos personalizados
" ---------------------------------------------------------------------------
" Abrir archivo con Vim en el panel activo
nmap <f3> :!vim %c<cr>
" Abrir archivo con Vim en el panel inactivo
nmap <f4> :!vim %C<cr>
" Terminal en el directorio actual
nmap <f5> :!bash<cr>
" Refrescar vista
nmap <f6> :refresh<cr>

" ---------------------------------------------------------------------------
" Vista previa de archivos
" ---------------------------------------------------------------------------
fileviewer *.pdf
  \ pdftotext %c - 2>/dev/null | head -n 100
fileviewer *.jpg,*.png,*.gif,*.bmp,*.jpeg
  \ identify %c 2>/dev/null || file %c
fileviewer *.zip,*.tar.gz,*.tar.bz2,*.tgz,*.tar.xz
  \ vifm --listing -c "file %c" 2>/dev/null
fileviewer *.mp3,*.flac,*.wav,*.ogg
  \ mediainfo %c 2>/dev/null || file %c
fileviewer *.py,*.sh,*.rb,*.pl,*.lua,*.js,*.ts
  \ head -n 50 %c
fileviewer *.md,*.txt,*.rst
  \ head -n 100 %c

" ---------------------------------------------------------------------------
" Ejecutores por tipo de archivo
" ---------------------------------------------------------------------------
filetype *.pdf
  \ zathura %c
filetype *.jpg,*.jpeg,*.png,*.gif,*.bmp,*.svg
  \ sxiv %c, feh %c
filetype *.mp3,*.flac,*.wav,*.ogg
  \ mpv %c
filetype *.mp4,*.webm,*.mkv,*.avi
  \ mpv %c
filetype *.html,*.htm
  \ firefox %c, chromium %c
filetype *.odt,*.docx,*.doc
  \ libreoffice %c

" ---------------------------------------------------------------------------
" Fusión de directorios (FUSE)
" ---------------------------------------------------------------------------
" Montar ISO
filetype *.iso
  \ {FUSE}
  \ fuseiso %PARENT_DIR %DEST_DIR
" Montar imágenes de disco
filetype *.img,*.qcow2
  \ {FUSE}
  \ vdfuse -f %PARENT_DIR %DEST_DIR

" ---------------------------------------------------------------------------
" Variables de entorno para comandos externos
" ---------------------------------------------------------------------------
let $PAGER = 'less'
let $EDITOR = 'vim'

" ---------------------------------------------------------------------------
" Comandos personalizados
" ---------------------------------------------------------------------------
" Buscar texto en archivos del directorio actual
command! Grep :grep -r -n
" Abrir terminal en el directorio actual
command! Term :!bash
" Mostrar uso de disco
command! Df :!df -h
" Listar procesos
command! Ps :!ps aux | less
