dotfiles

My personal shell configs and stuff
git clone git://git.alex.balgavy.eu/dotfiles.git
Log | Files | Refs | Submodules | README | LICENSE

commit 7db99efdac33984a4a993603ef974c48e99fa78e
parent c725a93782f160d48c36376dcacf9e0c89e7b214
Author: Alex Balgavy <a.balgavy@gmail.com>
Date:   Sun, 22 Sep 2019 13:48:36 -0400

lf: moved from ranger

Former-commit-id: d380b03b47695473a3057f9591da8d92588946e0
Diffstat:
Actags.d/lfrc.ctags | 4++++
Alf/lfrc | 107+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mshell/commonprofile | 1-
3 files changed, 111 insertions(+), 1 deletion(-)

diff --git a/ctags.d/lfrc.ctags b/ctags.d/lfrc.ctags @@ -0,0 +1,4 @@ +--langdef=lfrc +--langmap=lfrc:(lfrc) +--regex-lfrc=/^[ \t]*cmd ([a-zA-Z0-9_]+) \$\{\{/\1/c,command/ +--regex-lfrc=/^[ \t]*map ([a-zA-Z0-9_]+) ([^$#]+)/\1: "\2"/m,map/ diff --git a/lf/lfrc b/lf/lfrc @@ -0,0 +1,107 @@ +# vim: foldmethod=marker foldlevel=0 +# General settings {{{ +# interpreter for shell commands (needs to be POSIX compatible) +set shell sh + +# set '-eu' options for shell commands +# These options are used to have safer shell commands. Option '-e' is used to +# exit on error and option '-u' is used to give error for unset variables. +# Option '-f' disables pathname expansion which can be useful when $f, $fs, and +# $fx variables contain names with '*' or '?' characters. However, this option +# is used selectively within individual commands as it can be limiting at +# times. +set shellopts '-eu' + +# set internal field separator (IFS) to "\n" for shell commands +# This is useful to automatically split file names in $fs and $fx properly +# since default file separator used in these variables (i.e. 'filesep' option) +# is newline. You need to consider the values of these options and create your +# commands accordingly. +set ifs "\n" + +# leave some space at the top and the bottom of the screen +set scrolloff 10 + +# }}} +# Command definitions {{{ +# define a custom 'open' command +# This command is called when current file is not a directory. You may want to +# use either file extensions and/or mime types here. Below uses an editor for +# text files and a file opener for the rest. +cmd open ${{ + case $(file --mime-type $f -b) in + text/*) $EDITOR $fx;; + *) for f in $fx; do $OPENER $f > /dev/null 2> /dev/null & done;; + esac +}} + +# define a custom 'rename' command without prompt for overwrite +cmd rename %[ -e $1 ] && printf "file exists" || mv $f $1 + +# define a custom 'delete' command +cmd delete ${{ + set -f + printf "$fx\n" + printf "delete?[y/n]" + read ans + [ $ans = "y" ] && rm -rf $fx +}} + +# extract the current file with the right command +# (xkcd link: https://xkcd.com/1168/) +cmd extract ${{ + set -f + case $f in + *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) tar xjvf $f;; + *.tar.gz|*.tgz) tar xzvf $f;; + *.tar.xz|*.txz) tar xJvf $f;; + *.zip) unzip $f;; + *.rar) unrar x $f;; + *.7z) 7z x $f;; + esac +}} + +# compress current file or selected files with tar and gunzip +cmd tar ${{ + set -f + mkdir $1 + cp -r $fx $1 + tar czf $1.tar.gz $1 + rm -rf $1 +}} + +# compress current file or selected files with zip +cmd zip ${{ + set -f + mkdir $1 + cp -r $fx $1 + zip -r $1.zip $1 + rm -rf $1 +}} + +cmd edit_config ${{ + $EDITOR ~/.config/lf/lfrc + source ~/.config/lf/lfrc +}} +# }}} +# Mappings {{{ +# execute current file (must be executable) +map x $$f +map X !$f + +# dedicated keys for file opener actions +map o &mimeopen $f +map O $mimeopen --ask $f + +map R push :rename<space> +map E $$EDITOR $f +map D delete + +map gd cd ~/Documents +map gD cd ~/Desktop +map gl cd ~/Downloads +map gw cd ~/Dropbox/vimwiki +map gz cd ~/Documents/Programming/thezeroalpha.github.io/ +map g/ cd / + +map ec edit_config diff --git a/shell/commonprofile b/shell/commonprofile @@ -108,7 +108,6 @@ alias du="du -skh" # Pref alias df="df -h" # Preferred 'df' implementation alias htop='sudo htop' # Top should launch htop with sudo alias g='git' # Make git easier to type -alias r='source ranger' # Make Ranger easier to type and keep directory alias wheredef='type -a' # Where is a function defined? alias lsblk="lsblk -o NAME,LABEL,PARTLABEL,TYPE,FSTYPE,SIZE,MOUNTPOINT,STATE" alias rmcolors="sed \"s,\x1B\[[0-9;]*[a-zA-Z],,g\"" # Remove ANSI color codes from text