Created
August 16, 2011 16:22
-
-
Save rweald/1149468 to your computer and use it in GitHub Desktop.
Custom GVim config without peepopen
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if has("gui_macvim") | |
" Fullscreen takes up entire screen | |
set fuoptions=maxhorz,maxvert | |
" Command-T for CommandT | |
macmenu &File.New\ Tab key=<D-T> | |
map <D-t> :CommandT<CR> | |
imap <D-t> <Esc>:CommandT<CR> | |
" Command-Return for fullscreen | |
macmenu Window.Toggle\ Full\ Screen\ Mode key=<D-CR> | |
" Command-Shift-F for Ack | |
map <D-F> :Ack<space> | |
" Command-e for ConqueTerm | |
map <D-e> :call StartTerm()<CR> | |
" Command-/ to toggle comments | |
map <D-/> <plug>NERDCommenterToggle<CR> | |
" Command-][ to increase/decrease indentation | |
vmap <D-]> >gv | |
vmap <D-[> <gv | |
" Map Command-# to switch tabs | |
map <D-0> 0gt | |
imap <D-0> <Esc>0gt | |
map <D-1> 1gt | |
imap <D-1> <Esc>1gt | |
map <D-2> 2gt | |
imap <D-2> <Esc>2gt | |
map <D-3> 3gt | |
imap <D-3> <Esc>3gt | |
map <D-4> 4gt | |
imap <D-4> <Esc>4gt | |
map <D-5> 5gt | |
imap <D-5> <Esc>5gt | |
map <D-6> 6gt | |
imap <D-6> <Esc>6gt | |
map <D-7> 7gt | |
imap <D-7> <Esc>7gt | |
map <D-8> 8gt | |
imap <D-8> <Esc>8gt | |
map <D-9> 9gt | |
imap <D-9> <Esc>9gt | |
endif | |
" Start without the toolbar | |
set guioptions-=T | |
" Default gui color scheme | |
color blackpearl2 | |
" ConqueTerm wrapper | |
function StartTerm() | |
execute 'ConqueTerm ' . $SHELL . ' --login' | |
setlocal listchars=tab:\ \ | |
endfunction | |
" Project Tree | |
"autocmd VimEnter * call s:CdIfDirectory(expand("<amatch>")) | |
autocmd FocusGained * call s:UpdateNERDTree() | |
autocmd WinEnter * call s:CloseIfOnlyNerdTreeLeft() | |
" Close all open buffers on entering a window if the only | |
" buffer that's left is the NERDTree buffer | |
function s:CloseIfOnlyNerdTreeLeft() | |
if exists("t:NERDTreeBufName") | |
if bufwinnr(t:NERDTreeBufName) != -1 | |
if winnr("$") == 1 | |
q | |
endif | |
endif | |
endif | |
endfunction | |
" If the parameter is a directory, cd into it | |
function s:CdIfDirectory(directory) | |
let explicitDirectory = isdirectory(a:directory) | |
let directory = explicitDirectory || empty(a:directory) | |
if explicitDirectory | |
exe "cd " . a:directory | |
endif | |
if directory | |
NERDTree | |
wincmd p | |
bd | |
endif | |
if explicitDirectory | |
wincmd p | |
endif | |
endfunction | |
" NERDTree utility function | |
function s:UpdateNERDTree(...) | |
let stay = 0 | |
if(exists("a:1")) | |
let stay = a:1 | |
end | |
if exists("t:NERDTreeBufName") | |
let nr = bufwinnr(t:NERDTreeBufName) | |
if nr != -1 | |
exe nr . "wincmd w" | |
exe substitute(mapcheck("R"), "<CR>", "", "") | |
if !stay | |
wincmd p | |
end | |
endif | |
endif | |
if exists(":CommandTFlush") == 2 | |
CommandTFlush | |
endif | |
endfunction | |
" Utility functions to create file commands | |
function s:CommandCabbr(abbreviation, expansion) | |
execute 'cabbrev ' . a:abbreviation . ' <c-r>=getcmdpos() == 1 && getcmdtype() == ":" ? "' . a:expansion . '" : "' . a:abbreviation . '"<CR>' | |
endfunction | |
function s:FileCommand(name, ...) | |
if exists("a:1") | |
let funcname = a:1 | |
else | |
let funcname = a:name | |
endif | |
execute 'command -nargs=1 -complete=file ' . a:name . ' :call ' . funcname . '(<f-args>)' | |
endfunction | |
function s:DefineCommand(name, destination) | |
call s:FileCommand(a:destination) | |
call s:CommandCabbr(a:name, a:destination) | |
endfunction | |
" Public NERDTree-aware versions of builtin functions | |
function ChangeDirectory(dir, ...) | |
execute "cd " . a:dir | |
let stay = exists("a:1") ? a:1 : 1 | |
NERDTree | |
if !stay | |
wincmd p | |
endif | |
endfunction | |
function Touch(file) | |
execute "!touch " . a:file | |
call s:UpdateNERDTree() | |
endfunction | |
function Remove(file) | |
let current_path = expand("%") | |
let removed_path = fnamemodify(a:file, ":p") | |
if (current_path == removed_path) && (getbufvar("%", "&modified")) | |
echo "You are trying to remove the file you are editing. Please close the buffer first." | |
else | |
execute "!rm " . a:file | |
endif | |
call s:UpdateNERDTree() | |
endfunction | |
function Mkdir(file) | |
execute "!mkdir " . a:file | |
call s:UpdateNERDTree() | |
endfunction | |
function Edit(file) | |
if exists("b:NERDTreeRoot") | |
wincmd p | |
endif | |
execute "e " . a:file | |
ruby << RUBY | |
destination = File.expand_path(VIM.evaluate(%{system("dirname " . a:file)})) | |
pwd = File.expand_path(Dir.pwd) | |
home = pwd == File.expand_path("~") | |
if home || Regexp.new("^" + Regexp.escape(pwd)) !~ destination | |
VIM.command(%{call ChangeDirectory(system("dirname " . a:file), 0)}) | |
end | |
RUBY | |
endfunction | |
" Define the NERDTree-aware aliases | |
call s:DefineCommand("cd", "ChangeDirectory") | |
call s:DefineCommand("touch", "Touch") | |
call s:DefineCommand("rm", "Remove") | |
call s:DefineCommand("e", "Edit") | |
call s:DefineCommand("mkdir", "Mkdir") | |
" Include user's local vim config | |
if filereadable(expand("~/.gvimrc.local")) | |
source ~/.gvimrc.local | |
endif | |
"color solarized | |
set background=dark | |
color solarized | |
set gfn=Menlo:h15 | |
"if has("gui_macvim") | |
"macmenu &File.New\ Tab key=<nop> | |
"map <D-t> <Plug>PeepOpen | |
"end | |
set guioptions=aAce | |
set transparency=0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment