vimrc 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. """"""""
  2. "" Plugin Loading with Pathogen
  3. """""""""""""""""""""""""""""""""""""""""""""""""""
  4. call pathogen#infect()
  5. """"""""
  6. "" General Behaviours
  7. """""""""""""""""""""""""""""""""""""""""""""""""""
  8. set nocompatible "Don't have to try to be compatible with old vi
  9. set autoread "Read a file if it's changed from outside of vim
  10. set splitbelow "New splits appear below current window instead of above
  11. set ttyfast "Smooth movement
  12. " Enable filetype specific features
  13. filetype plugin on
  14. filetype indent on
  15. if version >= 700
  16. set mouse=a "mouse support for 7.x
  17. endif
  18. " Source the vimrc file after saving it
  19. autocmd! bufwritepost .vimrc source $MYVIMRC
  20. """"""""
  21. "" Formatting
  22. """"""""""""""""""""""""""""""""""""""""""""""""""""""
  23. set tabstop=4 "actual tab press distance
  24. set shiftwidth=4 "for autoindent
  25. set softtabstop=4 " let backspace delete indent
  26. set expandtab "change to single spaces
  27. set autoindent "use last line to set next indent
  28. set smartindent "guess harder, based on C-like language
  29. set wrap lbr "wrap long lines of text
  30. set backspace=eol,start,indent "backspace over everything
  31. """"""""
  32. "" UI - Colours
  33. """"""""""""""""""""""""""""""""""""""""""""""""""""""
  34. syntax on
  35. colorscheme desert
  36. hi Folded ctermfg=darkred "set colour for folded lines
  37. if version >= 730
  38. set colorcolumn=80
  39. endif
  40. """"""""
  41. "" UI - Numbering
  42. """"""""""""""""""""""""""""""""""""""""""""""""""""""""
  43. set number "show line numbers
  44. set ruler "show row,col count in status line
  45. set rulerformat=%20(%2*%<%f%=\ %m%r\ %3l\ %c\ %p%%%)>)
  46. set laststatus=2 "always show a status line
  47. if version >= 730
  48. set relativenumber "current line always 0 (requires 7.3 and up)
  49. endif
  50. """"""""
  51. "" UI - Code Folding
  52. """"""""""""""""""""""""""""""""""""""""""""""""""""""""
  53. "set foldmethod=indent
  54. "set foldlevel=5
  55. "set foldtext=MyFoldText()
  56. "
  57. "function! MyFoldText()
  58. " let line = getline(v:foldstart)
  59. " let indent = indent(v:foldstart)
  60. " let indentOnly = strpart(line, 0, indent-1)
  61. " let linecount = v:foldend+1 - v:foldstart
  62. " let plural = ""
  63. " if linecount != 1
  64. " let plural = "s"
  65. " endif
  66. " let foldtext = '+'.indentOnly.'... ('.linecount.' More lines)'
  67. " return foldtext
  68. "endfunction
  69. """"""""
  70. "" UI - Search
  71. """"""""""""""""""""""""""""""""""""""""""""""""""""""""
  72. set hlsearch "make searches highlighted
  73. set incsearch "vim will search as you type!
  74. set ignorecase
  75. set magic "enables wildcard searching
  76. """"""""
  77. "" Key Remaps and Shortcuts
  78. """"""""""""""""""""""""""""""""""""""""""""""""""""""""
  79. let mapleader = "," "Leader key lets you make more kinds of shortcuts!
  80. " More convenient escape
  81. imap ii <Esc>
  82. imap II <Esc>
  83. " Add extra lines up and down
  84. map <leader>j o<Esc>k
  85. map <leader>k O<Esc>j
  86. """"""""
  87. "" Key Remaps - Movement and Windows
  88. """"""""""""""""""""""""""""""""""""""""""""""""""""""""
  89. " Smart way to move btw. windows
  90. map <C-j> <C-W>j
  91. map <C-k> <C-W>k
  92. map <C-h> <C-W>h
  93. map <C-l> <C-W>l
  94. " window resizing
  95. noremap + <C-w>10+
  96. noremap - <C-w>10-
  97. " mapping to make movements operate on 1 screen line in wrap mode
  98. function! ScreenMovement(movement)
  99. if &wrap
  100. return "g" . a:movement
  101. else
  102. return a:movement
  103. endif
  104. endfunction
  105. onoremap <silent> <expr> j ScreenMovement("j")
  106. onoremap <silent> <expr> k ScreenMovement("k")
  107. onoremap <silent> <expr> 0 ScreenMovement("0")
  108. onoremap <silent> <expr> ^ ScreenMovement("^")
  109. onoremap <silent> <expr> $ ScreenMovement("$")
  110. nnoremap <silent> <expr> j ScreenMovement("j")
  111. nnoremap <silent> <expr> k ScreenMovement("k")
  112. nnoremap <silent> <expr> 0 ScreenMovement("0")
  113. nnoremap <silent> <expr> ^ ScreenMovement("^")