diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..cc50892 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,21 @@ +[submodule "vim/autoload/vim-pathogen"] + path = vim/autoload/vim-pathogen + url = https://github.com/tpope/vim-pathogen +[submodule "vim/bundle/delimitMate"] + path = vim/bundle/delimitMate + url = https://github.com/Raimondi/delimitMate.git +[submodule "vim/bundle/vim-fugitive"] + path = vim/bundle/vim-fugitive + url = https://github.com/tpope/vim-fugitive.git +[submodule "vim/bundle/nerdtree"] + path = vim/bundle/nerdtree + url = https://github.com/scrooloose/nerdtree.git +[submodule "vim/bundle/vim-sensible"] + path = vim/bundle/vim-sensible + url = https://github.com/tpope/vim-sensible.git +[submodule "vim/bundle/vim-colors-solarized"] + path = vim/bundle/vim-colors-solarized + url = https://github.com/altercation/vim-colors-solarized.git +[submodule "vim/bundle/syntastic"] + path = vim/bundle/syntastic + url = https://github.com/scrooloose/syntastic.git diff --git a/bootstrap.sh b/bootstrap.sh index e69222e..c6f765d 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -9,6 +9,10 @@ test -L $HOME/.gitignore || ln -f -s $BASEDIR/gitignore $HOME/.gitignore test -L $HOME/.hushlogin || ln -f -s $BASEDIR/hushlogin $HOME/.hushlogin test -L $HOME/.zshrc || ln -f -s $BASEDIR/zshrc $HOME/.zshrc +# ln vim files +test -L $HOME/.vim || ln -f -s $BASEDIR/vim $HOME/.vim +test -L $HOME/.vimrc || ln -f -s $HOME/.vim/vimrc $HOME/.vimrc + # .gitconfig gets edited by .extra so we won’t symlink it, but copy it cp $BASEDIR/gitconfig $HOME/.gitconfig diff --git a/vim/autoload/pathogen.vim b/vim/autoload/pathogen.vim new file mode 120000 index 0000000..81b7254 --- /dev/null +++ b/vim/autoload/pathogen.vim @@ -0,0 +1 @@ +vim-pathogen/autoload/pathogen.vim \ No newline at end of file diff --git a/vim/autoload/vim-pathogen b/vim/autoload/vim-pathogen new file mode 160000 index 0000000..8c91196 --- /dev/null +++ b/vim/autoload/vim-pathogen @@ -0,0 +1 @@ +Subproject commit 8c91196cfd9c8fe619f35fac6f2ac81be10677f8 diff --git a/vim/bundle/delimitMate b/vim/bundle/delimitMate new file mode 160000 index 0000000..8bc47fd --- /dev/null +++ b/vim/bundle/delimitMate @@ -0,0 +1 @@ +Subproject commit 8bc47fd1c40cdad9ea1f36c0cf13592c70ea65e9 diff --git a/vim/bundle/nerdtree b/vim/bundle/nerdtree new file mode 160000 index 0000000..15445be --- /dev/null +++ b/vim/bundle/nerdtree @@ -0,0 +1 @@ +Subproject commit 15445be5fb2559829ac7a1f05af5d713586e8ec9 diff --git a/vim/bundle/syntastic b/vim/bundle/syntastic new file mode 160000 index 0000000..c2c6a07 --- /dev/null +++ b/vim/bundle/syntastic @@ -0,0 +1 @@ +Subproject commit c2c6a075113adbfcc4f1ad5b1c0200a0d35ceeb6 diff --git a/vim/bundle/vim-colors-solarized b/vim/bundle/vim-colors-solarized new file mode 160000 index 0000000..528a59f --- /dev/null +++ b/vim/bundle/vim-colors-solarized @@ -0,0 +1 @@ +Subproject commit 528a59f26d12278698bb946f8fb82a63711eec21 diff --git a/vim/bundle/vim-fugitive b/vim/bundle/vim-fugitive new file mode 160000 index 0000000..3439f99 --- /dev/null +++ b/vim/bundle/vim-fugitive @@ -0,0 +1 @@ +Subproject commit 3439f999b138254e4bb56187fc91f91f545b4b12 diff --git a/vim/bundle/vim-sensible b/vim/bundle/vim-sensible new file mode 160000 index 0000000..9e91be7 --- /dev/null +++ b/vim/bundle/vim-sensible @@ -0,0 +1 @@ +Subproject commit 9e91be7e0fb42949831fe3161ef583363648aa58 diff --git a/vim/vimrc b/vim/vimrc new file mode 100644 index 0000000..7ec5402 --- /dev/null +++ b/vim/vimrc @@ -0,0 +1,221 @@ +" URL: http://vim.wikia.com/wiki/Example_vimrc +" Authors: http://vim.wikia.com/wiki/Vim_on_Freenode +" Description: A minimal, but feature rich, example .vimrc. If you are a +" newbie, basing your first .vimrc on this file is a good choice. +" If you're a more advanced user, building your own .vimrc based +" on this file is still a good idea. + +"------------------------------------------------------------ +" Features {{{1 +" +" These options and commands enable some very useful features in Vim, that +" no user should have to live without. + +" Set 'nocompatible' to ward off unexpected things that your distro might +" have made, as well as sanely reset options when re-sourcing .vimrc +set nocompatible + +" Attempt to determine the type of a file based on its name and possibly its +" contents. Use this to allow intelligent auto-indenting for each filetype, +" and for plugins that are filetype specific. +filetype indent plugin on + +" Enable syntax highlighting +syntax on + + +"------------------------------------------------------------ +" Must have options {{{1 +" +" These are highly recommended options. + +" Vim with default settings does not allow easy switching between multiple files +" in the same editor window. Users can use multiple split windows or multiple +" tab pages to edit multiple files, but it is still best to enable an option to +" allow easier switching between files. +" +" One such option is the 'hidden' option, which allows you to re-use the same +" window and switch from an unsaved buffer without saving it first. Also allows +" you to keep an undo history for multiple files when re-using the same window +" in this way. Note that using persistent undo also lets you undo in multiple +" files even in the same window, but is less efficient and is actually designed +" for keeping undo history after closing Vim entirely. Vim will complain if you +" try to quit without saving, and swap files will keep you safe if your computer +" crashes. +set hidden + +" Note that not everyone likes working this way (with the hidden option). +" Alternatives include using tabs or split windows instead of re-using the same +" window as mentioned above, and/or either of the following options: +" set confirm +" set autowriteall + +" Better command-line completion +set wildmenu + +" Show partial commands in the last line of the screen +set showcmd + +" Highlight searches (use to temporarily turn off highlighting; see the +" mapping of below) +set hlsearch + +" Modelines have historically been a source of security vulnerabilities. As +" such, it may be a good idea to disable them and use the securemodelines +" script, . +" set nomodeline + + +"------------------------------------------------------------ +" Usability options {{{1 +" +" These are options that users frequently set in their .vimrc. Some of them +" change Vim's behaviour in ways which deviate from the true Vi way, but +" which are considered to add usability. Which, if any, of these options to +" use is very much a personal preference, but they are harmless. + +" Use case insensitive search, except when using capital letters +set ignorecase +set smartcase + +" Allow backspacing over autoindent, line breaks and start of insert action +set backspace=indent,eol,start + +" When opening a new line and no filetype-specific indenting is enabled, keep +" the same indent as the line you're currently on. Useful for READMEs, etc. +set autoindent + +" Stop certain movements from always going to the first character of a line. +" While this behaviour deviates from that of Vi, it does what most users +" coming from other editors would expect. +set nostartofline + +" Display the cursor position on the last line of the screen or in the status +" line of a window +set ruler + +" Always display the status line, even if only one window is displayed +set laststatus=2 + +" Instead of failing a command because of unsaved changes, instead raise a +" dialogue asking if you wish to save changed files. +set confirm + +" Use visual bell instead of beeping when doing something wrong +set visualbell + +" And reset the terminal code for the visual bell. If visualbell is set, and +" this line is also included, vim will neither flash nor beep. If visualbell +" is unset, this does nothing. +set t_vb= + +" Enable use of the mouse for all modes +set mouse=a + +" Set the command window height to 2 lines, to avoid many cases of having to +" "press to continue" +set cmdheight=2 + +" Display line numbers on the left +set number + +" Quickly time out on keycodes, but never time out on mappings +set notimeout ttimeout ttimeoutlen=200 + +" Use to toggle between 'paste' and 'nopaste' +set pastetoggle= + + +"------------------------------------------------------------ +" Indentation options {{{1 +" +" Indentation settings according to personal preference. + +" Indentation settings for using 4 spaces instead of tabs. +" Do not change 'tabstop' from its default value of 8 with this setup. +set shiftwidth=4 +set softtabstop=4 +set expandtab + +" Indentation settings for using hard tabs for indent. Display tabs as +" two characters wide. +"set shiftwidth=2 +"set tabstop=2 + + +"------------------------------------------------------------ +" Mappings {{{1 +" +" Useful mappings + +" Map Y to act like D and C, i.e. to yank until EOL, rather than act as yy, +" which is the default +map Y y$ + +" Map (redraw screen) to also turn off search highlighting until the +" next search +nnoremap :nohl + + +"------------------------------------------------------------ +" Personal settings +" Pathogen for plugins +execute pathogen#infect() +execute pathogen#helptags() + + +" Colour schemes +set background=dark +"let g:solarized_termtrans=1 +"let g:solarized_termcolors=256 +"let g:solarized_contrast="high" +"let g:solarized_visibilty="high" +colorscheme solarized + + +" syntastic settings from the readme +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 = 0 +" php syntastic options +" order of checking +let g:syntastic_php_checkers = ['php', 'phpcs', 'phpmd'] +let g:syntastic_php_phpcs_args = '--standard=PSR2' + +" Let’s use Vim properly, no arrow keys +nnoremap :echomsg "use k" +nnoremap :echomsg "use j" +nnoremap :echomsg "use j" +nnoremap :echomsg "use l" + +" Keymap to open NERDtree +map :NERDTreeToggle +" Autoclose when NERDtree is the last buffer +autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif +" Allow the use of `vim` to open a “project” +autocmd StdinReadPre * let s:std_in=1 +autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif +" NERDtree file highlighting +function! NERDTreeHighlightFile(extension, fg, bg, guifg, guibg) + exec 'autocmd filetype nerdtree highlight ' . a:extension .' ctermbg='. a:bg .' ctermfg='. a:fg .' guibg='. a:guibg .' guifg='. a:guifg + exec 'autocmd filetype nerdtree syn match ' . a:extension .' #^\s\+.*'. a:extension .'$#' +endfunction + +call NERDTreeHighlightFile('jade', 'green', 'none', 'green', '#151515') +call NERDTreeHighlightFile('ini', 'yellow', 'none', 'yellow', '#151515') +call NERDTreeHighlightFile('md', 'blue', 'none', '#3366FF', '#151515') +call NERDTreeHighlightFile('yml', 'yellow', 'none', 'yellow', '#151515') +call NERDTreeHighlightFile('config', 'yellow', 'none', 'yellow', '#151515') +call NERDTreeHighlightFile('conf', 'yellow', 'none', 'yellow', '#151515') +call NERDTreeHighlightFile('json', 'yellow', 'none', 'yellow', '#151515') +call NERDTreeHighlightFile('html', 'yellow', 'none', 'yellow', '#151515') +call NERDTreeHighlightFile('styl', 'cyan', 'none', 'cyan', '#151515') +call NERDTreeHighlightFile('css', 'cyan', 'none', 'cyan', '#151515') +call NERDTreeHighlightFile('coffee', 'Red', 'none', 'red', '#151515') +call NERDTreeHighlightFile('js', 'Red', 'none', '#ffa500', '#151515') +call NERDTreeHighlightFile('php', 'Magenta', 'none', '#ff00ff', '#151515')