diff --git a/.vimrc.un~ b/.vimrc.un~ new file mode 100644 index 0000000..f2c676e Binary files /dev/null and b/.vimrc.un~ differ diff --git a/vimrc b/vimrc index 04c4899..2dc53e2 100644 --- a/vimrc +++ b/vimrc @@ -1,60 +1,238 @@ -" An example for a vimrc file. -" -" Maintainer: Bram Moolenaar -" Last change: 2016 Mar 25 -" -" To use it, copy it to -" for Unix and OS/2: ~/.vimrc -" for Amiga: s:.vimrc -" for MS-DOS and Win32: $VIM\_vimrc -" for OpenVMS: sys$login:.vimrc -" When started as "evim", evim.vim will already have done these settings. -if v:progname =~? "evim" - finish -endif +" makes use of marker ' -" Use Vim settings, rather than Vi settings (much better!). -" This must be first, because it changes other options as a side effect. -set nocompatible - -" allow backspacing over everything in insert mode -set backspace=indent,eol,start - -if has("vms") - set nobackup " do not keep a backup file, use versions instead -else - set backup " keep a backup file (restore to previous version) - set undofile " keep an undo file (undo changes after closing) -endif -set history=50 " keep 50 lines of command line history -set ruler " show the cursor position all the time -set showcmd " display incomplete commands -set incsearch " do incremental searching - -" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries -" let &guioptions = substitute(&guioptions, "t", "", "g") - -" Don't use Ex mode, use Q for formatting -map Q gq - -" CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo, -" so that you can undo CTRL-U after inserting a line break. -inoremap u - -" In many terminal emulators the mouse works just fine, thus enable it. +" some conditional configs if has('mouse') set mouse=a endif - -" Switch syntax highlighting on, when the terminal has colors -" Also switch on highlighting the last used search pattern. if &t_Co > 2 || has("gui_running") syntax on - set hlsearch + set hlsearch "Highlight search results endif -" Only do this part when compiled with support for autocommands. +set nocompatible +"""""""""""""""" +set history=50 " keep 50 lines of command line history +set nonumber " Switch these two if it proves to be annoying +set relativenumber +set langmenu=en_UK +let $LANG = 'en_UK' +source $VIMRUNTIME/delmenu.vim +source $VIMRUNTIME/menu.vim +set guioptions-=r +set guioptions-=R +set guioptions-=l +set guioptions-=L +colorscheme slate +set gfn=Courier_New:h12:cANSI +try +" set undodir=~/.vim_runtime/temp_dirs/undodir + set undodir=C:\vim\undodir + set undofile +catch +endtry +filetype plugin on +filetype indent on +set ruler +set backspace=eol,start,indent +set path+=** " Enable fuzzy search " STAAAAAARS +set wildmenu "Menu for tab completion +set enc=utf8 + +" Search Stuff +set ignorecase +set smartcase +noh +set incsearch +set lazyredraw +set magic "Who doesn't want to be a vim-wizard? +set showmatch + +" Backup and file stuff +set nobackup +set nowb +set noswapfile + +" Indentation, etc. +set tabstop=2 +set softtabstop=2 +set shiftwidth=2 +set noexpandtab +set smarttab +set autoindent +set smartindent + +set smarttab +set shiftwidth=2 +set gdefault + +set wrap +" au BufEnter,BufRead * set linebreak +set breakat=\ .,{ +set display+=lastline +set showbreak=+->\ +set listchars=eol:¶,tab:»\ ,trail:. + +set modeline " Allows setting vim options in other files +set statusline=(%n)\ %f\ [%M%R]\ [%Y]%=%l,%c%V\ %4.P +set laststatus=2 +set cmdheight=1 +set timeoutlen=600 + +" Clipboard and Copy/Paste things +set clipboard=unnamed " Allow copying to and from OS clipboard +noremap d "_d +noremap d "_d +noremap x "_x +noremap x x + +" === GENERAL KEY MAPPINGS === +let mapleader = "\\" +noremap : +noremap @: +noremap Q @q +nnoremap gQ +noremap :w +noremap :hide +noremap :close +nnoremap :bnext +nnoremap :bprevious +noremap :setl number! +noremap :setl relativenumber! +noremap :setl autowriteall!:setl autowriteall? +noremap :setl list! +nnoremap :retab! +nnoremap :setl expandtab!:set expandtab? +nnoremap ge +nnoremap gE +com! Setwd :cd %:p:h +com! Removetrailingspaces :%s/\v(\\@t :Removetrailingspaces +nnoremap :copy . +nnoremap dx 0"_d$ +nnoremap dcx 0d$ + +" Empty Lines +nnoremap o +nnoremap O + +" Color Stuff +nnoremap :colorscheme slate +nnoremap :colorscheme desert +nnoremap :colorscheme blue +nnoremap :colorscheme ron + +nnoremap :colorscheme peachpuff +nnoremap :colorscheme morning +nnoremap :colorscheme delek +nnoremap :colorscheme shine + +nnoremap :colorscheme elflord +nnoremap :colorscheme murphy +nnoremap :colorscheme torte +nnoremap :call Randomcolor() + +" Markdown Stuff +vnoremap * `>a*` +vnoremap _ `>a__` + +" === GENERAL ABBREVIATIONS === +cabbr %% expand('%:p:h') +digraph <3 9829 +digraph ue 252 +digraph UE 220 +digraph ae 228 +digraph AE 196 +digraph oe 246 +digraph OE 214 +digraph ss 223 + +" === GENERAL AUTOCOMMANDS === + +nnoremap h :call toggleWUC() +function! s:updateWUC() + if exists("b:hlwuc") + if b:hlwuc > 1 + call matchdelete(b:hlwuc) + end + end + let b:hlwuc = matchadd("Underlined", expand("")) +endfunc +function! s:toggleWUC() + augroup hlwuc + if exists("b:hlwuc") + autocmd! + if b:hlwuc > 1 + call matchdelete(b:hlwuc) + end + unlet b:hlwuc + else + call updateWUC() + autocmd CursorMoved call updateWUC() + autocmd CursorMovedI call updateWUC() + endif + augroup END +endfunction + +function! Autosave() + if &autowriteall==1 + silent w + echo "Lost focus, buffer saved." + endif +endfunction +au FocusLost * call Autosave() +au WinLeave * call Autosave() + +augroup filecolors +autocmd! +" au BufLeave * :colorscheme slate +" au BufEnter *.rb :colorscheme desert +" au BufEnter *.txt :colorscheme morning +" au BufEnter *.vim,.vimrc,_vimrc :colorscheme morning +augroup end + +let s:colors=['slate', 'desert', 'blue', 'ron', 'elflord', 'murphy', 'torte'] +function! Randomcolor() + let random = localtime() % len(s:colors) + execute "colorscheme ".s:colors[random] +endfunction +call Randomcolor() + +vnoremap g :call GrepOperator(visualmode()) +nnoremap g :set operatorfunc=GrepOperatorg@ +function! s:GrepOperator(type) + let reg1 = @@ + if a:type==# 'v' + execute "normal! `y" + elseif a:type==# 'char' + execute "normal! `[y`]" + else + return + end + echom "vimgrep! /\\M".escape(@@, "\\")."/ *" + silent! execute "vimgrep /\\M".escape(@@, "\\")."/j *" + let @@ = reg1 + copen + set nowrap +endfunction + +" Window Height stuff +function! SetWinMinHeight(num) + execute "set winminheight=".0 + execute "set winheight=".(a:num+1) + execute "set winminheight=".a:num + execute "set winheight=".9999 +endfunc +call SetWinMinHeight(2) +function! AddWinMinHeight(num) + let a:new = &winminheight + a:num + call SetWinMinHeight(a:new) + set winminheight? +endfunc +nnoremap = :call AddWinMinHeight(1) +nnoremap - :call AddWinMinHeight(-1) + + if has("autocmd") " Enable file type detection. @@ -79,79 +257,44 @@ if has("autocmd") \ endif augroup END - -else - - set autoindent " always set autoindenting on - -endif " has("autocmd") - -" Convenient command to see the difference between the current buffer and the -" file it was loaded from, thus the changes you made. -" Only define it when not defined already. -if !exists(":DiffOrig") - command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis - \ | wincmd p | diffthis endif -if has('langmap') && exists('+langnoremap') - " Prevent that the langmap option applies to characters that result from a - " mapping. If unset (default), this may break plugins (but it's backward - " compatible). - set langnoremap -endif +" === FILETYPE SPECIFIC STUFF === +" Vimscript Stuff +au BufNewFile,BufRead .vimrc,_vimrc,*.vim :nnoremap :so % +au BufNewFile,BufRead .vimrc,_vimrc,*.vim :nnoremap c A" +au BufNewFile,BufRead *.c,*.cpp,*.h,*.hpp :nnoremap ; m'$a;`' -" Add optional packages. -" -" The matchit plugin makes the % command work better, but it is not backwards -" compatible. -"packadd +" Ruby Stuff +au BufNewFile,BufRead *.rb setl expandtab +au BufNewFile,BufRead *.rb nnoremap :w:!ruby % +au BufNewFile,BufRead *.rb nnoremap :w:!ruby -wc % +au BufNewFile,BufRead *.rb setl foldmethod=syntax +au BufNewFile,BufRead *.rb folddoclosed foldopen +au BufNewFile,BufRead *.diff setl foldmethod=diff +au BufNewFile,BufRead *.rb :nnoremap C :call RubyComment(0) +au BufNewFile,BufRead *.rb :nnoremap c :call RubyComment(1) +au BufNewFile,BufRead *.rb :vnoremap C :call RubyComment(0) +au BufNewFile,BufRead *.rb :vnoremap c :call RubyComment(1) +function! s:RubyComment(a) + if a:a==0 + silent! exec '.s/\m^\s*\zs#*//' + elseif a:a==1 + silent! exec '.s/\v^(\s*#)@!/#/' + end +endfunction -" CUSTOM STUFF -noremap : -noremap @: -noremap :w -noremap :bdelete -noremap :bnext -noremap :bprevious -set bg=dark -set number -" Filetype stuff -au BufNewFile,BufRead *.etlua set filetype=html -" some options -set path+=** "Enable fuzzy search -set wildmenu "Menu for tab completion -set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab -set t_Co=256 -" Remapping some things -vmap :fold -" nmap :bprevious -noremap : -nnoremap :w -nnoremap :bdelete -nnoremap :bnext -nnoremap :bprevious -" Retab mappings -nnoremap :retab! -nnoremap :setl expandtab!:set expandtab? -noremap :setl number! -noremap :setl relativenumber! -noremap :setl autowriteall!:setl autowriteall? -noremap :setl list! -set listchars=eol:¶,tab:»\ ,trail:. -set showbreak=+->\ -" Commands -com! Setwd :cd %:p:h -com! Removetrailingspaces :%s/\ \+$//ge -nmap t :Removetrailingspaces -set statusline=(%n)\ %f\ [%M%R]\ [%Y]%=%l,%c%V\ %4.P -set laststatus=2 -set cmdheight=1 -set winheight=10 -set winminheight=4 -set winheight=9999 -set timeoutlen=300 -let mapleader = "\\" -nnoremap :copy . +augroup rbindent +autocmd! + au BufNewFile,BufRead *.rb :set noexpandtab + au BufNewFile,BufRead *.rb :retab! + + au BufWritePre *.rb :set expandtab + au BufWritePre *.rb :set tabstop=2 " TODO: find a way to change it back to whatever it was before + au BufWritePre *.rb :retab + + au BufWritepost *.rb :set noexpandtab + au BufWritepost *.rb :retab! +augroup END diff --git a/vimrc~ b/vimrc~ new file mode 100644 index 0000000..04c4899 --- /dev/null +++ b/vimrc~ @@ -0,0 +1,157 @@ +" An example for a vimrc file. +" +" Maintainer: Bram Moolenaar +" Last change: 2016 Mar 25 +" +" To use it, copy it to +" for Unix and OS/2: ~/.vimrc +" for Amiga: s:.vimrc +" for MS-DOS and Win32: $VIM\_vimrc +" for OpenVMS: sys$login:.vimrc + +" When started as "evim", evim.vim will already have done these settings. +if v:progname =~? "evim" + finish +endif + +" Use Vim settings, rather than Vi settings (much better!). +" This must be first, because it changes other options as a side effect. +set nocompatible + +" allow backspacing over everything in insert mode +set backspace=indent,eol,start + +if has("vms") + set nobackup " do not keep a backup file, use versions instead +else + set backup " keep a backup file (restore to previous version) + set undofile " keep an undo file (undo changes after closing) +endif +set history=50 " keep 50 lines of command line history +set ruler " show the cursor position all the time +set showcmd " display incomplete commands +set incsearch " do incremental searching + +" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries +" let &guioptions = substitute(&guioptions, "t", "", "g") + +" Don't use Ex mode, use Q for formatting +map Q gq + +" CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo, +" so that you can undo CTRL-U after inserting a line break. +inoremap u + +" In many terminal emulators the mouse works just fine, thus enable it. +if has('mouse') + set mouse=a +endif + +" Switch syntax highlighting on, when the terminal has colors +" Also switch on highlighting the last used search pattern. +if &t_Co > 2 || has("gui_running") + syntax on + set hlsearch +endif + +" Only do this part when compiled with support for autocommands. +if has("autocmd") + + " Enable file type detection. + " Use the default filetype settings, so that mail gets 'tw' set to 72, + " 'cindent' is on in C files, etc. + " Also load indent files, to automatically do language-dependent indenting. + filetype plugin indent on + + " Put these in an autocmd group, so that we can delete them easily. + augroup vimrcEx + au! + + " For all text files set 'textwidth' to 78 characters. + autocmd FileType text setlocal textwidth=78 + + " When editing a file, always jump to the last known cursor position. + " Don't do it when the position is invalid or when inside an event handler + " (happens when dropping a file on gvim). + autocmd BufReadPost * + \ if line("'\"") >= 1 && line("'\"") <= line("$") | + \ exe "normal! g`\"" | + \ endif + + augroup END + +else + + set autoindent " always set autoindenting on + +endif " has("autocmd") + +" Convenient command to see the difference between the current buffer and the +" file it was loaded from, thus the changes you made. +" Only define it when not defined already. +if !exists(":DiffOrig") + command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis + \ | wincmd p | diffthis +endif + +if has('langmap') && exists('+langnoremap') + " Prevent that the langmap option applies to characters that result from a + " mapping. If unset (default), this may break plugins (but it's backward + " compatible). + set langnoremap +endif + + +" Add optional packages. +" +" The matchit plugin makes the % command work better, but it is not backwards +" compatible. +"packadd + + +" CUSTOM STUFF +noremap : +noremap @: +noremap :w +noremap :bdelete +noremap :bnext +noremap :bprevious +set bg=dark +set number +" Filetype stuff +au BufNewFile,BufRead *.etlua set filetype=html +" some options +set path+=** "Enable fuzzy search +set wildmenu "Menu for tab completion +set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab +set t_Co=256 +" Remapping some things +vmap :fold +" nmap :bprevious +noremap : +nnoremap :w +nnoremap :bdelete +nnoremap :bnext +nnoremap :bprevious +" Retab mappings +nnoremap :retab! +nnoremap :setl expandtab!:set expandtab? +noremap :setl number! +noremap :setl relativenumber! +noremap :setl autowriteall!:setl autowriteall? +noremap :setl list! +set listchars=eol:¶,tab:»\ ,trail:. +set showbreak=+->\ +" Commands +com! Setwd :cd %:p:h +com! Removetrailingspaces :%s/\ \+$//ge +nmap t :Removetrailingspaces +set statusline=(%n)\ %f\ [%M%R]\ [%Y]%=%l,%c%V\ %4.P +set laststatus=2 +set cmdheight=1 +set winheight=10 +set winminheight=4 +set winheight=9999 +set timeoutlen=300 +let mapleader = "\\" +nnoremap :copy .