vimrc 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  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. if version >= 730
  45. set relativenumber "current line always 0 (requires 7.3 and up)
  46. endif
  47. """"""""
  48. "" UI - Code Folding
  49. """"""""""""""""""""""""""""""""""""""""""""""""""""""""
  50. "set foldmethod=indent
  51. "set foldlevel=5
  52. "set foldtext=MyFoldText()
  53. "
  54. "function! MyFoldText()
  55. " let line = getline(v:foldstart)
  56. " let indent = indent(v:foldstart)
  57. " let indentOnly = strpart(line, 0, indent-1)
  58. " let linecount = v:foldend+1 - v:foldstart
  59. " let plural = ""
  60. " if linecount != 1
  61. " let plural = "s"
  62. " endif
  63. " let foldtext = '+'.indentOnly.'... ('.linecount.' More lines)'
  64. " return foldtext
  65. "endfunction
  66. """"""""
  67. "" UI - Search
  68. """"""""""""""""""""""""""""""""""""""""""""""""""""""""
  69. set hlsearch "make searches highlighted
  70. set incsearch "vim will search as you type!
  71. set ignorecase
  72. """"""""
  73. "" Key Remaps and Shortcuts
  74. """"""""""""""""""""""""""""""""""""""""""""""""""""""""
  75. let mapleader = "," "Leader key lets you make more kinds of shortcuts!
  76. " More convenient escape
  77. imap ii <Esc>
  78. imap II <Esc>
  79. " Add extra lines up and down
  80. map <leader>j o<Esc>k
  81. map <leader>k O<Esc>j
  82. """"""""
  83. "" Key Remaps - Movement and Windows
  84. """"""""""""""""""""""""""""""""""""""""""""""""""""""""
  85. " Smart way to move btw. windows
  86. map <C-j> <C-W>j
  87. map <C-k> <C-W>k
  88. map <C-h> <C-W>h
  89. map <C-l> <C-W>l
  90. " window resizing
  91. noremap + <C-w>10+
  92. noremap - <C-w>10-
  93. " mapping to make movements operate on 1 screen line in wrap mode
  94. function! ScreenMovement(movement)
  95. if &wrap
  96. return "g" . a:movement
  97. else
  98. return a:movement
  99. endif
  100. endfunction
  101. onoremap <silent> <expr> j ScreenMovement("j")
  102. onoremap <silent> <expr> k ScreenMovement("k")
  103. onoremap <silent> <expr> 0 ScreenMovement("0")
  104. onoremap <silent> <expr> ^ ScreenMovement("^")
  105. onoremap <silent> <expr> $ ScreenMovement("$")
  106. nnoremap <silent> <expr> j ScreenMovement("j")
  107. nnoremap <silent> <expr> k ScreenMovement("k")
  108. nnoremap <silent> <expr> 0 ScreenMovement("0")
  109. nnoremap <silent> <expr> ^ ScreenMovement("^")
  110. nnoremap <silent> <expr> $ ScreenMovement("$")</expr></silent>