1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
" Setting editor defaults
set nu
syntax on
set bg=dark
set diffopt=filler,iwhite " keep files synced and ignore whitespace
set expandtab " Get rid of tabs altogether and replace with spaces
"set guioptions-=m " Remove menu from the gui
set guioptions-=T " Remove toolbar
set hidden " hide buffers instead of closing
set history=50 " keep 50 lines of command line history
set ignorecase " Do case insensitive matching
set smartcase " Ignore case only when doing a lowercase search
set incsearch " Incremental search
set linebreak " This displays long lines as wrapped at word boundries
set matchtime=10 " Time to flash the brack with showmatch
set nobackup " Don't keep a backup file
set nocompatible " Use Vim defaults (much better!)
set hlsearch " Use highlighted search (I am blind)
set t_Co=256 " Set terminal to use 256 colors
set backspace=indent,eol,start
set clipboard=unnamed " Use system clipboard for all cut/copy operations
set ruler
set foldmethod=indent
set nofen
set mouse=a
set spell spelllang=en
set wildmode=list:longest,full
set nomousehide
set sessionoptions+=resize,winpos
set listchars=tab:>-,trail:.
set list
set colorcolumn=100
" Status Line Settings
set laststatus=2 " always have status bar
set statusline=
set statusline+=%n\
set statusline+=%<%f\ %h%m%r
set statusline+=%=
set statusline+=%-14.(%l,%c%V%)\ %P
" filetypes
filetype plugin on
filetype indent on
filetype on
"Set colorscheme.
colorscheme slate
" Turn off highlighting after search
map ,, :nohl<CR>
" Remove all trailing whitespaces
map <Leader>s :%s/\s\+$//g <cr>
" toggle line number with F11 or Ctrl-L
map <F11> : set number! <cr>
map <C-L> : set number! <cr>
" Move between split windows
map O5B <C-W>j
map O5A <C-W>k
map O5D <C-W>h
map O5C <C-W>l
imap O5B <C-W>j
imap O5A <C-W>k
imap O5D <C-W>h
imap O5C <C-W>l
"Set tab to 4 spaces
set shiftwidth=4
set softtabstop=4
set tabstop=4
set smarttab
" Paste from GUI into vim and not lose indendation
" F7 to toggle paste mode
map <F7> :set invpaste<CR>
set pastetoggle=<F7>
"normal mode maps
" Switch to/from header file
map <F4> :e %:p:s,.h$,.X123X,:s,.cpp$,.h,:s,.X123X$,.cpp,<CR>
"Map \e to edit a file from the directory of the current buffer
if has("unix")
nmap <Leader>e :e <C-R>=expand("%:p:h") . "/"<CR>
else
nmap <Leader>,e :e <C-R>=expand("%:p:h") . "\\"<CR>
endif
cabbr <expr> %% expand('%:p:h')
"When editing a file, make screen display the name of the file you are editing
function! SetTitle()
if $TERM =~ "^screen"
let l:title = 'vi: ' . expand('%:t')
if (l:title != 'vi: __Tag_List__')
let l:truncTitle = strpart(l:title, 0, 15)
silent exe '!echo -e -n "\033k' . l:truncTitle . '\033\\"'
endif
endif
endfunction
" Run it every time we change buffers
autocmd BufEnter,BufFilePost * call SetTitle()
perl <<EOT
# Get the user name, should probably get the home dir...
my $home_dir = (getpwuid($<))[7];
if ( -e $home_dir ) {
my $temp_location = "$home_dir/.vim-tmp";
my $tmp_dir = $temp_location . '/vXXX';
my $swp_dir = $temp_location . '/swps';
# If the location doesn't exist, create it
mkdir $temp_location unless ( -e $temp_location );
mkdir $tmp_dir unless ( -e $tmp_dir );
mkdir $swp_dir unless ( -e $swp_dir );
# Set TMPDIR and directory to the new location
VIM::DoCommand("let \$TMPDIR = '" . $tmp_dir . "'") if ( -w $tmp_dir );
VIM::DoCommand("set directory=" . $swp_dir) if ( -w $swp_dir );
}
EOT
" Scratch Plugin
let g:scratchBackupFile="/tmp/scratch.txt"
iab --> →
" Quicker compile & check
map <C-x> :silent make<Enter>:copen<Enter><C-w><C-w>:redraw<Enter>
" Load host-specific settings
set runtimepath^=~/.host-specific/vim,
set runtimepath+=~/.host-specific/vim/after
source ~/.host-specific/vimrc
|