se expandtab
" And << and >> indent by 2.
se sw=2
+" Backspace deletes full tab width at the start of a line.
+se smarttab
" Allow backspace to delete before start of line.
se bs=2
+" Don't jump to the start of the line when using H, L etc.
+se nosol
+
" Show the ruler.
se ruler
" Show partial commands in the ruler.
" Use ^L to show matching completions but don't select one.
inoremap <C-l> <C-n><C-p>
+" Swap jump keys.
+noremap ' `
+noremap ` '
+
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Handle options only available in Vim 5 and above.
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" cross-platform.
se ssop+=unix,slash
+" How often do we need to use ^A/^X on octals?
+se nf=hex
+
" Nuke any pre-existing autocommands.
augroup Display
autocmd!
if bufname("") == ""
let l:ts1='Vim'
else
- let l:ts1=printf("%2d: %s", bufnr(""), expand('%t'))
+ " Vim 5 doesn't have printf.
+ let l:ts1=bufnr("")
+ if l:ts1 < 10
+ let l:ts1=" " . l:ts1
+ endif
+ let l:ts1=l:ts1 . ": " . expand('%t')
endif
- return printf("%s (%s) %s", l:ts1, getcwd(), v:servername)
+ let l:ts1=l:ts1 . " (" . getcwd() . ")"
+ if has("clientserver")
+ let l:ts1=l:ts1 . " " . v:servername
+ endif
+ return l:ts1
endfun
" Show the status line.
" Show numbers by default.
au Display VimEnter * if ! Uncluttered_Buffer() | call Number(0) | endif
+
+" Position the compview plugin window.
+au Display BufEnter -SearchResults- set buftype=nowrite | set nonumber | wincmd J
endif
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
if version >= "600"
version 6.0
+if has("win32")
+ se encoding=utf-8
+endif
+
" Remember quickfix state.
let g:quickfixing=0
if g:marksigns
" Signs to highlight marks.
" Syntax won't work properly in Vim 6.
- sign define MarkDash text=' texthl=MarkSign
- sign define MarkDot text=* texthl=MarkDot
- sign define MarkQuote text=" texthl=MarkSign
+ if <SID>Has_Unicode()
+ sign define MarkDash text=’ texthl=MarkSign
+ sign define MarkDot text=• texthl=MarkDot
+ sign define MarkQuote text=” texthl=MarkSign
+ else
+ sign define MarkDash text=' texthl=MarkSign
+ sign define MarkDot text=* texthl=MarkDot
+ sign define MarkQuote text=" texthl=MarkSign
+ endif
sign define MarkCaret text=^ texthl=MarkDot
sign define MarkLess text=< texthl=MarkSign
sign define MarkGreater text=> texthl=MarkSign
endif
endfun
+fun! <SID>Has_Unicode()
+ if ! has('multi_byte')
+ return 0
+ endif
+
+ if version < "602"
+ return 0
+ endif
+
+ if &tenc =~? '^u\(tf\|cs\)'
+ return 1
+ endif
+
+ if ! strlen(&tenc) && &enc =~? '^u\(tf\|cs\)'
+ return 1
+ endif
+
+ return 0
+endfun
+
" Change list mode.
fun! Cycle_List()
- let basic='tab:\\_,trail:_,extends:<,precedes:>'
+ " Pretty UTF-8 listchars.
+ if <SID>Has_Unicode()
+ let basic='tab:»·,trail:…,extends:«,precedes:»'
+ let eol='eol:¶'
+ if version >= "700"
+ let basic=basic . ',nbsp:•'
+ endif
+ else
+ let basic='tab:\\_,trail:_,extends:<,precedes:>'
+ let eol='eol:$'
+ if version >= "700"
+ let basic=basic . ',nbsp:+'
+ endif
+ endif
call Iain_Vars()
let b:iainlist = b:iainlist + 1
if b:iainlist > 2
+ call Resize_Columns("-", 1)
let b:iainlist = 0
endif
if b:iainlist == 0
exec "set lcs=" . basic
set list
else
- exec "set lcs=" . basic . ",eol:$"
+ call Resize_Columns("+", 1)
+ exec "set lcs=" . basic . "," . eol
set list
endif
endfun