vimrc 3.4 KB

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