diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..889799550 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "usbify"] + path = usbify + url = https://github.com/wpcarro/usbify.git diff --git a/brew_packages.txt b/brew_packages.txt index e9c365d70..1aa0f2ea8 100644 --- a/brew_packages.txt +++ b/brew_packages.txt @@ -1,26 +1,84 @@ +ack +ansifilter +arpack bash-completion bind chromedriver +cmake cmatrix coreutils cowsay +ctags +elm +epstool +fftw +fltk +fontconfig +freetype +gcc +gd gdbm gettext +ghostscript +gl2ps +glpk +gmp +gnu-sed +gnupg +gnuplot +graphicsmagick +hdf5 +hping +htop httpie +imagemagick +isl +jpeg jq json-c +libevent +libmpc +libpng libstfl +libtiff +libtool +little-cms2 +lua +metis +mpfr +nethogs newsbeuter +nmap +octave oniguruma openssl +pcre +phantomjs pidof +pkg-config +plotutils +pstoedit pup python +python3 +qhull +qrupdate readline recode shc sqlite +suite-sparse +szip +tbb +texinfo +the_silver_searcher +tig +tmux +transfig tree +veclibfort +vim +webp wget xz zsh-syntax-highlighting diff --git a/configs/.ctags b/configs/.ctags new file mode 100644 index 000000000..7899e7a21 --- /dev/null +++ b/configs/.ctags @@ -0,0 +1,89 @@ +--recurse=yes +--exclude=.git +--exclude=vendor/ +--exclude=node_modules +--exclude=db +--exclude=log +--exclude=tmp + + +--regex-ruby=/.*alias(_method)?[[:space:]]+:([[:alnum:]_=!?]+),?[[:space:]]+:([[:alnum:]_=!]+)/\2/f,function/ +--regex-ruby=/(^|[:;])[ \t]*([A-Z][[:alnum:]_]+) *=/\2/c,class,constant/ +--regex-ruby=/(^|;)[ \t]*(has_many|belongs_to|has_one|has_and_belongs_to_many)\(? *:([[:alnum:]_]+)/\3/f,function,association/ +--regex-ruby=/(^|;)[ \t]*(named_)?scope\(? *:([[:alnum:]_]+)/\3/f,function,named_scope/ +--regex-ruby=/(^|;)[ \t]*expose\(? *:([[:alnum:]_]+)/\2/f,function,exposure/ +--regex-ruby=/(^|;)[ \t]*event\(? *:([[:alnum:]_]+)/\2/f,function,aasm_event/ +--regex-ruby=/(^|;)[ \t]*event\(? *:([[:alnum:]_]+)/\2!/f,function,aasm_event/ +--regex-ruby=/(^|;)[ \t]*event\(? *:([[:alnum:]_]+)/\2?/f,function,aasm_event/ + +--langmap=Ruby:+(Rakefile) + +--langdef=js +--langmap=js:.js +--langmap=js:+.jsx + +--regex-js=/[ \t.]([A-Z][A-Z0-9._$]+)[ \t]*[=:][ \t]*([0-9"'\[\{]|null)/\1/n,constant/ + +--regex-js=/\.([A-Za-z0-9._$]+)[ \t]*=[ \t]*\{/\1/o,object/ +--regex-js=/['"]*([A-Za-z0-9_$]+)['"]*[ \t]*:[ \t]*\{/\1/o,object/ +--regex-js=/([A-Za-z0-9._$]+)\[["']([A-Za-z0-9_$]+)["']\][ \t]*=[ \t]*\{/\1\.\2/o,object/ + +--regex-js=/([A-Za-z0-9._$]+)[ \t]*=[ \t]*\(function\(\)/\1/c,class/ +--regex-js=/['"]*([A-Za-z0-9_$]+)['"]*:[ \t]*\(function\(\)/\1/c,class/ +--regex-js=/class[ \t]+([A-Za-z0-9._$]+)[ \t]*/\1/c,class/ +--regex-js=/([A-Za-z$][A-Za-z0-9_$()]+)[ \t]*=[ \t]*[Rr]eact.createClass[ \t]*\(/\1/c,class/ +--regex-js=/([A-Z][A-Za-z0-9_$]+)[ \t]*=[ \t]*[A-Za-z0-9_$]*[ \t]*[{(]/\1/c,class/ +--regex-js=/([A-Z][A-Za-z0-9_$]+)[ \t]*:[ \t]*[A-Za-z0-9_$]*[ \t]*[{(]/\1/c,class/ + +--regex-js=/([A-Za-z$][A-Za-z0-9_$]+)[ \t]*=[ \t]*function[ \t]*\(/\1/f,function/ + +--regex-js=/(function)*[ \t]*([A-Za-z$_][A-Za-z0-9_$]+)[ \t]*\([^)]*\)[ \t]*\{/\2/f,function/ +--regex-js=/['"]*([A-Za-z$][A-Za-z0-9_$]+)['"]*:[ \t]*function[ \t]*\(/\1/m,method/ +--regex-js=/([A-Za-z0-9_$]+)\[["']([A-Za-z0-9_$]+)["']\][ \t]*=[ \t]*function[ \t]*\(/\2/m,method/ + + +--langdef=haskell +--langmap=haskell:.hs +--regex-haskell=/^module[ \t]*([A-Z][a-zA-Z0-9'_.]*)/\1/m,module/ +--regex-haskell=/^(new)?type[ \t]*([A-Z][a-zA-Z0-9'_]*)./\2/t,type/ +--regex-haskell=/^class[ \t]*([A-Z][a-zA-Z0-9'_]*)/\1/c,class/ +--regex-haskell=/^data[ \t]*([A-Z][a-zA-Z0-9'_]*)/\1/d,data/ +--regex-haskell=/^([a-z_][a-zA-Z0-9'_]*).*=/\1/v,function/ + +--langmap=C++:+.mm + +--langdef=golang +--langmap=golang:.go +--regex-golang=/func([ \t]+\([^)]+\))?[ \t]+([a-zA-Z0-9_]+)/\2/d,func/ +--regex-golang=/var[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,var/ +--regex-golang=/type[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,type/ + +--langdef=Rust +--langmap=Rust:.rs +--regex-Rust=/^[ \t]*(#\[[^\]]\][ \t]*)*(pub[ \t]+)?(extern[ \t]+)?("[^"]+"[ \t]+)?(unsafe[ \t]+)?fn[ \t]+([a-zA-Z0-9_]+)/\6/f,functions,function definitions/ +--regex-Rust=/^[ \t]*(pub[ \t]+)?type[ \t]+([a-zA-Z0-9_]+)/\2/T,types,type definitions/ +--regex-Rust=/^[ \t]*(pub[ \t]+)?enum[ \t]+([a-zA-Z0-9_]+)/\2/g,enum,enumeration names/ +--regex-Rust=/^[ \t]*(pub[ \t]+)?struct[ \t]+([a-zA-Z0-9_]+)/\2/s,structure names/ +--regex-Rust=/^[ \t]*(pub[ \t]+)?mod[ \t]+([a-zA-Z0-9_]+)/\2/m,modules,module names/ +--regex-Rust=/^[ \t]*(pub[ \t]+)?static[ \t]+([a-zA-Z0-9_]+)/\2/c,consts,static constants/ +--regex-Rust=/^[ \t]*(pub[ \t]+)?trait[ \t]+([a-zA-Z0-9_]+)/\2/t,traits,traits/ +--regex-Rust=/^[ \t]*(pub[ \t]+)?impl([ \t\n]*<[^>]*>)?[ \t]+(([a-zA-Z0-9_:]+)[ \t]*(<[^>]*>)?[ \t]+(for)[ \t]+)?([a-zA-Z0-9_]+)/\4 \6 \7/i,impls,trait implementations/ +--regex-Rust=/^[ \t]*macro_rules![ \t]+([a-zA-Z0-9_]+)/\1/d,macros,macro definitions/ + +--langdef=typescript +--langmap=typescript:.ts +--regex-typescript=/^[ \t]*(export)?[ \t]*class[ \t]+([a-zA-Z0-9_]+)/\2/c,classes/ +--regex-typescript=/^[ \t]*(export)?[ \t]*module[ \t]+([a-zA-Z0-9_]+)/\2/n,modules/ +--regex-typescript=/^[ \t]*(export)?[ \t]*function[ \t]+([a-zA-Z0-9_]+)/\2/f,functions/ +--regex-typescript=/^[ \t]*export[ \t]+var[ \t]+([a-zA-Z0-9_]+)/\1/v,variables/ +--regex-typescript=/^[ \t]*var[ \t]+([a-zA-Z0-9_]+)[ \t]*=[ \t]*function[ \t]*\(\)/\1/v,varlambdas/ +--regex-typescript=/^[ \t]*(export)?[ \t]*(public|private)[ \t]+(static)?[ \t]*([a-zA-Z0-9_]+)/\4/m,members/ +--regex-typescript=/^[ \t]*(export)?[ \t]*interface[ \t]+([a-zA-Z0-9_]+)/\2/i,interfaces/ +--regex-typescript=/^[ \t]*(export)?[ \t]*enum[ \t]+([a-zA-Z0-9_]+)/\2/e,enums/ +--regex-typescript=/^[ \t]*import[ \t]+([a-zA-Z0-9_]+)/\1/I,imports/ + +--langdef=elm +--langmap=elm:.elm +--regex-elm=/^module[ \t]*([A-Z][a-zA-Z0-9'_.]*)/\1/m,module/ +--regex-elm=/^type[ \t]*([A-Z][a-zA-Z0-9'_]*)./\1/t,type/ +--regex-elm=/^([a-z_][a-zA-Z0-9'_]*).*=/\1/v,function/ diff --git a/configs/.tmux.conf b/configs/.tmux.conf index 04b210c12..904c95892 100644 --- a/configs/.tmux.conf +++ b/configs/.tmux.conf @@ -1,17 +1,25 @@ -set -g default-terminal "screen-256color" -set -g mouse on +source-file "${HOME}/makersquare/tmux-themepack/powerline/block/green.tmuxtheme" + +unbind C-b +set -g prefix C-a +bind C-a send-prefix + bind-key -r -T prefix k select-pane -U bind-key -r -T prefix j select-pane -D bind-key -r -T prefix h select-pane -L bind-key -r -T prefix l select-pane -R + bind-key -r -T prefix C-k resize-p -U 2 bind-key -r -T prefix C-j resize-p -D 2 bind-key -r -T prefix C-h resize-p -L 2 bind-key -r -T prefix C-l resize-p -R 2 + bind % split-window -c "#{pane_current_path}" bind '"' split-window -h -c "#{pane_current_path}" bind c new-window -c "#{pane_current_path}" +set -g default-terminal "tmux" + diff --git a/configs/.vimrc b/configs/.vimrc new file mode 100644 index 000000000..b5bb7241c --- /dev/null +++ b/configs/.vimrc @@ -0,0 +1,423 @@ +" -- BEGIN: Vundle config -- +set nocompatible " be iMproved, required +filetype off " required + +" set the runtime path to include Vundle and initialize +set rtp+=~/.vim/bundle/Vundle.vim +call vundle#begin() +" alternatively, pass a path where Vundle should install plugins +"call vundle#begin('~/some/path/here') + +" let Vundle manage Vundle, required +Plugin 'VundleVim/Vundle.vim' + +" The following are examples of different formats supported. +" Keep Plugin commands between vundle#begin/end. + +" Displays git information in airline. +Plugin 'tpope/vim-fugitive' + +Plugin 'Raimondi/delimitMate' + +" Autocompletion +Plugin 'Valloric/YouCompleteMe' + +" Displays git-tracked C*UD ops within gutter. +Plugin 'airblade/vim-gitgutter' +Plugin 'kien/ctrlp.vim' +Plugin 'mileszs/ack.vim' +Plugin 'pangloss/vim-javascript' +Plugin 'scrooloose/nerdtree' +Plugin 'scrooloose/syntastic' + +" Syntax Highlighting Support +Plugin 'lambdatoast/elm.vim' + +" Themes +Plugin 'sickill/vim-monokai' +Plugin 'altercation/vim-colors-solarized' + +" Executes shell commands and pipes output into new Vim buffer. +Plugin 'sjl/clam.vim' + +" Multiple cursors for simultaneous edits. +" NOTE: use to run miltiple cursors not +Plugin 'terryma/vim-multiple-cursors' + +" Visualize buffers +Plugin 'vim-airline/vim-airline' +Plugin 'vim-airline/vim-airline-themes' + + +call vundle#end() " required +filetype plugin indent on " required +" Put your non-Plugin stuff after this line +" -- END: Vundle config -- + + +" Airline Settings +" Enables the list of buffers. +let g:airline#extensions#tabline#enabled = 1 + +" Shows the filename only. +let g:airline#extensions#tabline#fnamemod = ':t' + +" Allow glyphs in airline +let g:airline_powerline_fonts = 1 + + +" It's the twenty-first century...no swaps. +set noswapfile + + +" Allow visual tab completion in command mode +set wildmenu + + +" Show Vim commands as they're being input. +set showcmd + + +" Code folding +set foldmethod=indent +set foldnestmax=10 +set nofoldenable +set foldlevel=4 + + +" Use relative line numbers +set relativenumber + + +" Opens all folds within the buffer +nnoremap ZZ zR + +" Closes all folds within the buffer +nnoremap zz zM + +" Opens all folds beneath the cursor +" NOTE: j is the character to go down +nnoremap zJ zO + +" Opens single fold beneath the cursor +" NOTE: j is the character to go down +nnoremap zj zo + +" Opens single fold beneath the cursor +" NOTE: k is the character to go down +nnoremap zK zC + +" Opens single fold beneath the cursor +" NOTE: k is the character to go down +nnoremap zk zc + + +" Changes to character. +let mapleader = " " + + +" Supports mouse interaction. +set mouse=a + + +" Highlights matches during a search. +set hlsearch + +nnoremap / :set hlsearch! + + +" Use custom-made snippets. +nnoremap ,jsfn :-1read $HOME/.vim/function_skeleton.jso + + +" backspace settings +set backspace=2 +set backspace=indent,eol,start + + +" Javascript specific variables +let g:javascript_plugin_jsdoc = 1 + +" GlobalListchars +set list +set listchars=eol:¶,trail:~,nbsp:␣ + + +" Keeps everything concealed at all times. Even when cursor is on the word. +set conceallevel=1 +set concealcursor=nvic + +" JavaScript thanks to pangloss/vim-javascript +" let g:javascript_conceal_function = "ƒ" +" match ErrorMsg /ƒ/ + + +" Ultisnips +" Track the engine. +Plugin 'SirVer/ultisnips' + +" Snippets are separated from the engine. Add this if you want them: +Plugin 'honza/vim-snippets' + +" Trigger configuration. Do not use if you use https://github.com/Valloric/YouCompleteMe. +let g:UltiSnipsExpandTrigger="" +" let g:UltiSnipsJumpForwardTrigger="" +" let g:UltiSnipsJumpBackwardTrigger="" + + +" map jk to +inoremap jk + + +" Conventional Emacs line-editor defaults +inoremap I +inoremap A + + +" Manage Vertical and Horizontal splits +nnoremap vs :vs +nnoremap vv :vs +nnoremap sp :sp +nnoremap ss :sp + + +" Move around splits with +nnoremap h h +nnoremap j j +nnoremap k k +nnoremap l l +nnoremap q q + + +" Fuzzy-find open buffer via CtrlP +nnoremap bg :CtrlPBuffer + + +" Buffer creation and management +" Buffer movement +nnoremap :1bnext +nnoremap :1bprevious + +" Buffer creation +nnoremap :enew + +" Buffer deletion +nnoremap bq :bp bd # + + +" make Y do what is intuitive given: +" D: deletes until EOL +" C: changes until EOL +" Y: (should) yank until EOL +nnoremap Y y$ + + +" flip number keys to their shift+ counterparts +nnoremap t1 t! +nnoremap t2 t@ +nnoremap t3 t# +nnoremap t4 t$ +nnoremap t5 t% +nnoremap t6 t^ +nnoremap t7 t& +nnoremap t8 t* +nnoremap t9 t( +nnoremap t0 t) + +nnoremap T1 T! +nnoremap T2 T@ +nnoremap T3 T# +nnoremap T4 T$ +nnoremap T5 T% +nnoremap T6 T^ +nnoremap T7 T& +nnoremap T8 T* +nnoremap T9 T( +nnoremap T0 T) + +nnoremap f1 f! +nnoremap f2 f@ +nnoremap f3 f# +nnoremap f4 f$ +nnoremap f5 f% +nnoremap f6 f^ +nnoremap f7 f& +nnoremap f8 f* +nnoremap f9 f( +nnoremap f0 f) + +nnoremap F1 F! +nnoremap F2 F@ +nnoremap F3 F# +nnoremap F4 F$ +nnoremap F5 F% +nnoremap F6 F^ +nnoremap F7 F& +nnoremap F8 F* +nnoremap F9 F( +nnoremap F0 F) + + +" Karate edits +nnoremap ca9 ca( +nnoremap da9 da( +nnoremap va9 va( + +nnoremap ca0 ca) +nnoremap da0 da) +nnoremap va0 va) + +nnoremap ci9 ci( +nnoremap di9 di( +nnoremap vi9 vi( + +nnoremap ci0 ci) +nnoremap di0 di) +nnoremap vi0 vi) + + +" scrolling and maintaing mouse position +nnoremap j +nnoremap k + + +" reload file after git changes +nnoremap :e + + +" -- Syntastic Settings -- +set statusline+=%#warningmsg# +set statusline+=%{SyntasticStatuslineFlag()} +set statusline+=%* + +let g:syntastic_always_populate_loc_list = 1 +let g:syntastic_auto_loc_list = 1 +let g:syntastic_check_on_open = 1 +let g:syntastic_check_on_wq = 1 +let g:syntastic_javascript_checkers = ['gjslint'] + + +" Basic settings +set number +set tabstop=2 +set expandtab +set shiftwidth=2 + +syntax enable +set background=dark +colorscheme solarized + +set t_Co=255 + + +" Support italics +highlight Comment cterm=italic + + +" Define highlighting groups +" NOTE: The ANSII aliases for colors will change when iTerm2 settings are +" changed. +highlight InterestingWord1 ctermbg=Magenta ctermfg=Black +highlight InterestingWord2 ctermbg=Blue ctermfg=Black + +" h1 highlighting +nnoremap 1 :execute '2match InterestingWord1 /\<\>/' +nnoremap x1 :execute '2match none' + +" h2 highlighting +nnoremap 2 :execute '3match InterestingWord2 /\<\>/' +nnoremap x2 :execute '3match none' + +"clear all highlighted groups +nnoremap xx :execute '2match none' :execute '3match none' hh + + +" pasteboard copy & paste +nnoremap V"+y +vnoremap "+y + +inoremap "+pa +nnoremap o"+p +vnoremap "+p + + +" Manage 80 char line limits +highlight OverLength ctermbg=White ctermfg=Black +match OverLength /\%81v.\+/ +set wrap! + + +" Toggle word-wrapping +nnoremap w :set wrap! + + +" Resize split to 10,20,...,100 chars +" Uncomment the next lines for support at those sizes. +" These bindings interfere with the highlight groups, however. +" Increases the width of a vertical split. +" nnoremap 1 :vertical resize 10 +" nnoremap 2 :vertical resize 20 +nnoremap 3 :vertical resize 30 +nnoremap 4 :vertical resize 40 +nnoremap 5 :vertical resize 50 +nnoremap 6 :vertical resize 60 +nnoremap 7 :vertical resize 70 +nnoremap 8 :vertical resize 80 +nnoremap 9 :vertical resize 90 +nnoremap 0 :vertical resize 100 + + +" Increases the height of a horizontal split. +nnoremap v1 :resize 5 +nnoremap v2 :resize 10 +nnoremap v3 :resize 15 +nnoremap v4 :resize 20 +nnoremap v5 :resize 25 +nnoremap v6 :resize 30 +nnoremap v7 :resize 35 +nnoremap v8 :resize 40 + + +" NERDTree settings +" Show hidden files by default. (Toggle with capital 'i') +let NERDTreeShowHidden=1 + +" View Directory tree with ctrl + \ +nnoremap :NERDTreeToggle + +" View open buffer location in tree. +nnoremap :NERDTreeFind + + +" BOL and EOL +nnoremap H ^ +vnoremap H ^ +nnoremap L $ +vnoremap L $ + + +" trim trailing whitespace on save +autocmd BufWritePre *.{js,py,tpl,less,html} :%s/\s\+$//e + + +" set default font and size +set guifont=Operator\ Mono:h16 + + +" CtrlP Config. +set runtimepath^=~/.vim/bundle/ctrlp.vim +" let g:ctrlp_map = '' +let g:ctrlp_cmd = 'CtrlP' + +" Maps CtrlP to leader to future-proof config. +nnoremap p :CtrlP + +" Fuzzy-finds files within cwd. +" nnoremap pf :CtrlP + +" Ignores dirs and files +let g:ctrlp_custom_ignore = { + \ 'dir': 'node_modules', + \ 'file': '\v\.(exe|dll|png|jpg|jpeg)$' +\} + diff --git a/configs/.zsh_profile b/configs/.zsh_profile index 26da66d00..f80664afc 100644 --- a/configs/.zsh_profile +++ b/configs/.zsh_profile @@ -24,7 +24,7 @@ source $HOME/pc_settings/scripts/setup_keybindings.sh # BEGIN: bindkeys bindkey "^R" history-incremental-search-backward -bindkey -M viins 'jj' vi-cmd-mode +bindkey -M viins 'jk' vi-cmd-mode # END: bindkeys # export docker env variables @@ -39,3 +39,7 @@ bindkey -M viins 'jj' vi-cmd-mode # brew install zsh-syntax-highlighting source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh +# Regain control of CLI /dev/null && \ + git pull origin master >/dev/null + + if [ ! "$?" -eq 0 ]; then + echo "Error: git pull error. Exiting." && \ + return 1 + else + echo "Done." + fi + + +# Copy vim directory to USB device. +echo -n "Copying files to external device..." && \ + pushd "$path_to_ext_device" >/dev/null && \ + rm -rf "${path_to_ext_device}/vim" &>/dev/null && \ + cp -r "${path_to_local_repo}/usbify/vim" "${path_to_ext_device}/vim" \ + &>/dev/null && \ + + if [ ! "$?" -eq 0 ]; then + echo "Error: rm or cp error. Exiting." && \ + return 1 + else + echo "Done." + fi + + +# restore the dirs to its state before running this script +popd >/dev/null && popd >/dev/null && echo "Complete." && return 0 diff --git a/usbify/vim/.vimrc b/usbify/vim/.vimrc new file mode 100644 index 000000000..151391950 --- /dev/null +++ b/usbify/vim/.vimrc @@ -0,0 +1,378 @@ +" -- BEGIN: Vundle config -- +set nocompatible " be iMproved, required +filetype off " required + +" set the runtime path to include Vundle and initialize +set rtp+=~/.vim/bundle/Vundle.vim +call vundle#begin() +" alternatively, pass a path where Vundle should install plugins +"call vundle#begin('~/some/path/here') + +" let Vundle manage Vundle, required +Plugin 'VundleVim/Vundle.vim' + +" The following are examples of different formats supported. +" Keep Plugin commands between vundle#begin/end. + +" Displays git information in airline. +Plugin 'tpope/vim-fugitive' + +Plugin 'Raimondi/delimitMate' + +" Autocompletion +Plugin 'Valloric/YouCompleteMe' + +" Displays git-tracked C*UD ops within gutter. +Plugin 'airblade/vim-gitgutter' +Plugin 'kien/ctrlp.vim' +Plugin 'mileszs/ack.vim' +Plugin 'pangloss/vim-javascript' +Plugin 'scrooloose/nerdtree' +Plugin 'scrooloose/syntastic' + +" Themes +Plugin 'sickill/vim-monokai' +Plugin 'altercation/vim-colors-solarized' + +" Executes shell commands and pipes output into new Vim buffer. +Plugin 'sjl/clam.vim' + +" Multiple cursors for simultaneous edits. +" NOTE: use to run miltiple cursors not +Plugin 'terryma/vim-multiple-cursors' + +" Visualize buffers +Plugin 'vim-airline/vim-airline' +Plugin 'vim-airline/vim-airline-themes' + + +call vundle#end() " required +filetype plugin indent on " required +" Put your non-Plugin stuff after this line +" -- END: Vundle config -- + + +" Airline Settings +" Enables the list of buffers. +let g:airline#extensions#tabline#enabled = 1 + +" Shows the filename only. +let g:airline#extensions#tabline#fnamemod = ':t' + +" Allow glyphs in airline +let g:airline_powerline_fonts = 1 + + +" It's the twenty-first century...no swaps. +set noswapfile + + +" Allow visual tab completion in command mode +set wildmenu + + +" Show Vim commands as they're being input. +set showcmd + + +" Changes to character. +let mapleader = " " + + +" Supports mouse interaction. +set mouse=a + + +" Highlights matches during a search. +set hlsearch + +nnoremap / :set hlsearch! + + +" Use custom-made snippets. +nnoremap ,jsfn :-1read $HOME/.vim/function_skeleton.jso + + +" backspace settings +set backspace=2 +set backspace=indent,eol,start + + +" Javascript specific variables +let g:javascript_plugin_jsdoc = 1 +" set foldmethod=syntax + +" GlobalListchars +set list +set listchars=eol:¶,trail:~,nbsp:␣ + + +" Keeps everything concealed at all times. Even when cursor is on the word. +set conceallevel=1 +set concealcursor=nvic + +" JavaScript thanks to pangloss/vim-javascript +" let g:javascript_conceal_function = "ƒ" +" match ErrorMsg /ƒ/ + + +" Ultisnips +" Track the engine. +Plugin 'SirVer/ultisnips' + +" Snippets are separated from the engine. Add this if you want them: +Plugin 'honza/vim-snippets' + +" Trigger configuration. Do not use if you use https://github.com/Valloric/YouCompleteMe. +let g:UltiSnipsExpandTrigger="" +" let g:UltiSnipsJumpForwardTrigger="" +" let g:UltiSnipsJumpBackwardTrigger="" + + +" map jk to +inoremap jk + + +" Conventional Emacs line-editor defaults +inoremap I +inoremap A + + +" Manage Vertical and Horizontal splits +nnoremap vs :vs +nnoremap vv :vs +nnoremap sp :sp +nnoremap ss :sp + + +" Move around splits with +nnoremap h h +nnoremap j j +nnoremap k k +nnoremap l l +nnoremap q q + + +" Fuzzy-find open buffer via CtrlP +nnoremap bg :CtrlPBuffer + + +" Buffer creation and management +" Buffer movement +nnoremap :1bnext +nnoremap :1bprevious + +" Buffer creation +nnoremap :enew + +" Buffer deletion +nnoremap bq :bp bd # + + +" make Y do what is intuitive given: +" D: deletes until EOL +" C: changes until EOL +nnoremap Y y$ + + +" flip number keys to their shift+ counterparts +nnoremap t1 t! +nnoremap t2 t@ +nnoremap t3 t# +nnoremap t4 t$ +nnoremap t5 t% +nnoremap t6 t^ +nnoremap t7 t& +nnoremap t8 t* +nnoremap t9 t( +nnoremap t0 t) + +nnoremap T1 T! +nnoremap T2 T@ +nnoremap T3 T# +nnoremap T4 T$ +nnoremap T5 T% +nnoremap T6 T^ +nnoremap T7 T& +nnoremap T8 T* +nnoremap T9 T( +nnoremap T0 T) + +nnoremap f1 f! +nnoremap f2 f@ +nnoremap f3 f# +nnoremap f4 f$ +nnoremap f5 f% +nnoremap f6 f^ +nnoremap f7 f& +nnoremap f8 f* +nnoremap f9 f( +nnoremap f0 f) + +nnoremap F1 F! +nnoremap F2 F@ +nnoremap F3 F# +nnoremap F4 F$ +nnoremap F5 F% +nnoremap F6 F^ +nnoremap F7 F& +nnoremap F8 F* +nnoremap F9 F( +nnoremap F0 F) + + +" Karate edits +nnoremap ca9 ca( +nnoremap da9 da( +nnoremap va9 va( + +nnoremap ca0 ca) +nnoremap da0 da) +nnoremap va0 va) + +nnoremap ci9 ci( +nnoremap di9 di( +nnoremap vi9 vi( + +nnoremap ci0 ci) +nnoremap di0 di) +nnoremap vi0 vi) + + +" scrolling and maintaing mouse position +nnoremap j +nnoremap k + + +" reload file after git changes +nnoremap :e + + +" -- Syntastic Settings -- +set statusline+=%#warningmsg# +set statusline+=%{SyntasticStatuslineFlag()} +set statusline+=%* + +let g:syntastic_always_populate_loc_list = 1 +let g:syntastic_auto_loc_list = 1 +let g:syntastic_check_on_open = 1 +let g:syntastic_check_on_wq = 1 +let g:syntastic_javascript_checkers = ['gjslint'] + + +" Basic settings +set number +set tabstop=2 +set expandtab +set shiftwidth=2 + +syntax enable +set background=dark +colorscheme solarized + +set t_Co=255 + + +" Support italics +highlight Comment cterm=italic + + +" Define highlighting groups +" NOTE: The ANSII aliases for colors will change when iTerm2 settings are +" changed. +highlight InterestingWord1 ctermbg=Magenta ctermfg=Black +highlight InterestingWord2 ctermbg=Blue ctermfg=Black + +" h1 highlighting +nnoremap 1 :execute '2match InterestingWord1 /\<\>/' +nnoremap x1 :execute '2match none' + +" h2 highlighting +nnoremap 2 :execute '3match InterestingWord2 /\<\>/' +nnoremap x2 :execute '3match none' + +"clear all highlighted groups +nnoremap xx :execute '2match none' :execute '3match none' hh + + +" pasteboard copy & paste +nnoremap V"+y +vnoremap "+y + +inoremap "+pa +nnoremap o"+p +vnoremap "+p + + +" Manage 80 char line limits +highlight OverLength ctermbg=White ctermfg=Black +match OverLength /\%81v.\+/ +set wrap! + + +" Toggle word-wrapping +nnoremap w :set wrap! + + +" Resize split to 10,20,...,100 chars +" Uncomment the next lines for support at those sizes. +" These bindings interfere with the highlight groups, however. +" Increases the width of a vertical split. +" nnoremap 1 :vertical resize 10 +" nnoremap 2 :vertical resize 20 +nnoremap 3 :vertical resize 30 +nnoremap 4 :vertical resize 40 +nnoremap 5 :vertical resize 50 +nnoremap 6 :vertical resize 60 +nnoremap 7 :vertical resize 70 +nnoremap 8 :vertical resize 80 +nnoremap 9 :vertical resize 90 +nnoremap 0 :vertical resize 100 + +" Increases the height of a horizontal split. +nnoremap v1 :resize 5 +nnoremap v2 :resize 10 +nnoremap v3 :resize 15 +nnoremap v4 :resize 20 +nnoremap v5 :resize 25 +nnoremap v6 :resize 30 +nnoremap v7 :resize 35 +nnoremap v8 :resize 40 + + +" View Directory tree with ctrl + \ +nnoremap :NERDTreeToggle + + +" BOL and EOL +nnoremap H ^ +vnoremap H ^ +nnoremap L $ +vnoremap L $ + + +" trim trailing whitespace on save +autocmd BufWritePre *.{js,py,tpl,html} :%s/\s\+$//e + + +" set default font and size +set guifont=Operator\ Mono:h16 + + +" CtrlP Config. +set runtimepath^=~/.vim/bundle/ctrlp.vim +" let g:ctrlp_map = '' +let g:ctrlp_cmd = 'CtrlP' + +" Maps CtrlP to leader to future-proof config. +nnoremap p :CtrlP + +" Fuzzy-finds files within cwd. +" nnoremap pf :CtrlP + +" Ignores dirs and files +let g:ctrlp_custom_ignore = { + \ 'dir': 'node_modules', + \ 'file': '\v\.(exe|dll|png|jpg|jpeg)$' +\} + diff --git a/usbify/vim/vim_point_to_usb.sh b/usbify/vim/vim_point_to_usb.sh new file mode 100755 index 000000000..7ea24fb0b --- /dev/null +++ b/usbify/vim/vim_point_to_usb.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash + +path_to_ext_device="/Volumes/usb_vim" + + +# ensure there is an external device connected and that the path to it is +# accurate. +if [ ! -d "$path_to_ext_device" ]; then + echo "No external device found at: $path_to_ext_device" + echo "Ensure that the value set for path_to_ext_device is correct." + echo "path_to_ext_device: $path_to_ext_device" + echo "Exiting." + return 1 +fi + + + +# This script toggles between local vim and a version that can be stored on an +# external device like a USB. + +# USB --> local machine +if [ -L "$HOME/.vim" ] && [ -L "$HOME/.vimrc" ]; then + echo "Pointing to USB. Toggling back to local machine..." + + # remove the symlinks + rm "$HOME/.vim" + rm "$HOME/.vimrc" + + # restore back-ups as active files + [ -d "$HOME/.vim.bak" ] && mv "$HOME/.vim.bak" "$HOME/.vim" + [ -f "$HOME/.vimrc.bak" ] && mv "$HOME/.vimrc.bak" "$HOME/.vimrc" + + echo ".vim now points to $HOME/.vim" + echo ".vimrc now points to $HOME/.vimrc" + +# local machine --> USB +else + echo "Pointing to local machine. Toggling to USB..." + + # back-up local machine's files + [ -d "$HOME/.vim" ] && mv "$HOME/.vim" "$HOME/.vim.bak" + [ -f "$HOME/.vimrc" ] && mv "$HOME/.vimrc" "$HOME/.vimrc.bak" + + # symlink .vim and .vimrc to external device + ln -s "${path_to_ext_device}/vim/.vim" "$HOME/.vim" + ln -s "${path_to_ext_device}/vim/.vimrc" "$HOME/.vimrc" + + echo ".vim now points to ${path_to_ext_device}/vim/.vim" +fi + +echo "Done." +