"modified default vifm configuration. Most of this is from the vifm defaults.
"Copyright 2018 TheToric
"
"This program is free software: you can redistribute it and/or modify
"it under the terms of the GNU General Public License as published by
"the Free Software Foundation, either version 3 of the License, or
"(at your option) any later version.
"
"This program is distributed in the hope that it will be useful,
"but WITHOUT ANY WARRANTY; without even the implied warranty of
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
"GNU General Public License for more details.
"
"You should have received a copy of the GNU General Public License
"along with this program.  If not, see <http://www.gnu.org/licenses/>.

" 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

"general settings
	" 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 and doesn't support progress measuring.

	set syscalls

	" 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=100

	" Automatically resolve symbolic links on l or Enter.

	set nofollowlinks

	" With this option turned on you can run partially entered commands with
	" unambiguous beginning using :! (e.g. :!Te instead of :!Terminal or :!Te<tab>).

	" set fastrun

	" Natural sort of (version) numbers within text.

	set sortnumbers

	" Maximum number of changes that can be undone.

	set undolevels=100

	" If you installed the vim.txt help file set vimhelp.
	" If would rather use a plain text help file set novimhelp.

	set novimhelp

	" 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 Default

	" 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

	" Set custom status line look

	set statusline="  Hint: %z%= %A %10u:%-7g %15s %20d  "


	" :mark mark /full/directory/path [filename]

	mark b ~/bin/
	mark h ~/

" :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


" 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.

	" Pdf
	filextype *.pdf zathura %c %i &, apvlv %c, xpdf %c
	fileviewer *.pdf pdftotext -nopgbrk %c -

	"Image
	fileviewer *.png,*jpeg,*jpg img2txt --width=100 %c

	"previewing html docs
	fileviewer *.html w3m %c



	" Open all other files with default system programs (you can also remove all
	" :file[x]type commands above to ensure they don't interfere with system-wide
	" settings).  By default all unknown files are opened with 'vi[x]cmd'
	" uncommenting one of lines below will result in ignoring 'vi[x]cmd' option
	" for unknown file types.
	" For *nix:
	filetype * xdg-open

" ------------------------------------------------------------------------------

" What should be saved automatically between vifm runs
" Like in previous versions of vifm
" set vifminfo=options,filetypes,commands,bookmarks,dhistory,state,cs
" Like in vi
set vifminfo=dhistory,savedirs,chistory,state,tui,shistory,
    \phistory,fhistory,dirstack,registers,bookmarks,bmarks

" Sample mappings

" 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 the background using its default program
nnoremap gb :file &<cr>l

" Yank current directory path into the clipboard
nnoremap yd :!echo %d | xclip %i<cr>

" Yank current file path into the clipboard
nnoremap yf :!echo %c:p | xclip %i<cr>

" Mappings for faster renaming
nnoremap I cw<c-a>
nnoremap cc cw<c-u>
nnoremap A cw

" Open editor to edit vifmrc and apply settings after returning to vifm
nnoremap ,c :write | edit $MYVIFMRC | restart<cr>

" Toggle wrap setting on ,w key
nnoremap ,w :set wrap!<cr>

" ------------------------------------------------------------------------------

" Various customization examples

" Use ag (the silver searcher) instead of grep
"
" set grepprg=ag\ --line-numbers\ %i\ %a\ %s
" nnoremap <left> <nop>