diff options
author | Benjamin Chausse <benjamin@chausse.xyz> | 2020-10-03 19:27:15 -0400 |
---|---|---|
committer | Benjamin Chausse <benjamin@chausse.xyz> | 2020-10-03 19:27:15 -0400 |
commit | e371d9edd474bcf89cf5d462eaccb8638900b390 (patch) | |
tree | ed07118f5c514a55f23a779a1507640e46fd9ed2 /.config/vifm/vifmrc |
Initial commit
Diffstat (limited to '.config/vifm/vifmrc')
-rw-r--r-- | .config/vifm/vifmrc | 297 |
1 files changed, 297 insertions, 0 deletions
diff --git a/.config/vifm/vifmrc b/.config/vifm/vifmrc new file mode 100644 index 0000000..43fb5cc --- /dev/null +++ b/.config/vifm/vifmrc @@ -0,0 +1,297 @@ +" {{{ General config +" This is the actual command used to start vi. The default is vim. +" If you would like to use another vi clone such as Elvis or Vile +" you will need to change this setting. +set vicmd=nvim + +" This makes vifm perform file operations on its own instead of relying on +" standard utilities like `cp`. While using `cp` and alike is a more universal +" solution, it's also much slower when processing large amounts of files and +" doesn't support progress measuring. +set syscalls + +" Open with preview window +view + +" Trash Directory +" The default is to move files that are deleted with dd or :d to +" the trash directory. If you change this you will not be able to move +" files by deleting them and then using p to put the file in the new location. +" I recommend not changing this until you are familiar with vifm. +" This probably shouldn't be an option. +set trash + +" This is how many directories to store in the directory history. +set history=1000 + +" Automatically resolve symbolic links on l or Enter. +set nofollowlinks + +" Natural sort of (version) numbers within text. +set sortnumbers + +" Maximum number of changes that can be undone. +set undolevels=100 + +" If you would like to run an executable file when you +" press return on the file name set this. +set norunexec + +" Selected color scheme +colorscheme minimal + +" Format for displaying time in file list. For example: +" TIME_STAMP_FORMAT=%m/%d-%H:%M +" See man date or man strftime for details. +set timefmt=%m/%d\ %H:%M + +" Show list of matches on tab completion in command-line mode +set wildmenu + +" Display completions in a form of popup with descriptions of the matches +set wildstyle=popup + +" Display suggestions in normal, visual and view modes for keys, marks and +" registers (at most 5 files). In other view, when available. +set suggestoptions=normal,visual,view,otherpane,keys,marks,registers + +" Ignore case in search patterns unless it contains at least one uppercase +" letter +set ignorecase +set smartcase + +" Don't highlight search results automatically +set nohlsearch + +" Use increment searching (search while typing) +set incsearch + +" Try to leave some space from cursor to upper/lower border in lists +set scrolloff=4 + +" Don't do too many requests to slow file systems +if !has('win') + set slowfs=curlftpfs +endif + +" Things that should be stored in vifminfo +set vifminfo=dhistory,chistory,state,shistory,phistory,fhistory,dirstack,registers,bookmarks,bmarks + +" Dont show delete confirmation +set confirm-=delete + +" ------------------------------------------------------------------------------ + +" :com[mand][!] command_name action +" The following macros can be used in a command +" %a is replaced with the user arguments. +" %c the current file under the cursor. +" %C the current file under the cursor in the other directory. +" %f the current selected file, or files. +" %F the current selected file, or files in the other directory. +" %b same as %f %F. +" %d the current directory name. +" %D the other window directory name. +" %m run the command in a menu window + +command! df df -h %m 2> /dev/null +command! diff vim -d %f %F +command! zip zip -r %f.zip %f +command! run !! ./%f +command! make !!make %a +command! mkcd :mkdir %a | cd %a +command! vgrep vim "+grep %a" +command! reload :write | restart + +" Empty the ruler. By default, it shows the number of directories+files. +set rulerformat= +" }}} + + +" {{{ File preview & file opening +" The file type is for the default programs to be used with +" a file extension. +" :filetype pattern1,pattern2 defaultprogram,program2 +" :fileviewer pattern1,pattern2 consoleviewer +" The other programs for the file type can be accessed with the :file command +" The command macros %f, %F, %d, %F may be used in the commands. +" The %a macro is ignored. To use a % you must put %%. + +" For automated FUSE mounts, you must register an extension with :file[x]type +" in one of following formats: +" +" :filetype extensions FUSE_MOUNT|some_mount_command using %SOURCE_FILE and %DESTINATION_DIR variables +" %SOURCE_FILE and %DESTINATION_DIR are filled in by vifm at runtime. +" A sample line might look like this: +" :filetype *.zip,*.jar,*.war,*.ear FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR +" +" :filetype extensions FUSE_MOUNT2|some_mount_command using %PARAM and %DESTINATION_DIR variables +" %PARAM and %DESTINATION_DIR are filled in by vifm at runtime. +" A sample line might look like this: +" :filetype *.ssh FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR +" %PARAM value is filled from the first line of file (whole line). +" Example first line for SshMount filetype: root@127.0.0.1:/ +" +" You can also add %CLEAR if you want to clear screen before running FUSE +" program. + + +" CSV/Excel +filetype *.csv,*.xlsx libreoffice %c %i +fileviewer *.csv sed "s/,,,,/,,-,,/g;s/,,/ /g" %c | column -t | sed "s/ - / /g" | cut -c -%pw + +" HTMLs +fileviewer *.html w3m -dump %c +filextype *.html,*.htm firefox %f 2>/dev/null & + +" Text based files +filetype <text/*> nvim +fileviewer <text/*> env -uCOLORTERM bat --color always --theme base16 --wrap never --pager never %c -p +fileviewer *.[ch],*.[ch]pp,*.[ch]xx env -uCOLORTERM bat --color always --theme base16 --wrap never --pager never %c -p + +" PDFs +filextype *.pdf zathura %c %i & +fileviewer *.pdf + \ vifmimg pdf %px %py %pw %ph %c + \ %pc + \ vifmimg clear + +" ePUBs +filextype *.epub zathura %c %i & +fileviewer *.epub + \ vifmimg epub %px %py %pw %ph %c + \ %pc + \ vifmimg clear + +" Fonts +fileviewer *.otf,*.ttf,*.woff + \ vifmimg font %px %py %pw %ph %c + \ %pc + \ vifmimg clear + +" Audios +filetype <audio/*> mpv %c %i & +fileviewer <audio/*> + \ vifmimg audio %px %py %pw %ph %c + \ %pc + \ vifmimg clear + +" Videos +filetype <video/*> mpv %c %i & +fileviewer <video/*> + \ vifmimg video %px %py %pw %ph %c + \ %pc + \ vifmimg clear + +" Images +filextype <image/*> mpv %c %i & +fileviewer <image/*> + \ vifmimg draw %px %py %pw %ph %c + \ %pc + \ vifmimg clear + +" Archives +fileviewer *.zip,*.jar,*.war,*.ear,*.oxt zip -sf %c +fileviewer *.tgz,*.tar.gz tar -tzf %c +fileviewer *.tar.bz2,*.tbz2 tar -tjf %c +fileviewer *.tar.txz,*.txz xz --list %c +fileviewer *.tar tar -tf %c +fileviewer *.rar unrar v %c +fileviewer *.7z 7z l %c + +" Dont show preview on ../ as this confuses me at times +fileview ../ echo >/dev/null + +" Show ls in the preview window, it creates a similar look as ranger. +" The default directory tree thing is really messy +fileviewer */ ls --color --group-directories-first +fileviewer .*/ ls --color --group-directories-first + +" Other files +" Using xdg-open to open the highlighted file with a compatible program and +" the reason why I am using "file" to preview other files is so that "vifm" +" does not lag when trying "cat" the file +filetype * xdg-open %c +fileviewer * file -b %c +" }}} + + +"{{{ Key mappings +" Easily quit vifm by hitting q +nmap q ZQ + +" Use comma to enter command mode +nnoremap , : + +" Set highlighted image as wallpaper +nnoremap bg :!sh ~/.scripts/control/setbg %c &<cr> + +" Upload highlighted file to 0x0.st and then save url to clipboard +nnoremap 0x0 :!curl -s -F'file=@%c' https://0x0.st > /dev/null | xclip -sel clip && notify-send "vifm" "File uploaded: $(xclip -o -selection clipboard)" &<cr> + +" Reverse image search with Tiney +nnoremap re :!bash ~/bin/utils/tineye %c &<cr> + +" Go to the file that is right before "../" for going to the top most file +nnoremap gg ggj + +" Quick shortcuts to some dirs +source ~/.cache/vifm-shortcuts +nnoremap cd :cd<cr> + + +" Start shell in current directory +nnoremap s :shell<cr> + +" Display sorting dialog +nnoremap S :sort<cr> + +" Toggle visibility of preview window +nnoremap w :view<cr> +vnoremap w :view<cr>gv + +" Open file in nvim +nnoremap o :!nvim %f<cr> + +" Open file in the background using its default program +nnoremap gb :file &<cr>l + +" Yank current directory path into the clipboard +nnoremap yd :!echo %d | xclip -i -selection clipboard %i<cr> + +" Yank current file path into the clipboard +nnoremap yf :!echo %c:p | xclip -i -selection clipboard %i<cr> + +" Mappings for faster renaming +nnoremap I cw<c-a> +nnoremap cc cw<c-u> +nnoremap A cw + +" Extract an archive +nnoremap x :!/home/siddharth/bin/utils/extract %f &<cr> + +" Make a new directory +nnoremap mkd :mkdir<space> +"}}} + + +"{{{ Icons +" file types +set classify=' :dir:/, :exe:, :reg:, :link:' +" various file names +set classify+=' ::../::, ::*.sh::, ::*.[hc]pp::, ::*.[hc]::, ::/^copying|license$/::, ::.git/,,*.git/::, ::*.epub,,*.fb2,,*.djvu::, ::*.pdf::, ::*.htm,,*.html,,**.[sx]html,,*.xml::' +set classify+=' ::*.go::, ::*.vim,,vimrc::, ::*.tex,,*.aux,,*.toc,,*.rnw,,*.rmd::, ::*.js::, ::*.css::, ::*.log,,*.db::, ::*.py,,*.pyc,,*.pyd,,*.pyo::, ::*.md::, ::*.json::, ::*.vcf::, ::*.rss::' +" archives +set classify+=' ::*.7z,,*.ace,,*.arj,,*.bz2,,*.cpio,,*.deb,,*.dz,,*.gz,,*.jar,,*.lzh,,*.lzma,,*.rar,,*.rpm,,*.rz,,*.tar,,*.taz,,*.tb2,,*.tbz,,*.tbz2,,*.tgz,,*.tlz,,*.trz,,*.txz,,*.tz,,*.tz2,,*.xz,,*.z,,*.zip,,*.zoo::' +" images +set classify+=' ::*.bmp,,*.gif,,*.jpeg,,*.jpg,,*.ico,,*.png,,*.ppm,,*.svg,,*.svgz,,*.tga,,*.tif,,*.tiff,,*.xbm,,*.xcf,,*.xpm,,*.xspf,,*.xwd,,*.webp::' +" audio +set classify+=' ::*.aac,,*.anx,,*.asf,,*.au,,*.axa,,*.flac,,*.m2a,,*.m4a,,*.mid,,*.midi,,*.mp3,,*.mpc,,*.oga,,*.ogg,,*.ogx,,*.ra,,*.ram,,*.rm,,*.spx,,*.wav,,*.wma,,*.ac3::' +" media +set classify+=' ::*.avi,,*.ts,,*.axv,,*.divx,,*.m2v,,*.m4p,,*.m4v,,.mka,,*.mkv,,*.mov,,*.mp4,,*.flv,,*.mp4v,,*.mpeg,,*.mpg,,*.nuv,,*.ogv,,*.pbm,,*.pgm,,*.qt,,*.vob,,*.wmv,,*.xvid::' +" office files +set classify+=' ::*.doc,,*.docx::, ::*.xls,,*.xls[mx]::, ::*.pptx,,*.ppt::' +" miscelleneaous files +"}}} + +" vim: ft=vim |