From d5f28a06eb7b47a437b6d01d5a76119de0c962e1 Mon Sep 17 00:00:00 2001 From: Riyyi Date: Wed, 31 Jan 2018 22:26:20 +0100 Subject: [PATCH] Add vim plugin manager, update vimrc tab config --- .config/zsh/.zshrc | 1 + .scripts/vimplugin.sh | 145 ++++++++++++++++++++++++++++++++++++++++++ etc/vimrc | 20 +++++- 3 files changed, 164 insertions(+), 2 deletions(-) create mode 100755 .scripts/vimplugin.sh diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc index abff151..ff6031b 100644 --- a/.config/zsh/.zshrc +++ b/.config/zsh/.zshrc @@ -108,6 +108,7 @@ alias nw="$HOME/.scripts/network.sh" # Scripts alias ltx="$HOME/.scripts/latex.sh" +alias vimplugin="$HOME/.scripts/vimplugin.sh" # Fun spurdo() { diff --git a/.scripts/vimplugin.sh b/.scripts/vimplugin.sh new file mode 100755 index 0000000..46c8a29 --- /dev/null +++ b/.scripts/vimplugin.sh @@ -0,0 +1,145 @@ +#!/bin/sh + +DIR="/etc/vim/pack/plugins" +START="$DIR/start" +OPT="$DIR/opt" +LIST="/etc/vim/pack/list" + +help() { + BOLD=$(tput bold) + NORMAL=$(tput sgr0) + + echo "${BOLD}NAME${NORMAL}" + echo " vimplugin - vim plugin manager" + echo "" + echo "${BOLD}SYNOPSIS${NORMAL}" + echo " ./vimplugin.sh [ ]" + echo "" + echo "${BOLD}COMMANDS${NORMAL}" + echo " list " + echo " Prints all the installed plugins, prints \ +just the plugin in that position." + echo "" + echo " install [\"start\"/\"opt\"]" + echo " Install a new plugin, need to be a valid \ +GitHub URL, + start/opt to install the plugin in the start/opt directory \ +(default: start)." + echo "" + echo " update" + echo " Installs/updates all plugins from the config file." + echo "" + echo " remove" + echo " Remove plugin, script will prompt a selection menu." +} + +list() { + if [ -z "$1" ]; then + echo "Listing all installed plugins.." + fi + + PLUGIN="$(find $DIR -mindepth 2 -maxdepth 2 \ + | sort | awk -F '/' '{ print $(NF-1)"/"$NF }')" + NUM=0 + for p in $PLUGIN; do + NUM=$(( NUM + 1 )) + + if [ -z "$1" ]; then + echo "$NUM) $p" + elif [ "$NUM" = "$1" ]; then + echo "$p" + fi + done +} + +install() { + # Check if correct git URL + if [ -z "$(echo $1 | sed -nr \ + 's/^https:\/\/github\.com\/(.*\/.*).git$/\1/p')" ]; then + echo "script: url invalid: $1" + else + # cd to correct directory if called from the CLI + if [ -z "$2" ]; then + # Default is directory 'start' + cd "$START" + elif [ "$2" != script ]; then + if [ "$2" = "start" ]; then + cd "$START" + elif [ "$2" = "opt" ]; then + cd "$OPT" + fi + fi + + REPO="$(basename $1 .git)" + if [ -d "$REPO" ]; then + cd "$REPO" + sudo git pull --force 1> /dev/null + cd ".." + echo "Updated: $REPO" + else + # @ToDo: Add to config file after cloning the repository + # Add git URL to config file + if [ -z "$2" ]; then + # Append before 'opt:' + sudo sed -i '/opt:/ i '$1 $LIST + elif [ "$2" != "script" ]; then + if [ "$2" = "start" ]; then + # Append before 'opt:' + sudo sed -i '/opt:/ i '$1 $LIST + elif [ "$2" = "opt" ]; then + # Append at the end of the file + sudo sed -i '$ a '$1 $LIST + fi + fi + + sudo git clone "$1" 2> /dev/null + echo "Installed: $REPO" + fi + fi +} + +update() { + echo "Updating.." + + sudo mkdir -p $START + sudo mkdir -p $OPT + sudo touch $LIST + if [ ! -s $LIST ]; then + # Append to empty file + sudo sh -c 'echo "start:" >> '$LIST + sudo sh -c 'echo "opt:" >> '$LIST + fi + + cd $START + while read l; do + if [ "$l" = "start:" ]; then + cd "$START" + elif [ "$l" = "opt:" ]; then + cd "$OPT" + else + install $l "script" + fi + done < $LIST +} + +remove() { + list + echo "Enter the number to remove: " && read OPTION + + if [ -z "$(echo $OPTION | sed -nr 's/^([0-9]+)$/\1/p')" ]; then + echo "Please select a number" + else + TO_REMOVE="$(list $OPTION)" + if [ -n "$TO_REMOVE" ]; then + sudo rm -rf $DIR/$TO_REMOVE + sudo sed -i '/'"$(basename $TO_REMOVE)"'\.git/d' $LIST + fi + fi +} + +if type "$1" 2> /dev/null | grep -q "function"; then + "$@" +else + echo "script: command not found: $1" +fi + diff --git a/etc/vimrc b/etc/vimrc index 7b82d8f..6d53454 100644 --- a/etc/vimrc +++ b/etc/vimrc @@ -1,5 +1,20 @@ -set nocompatible " Use Vim defaults instead of 100% vi compatibility -set backspace=indent,eol,start " more powerful backspacing +" Disable unused components +set nobackup +set nocompatible + +"" General + +filetype plugin on + +" Indentation +set autoindent +filetype indent on + +set backspace=indent,eol,start +set tabstop=4 +set softtabstop=4 +set shiftwidth=4 +set expandtab " Now we set some defaults for the editor set history=1000 " keep 50 lines of command line history @@ -11,3 +26,4 @@ set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.i " Default clipboard register "+ (CLIPBOARD buffer in X) set clipboard=unnamedplus +