summaryrefslogtreecommitdiff
path: root/.vim/vimrc
blob: b2838254822e3d7bcafed037c907c2675a807d20 (plain)
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
143
" ===========
" VARIABLES
" ===========

set nocompatible
"Disable bell
set vb
set t_vb=

"Search in all of the project tree
"set path+=**
set wildmenu

"set ttimeoutlen=10
"let g:airline#extensions#tabline#enabled = 1
"let g:airline#extensions#branch#enabled = 1
"let g:airline#extensions#whitespace#enabled = 1
"let g:airline_powerline_fonts = 1

"show line endings and tabs
set list

" Use todo#Complete as the omni complete function for todo files
"au filetype todo setlocal omnifunc=todo#Complete
"
"" Auto complete projects
"au filetype todo imap <buffer> + +<C-X><C-O>
"
"" Auto complete contexts
"au filetype todo imap <buffer> @ @<C-X><C-O>

" leader
let mapleader = "-"
let leader = "-"
let maplocalleader = "-"

"execute pathogen#infect()
syntax on
filetype plugin indent on

"Line number Highlight
set nu
highlight LineNr term=bold cterm=NONE ctermfg=DarkGrey ctermbg=NONE gui=NONE guifg=DarkGrey guibg=NONE

set foldmethod=syntax

" ==============
" SHORTCUTS
" ==============

"Switch windows with keys
"nmap <silent> <C-w-k> :wincmd k<CR>
"nmap <silent> <C-w-j> :wincmd j<CR>
"nmap <silent> <C-w-h> :wincmd h<CR>
"nmap <silent> <C-w-l> :wincmd l<CR>

nmap <silent> <C-s> :vsplit<CR>:e .<CR>
nmap <silent> <C-e> :e .<CR>

nnoremap <silent> <Space> @=(foldlevel('.')?'za':"\<Space>")<CR>
vnoremap <Space> zf

au filetype c* nmap <silent> <F4> :Make<CR>
au filetype sh nmap <silent> <F4> :Runbuffer<CR>
au filetype python nmap <silent> <F4> :Runbuffer<CR>

nmap <silent> <F3> :Newterm<CR>

"nmap <silent> <F5> :NERDTreeToggle<CR>
"nmap <silent> <F6> :TlistToggle<CR>

"Tab mgmt
nmap <silent> gc :tabclose<CR>
nmap <silent> gn :tabnew<CR>:e .<CR>


" ===========
" COMMANDS
" ===========

command -bar InsertHeader call Fileheader()

command -bar Suw :w !SUDO_ASKPASS="/usr/lib/ssh/ssh-askpass" sudo -A  tee %

" Command HEXMODE 
command -bar Hexmode call ToggleHex()

"^] Jump to tag, ^t jump back
"command! MakeTags !ctags -R .

command -bar Newterm call Run_in_terminal("")
command -bar Runbuffer call Run_in_terminal(expand("%:p"))
command -bar Make call Run_in_terminal("make")

" ===========
" FUNCTIONS
" ===========

function Run_in_terminal(prog)
	tabnew
	execute "terminal " . a:prog
	startinsert
endfunction

" helper function to toggle hex mode
function ToggleHex()
  " hex mode should be considered a read-only operation
  " save values for modified and read-only for restoration later,
  " and clear the read-only flag for now
  let l:modified=&mod
  let l:oldreadonly=&readonly
  let &readonly=0
  let l:oldmodifiable=&modifiable
  let &modifiable=1
  if !exists("b:editHex") || !b:editHex
    " save old options
    let b:oldft=&ft
    let b:oldbin=&bin
    " set new options
    setlocal binary " make sure it overrides any textwidth, etc.
    silent :e " this will reload the file without trickeries 
              "(DOS line endings will be shown entirely )
    let &ft="xxd"
    " set status
    let b:editHex=1
    " switch to hex editor
    %!xxd
  else
    " restore old options
    let &ft=b:oldft
    if !b:oldbin
      setlocal nobinary
    endif
    " set status
    let b:editHex=0
    " return to normal editing
    %!xxd -r
  endif
  " restore values for modified and read only state
  let &mod=l:modified
  let &readonly=l:oldreadonly
  let &modifiable=l:oldmodifiable
endfunction