summaryrefslogtreecommitdiff
path: root/.config/vifm/vifmrc
diff options
context:
space:
mode:
Diffstat (limited to '.config/vifm/vifmrc')
-rw-r--r--.config/vifm/vifmrc297
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