dot-vimrc 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. "-----------------------------------------------------------------------------
  2. " Misc configurations
  3. "-----------------------------------------------------------------------------
  4. " Turns off compability with vi. Generally a good thing, plus it should be done
  5. " first seems it resets some options. Up to now I found it does backupcopy=auto.
  6. set nocompatible
  7. " Leader key is space
  8. let mapleader = " "
  9. " Syntax file
  10. set syntax=acme
  11. " Swap and recovery file directories
  12. set backupdir=~/.vim/recovery//
  13. set directory=~/.vim/swap//
  14. " Turn on omnicompletion
  15. set omnifunc=syntaxcomplete#Complete
  16. " Other simple configurations
  17. set tabstop=4
  18. set shiftwidth=4
  19. set tw=80
  20. set smarttab
  21. set autoindent
  22. set relativenumber
  23. set autowrite
  24. " Folds
  25. set foldmethod=indent
  26. set nofoldenable
  27. " Better searching
  28. set smartcase
  29. set ignorecase
  30. set incsearch
  31. nnoremap <cr> :noh<cr>
  32. " Completion
  33. inoremap <S-tab> <C-n>
  34. " Show tab characters
  35. set listchars=tab:>-
  36. " Toggle Immersive mode
  37. nnoremap <leader>I :Immersive<CR>
  38. " Compiling
  39. nnoremap <leader>m :make<cr>
  40. " Toggle paste mode
  41. set pastetoggle=<F11>
  42. " Y copy until end of line
  43. nnoremap Y y$
  44. " Safe exit
  45. nnoremap <leader>Q :wa \| :qa<cr>
  46. " Quick global substituttion
  47. nnoremap <leader>* :%s/<c-r><c-w>//g<left><left>
  48. " Remap redo so it doesnt interfere with ratpoison
  49. nnoremap R <C-R>
  50. "-----------------------------------------------------------------------------
  51. " General movement
  52. "-----------------------------------------------------------------------------
  53. " Scrolling
  54. nnoremap <Down> 2<C-E>
  55. nnoremap <Up> 2<C-Y>
  56. " Relative movement
  57. nnoremap + :+
  58. nnoremap - :-
  59. nnoremap go <C-o>
  60. "-----------------------------------------------------------------------------
  61. " Tabs, buffers and splits
  62. "-----------------------------------------------------------------------------
  63. " Tabs
  64. nnoremap <leader>tc :tabnew<space>
  65. nnoremap <leader>tl :tabnext<cr>
  66. nnoremap <leader>th :tabprevious<cr>
  67. nnoremap <leader>tH :tabm -1<cr>
  68. nnoremap <leader>tL :tabm +1<cr>
  69. " Buffer movement
  70. nnoremap <leader>n :wn<CR>
  71. nnoremap <leader>p :wprev<CR>
  72. nnoremap <leader>l <C-w>l
  73. nnoremap <leader>h <C-w>h
  74. nnoremap <leader>k <C-w>k
  75. nnoremap <leader>j <C-w>j
  76. " Splits and windows
  77. nnoremap <leader>C :split<cr>
  78. nnoremap <leader>c :vsplit<cr>
  79. nnoremap <leader>q ZZ
  80. nnoremap <leader>+ :res +5<cr>
  81. nnoremap <leader>- :res -5<cr>
  82. nnoremap <leader>> :vertical-res +10<cr>
  83. nnoremap <leader>< :vertical-res -10<cr>
  84. "-----------------------------------------------------------------------------
  85. " Simple auto-closing symbols
  86. "-----------------------------------------------------------------------------
  87. inoremap " ""<left>
  88. inoremap ' ''<left>
  89. inoremap ( ()<left>
  90. inoremap [ []<left>
  91. inoremap { {}<left>
  92. inoremap {<space> {}<left><space><left><space>
  93. inoremap {<cr> {<cr>}<esc>O<tab>
  94. inoremap {;<cr> {<cr>};<esc>O<tab>
  95. "-----------------------------------------------------------------------------
  96. " Make '+' and '-' move lines up and down
  97. "-----------------------------------------------------------------------------
  98. fu! MoveLineUp()
  99. if line('.') == 1
  100. return
  101. endif
  102. if line('.') == line('$')
  103. norm! ddP
  104. else
  105. norm! ddkP
  106. endif
  107. endf
  108. nnoremap B :call MoveLineUp()<cr>
  109. nnoremap W ddp
  110. "-----------------------------------------------------------------------------
  111. " Netrw
  112. "-----------------------------------------------------------------------------
  113. " Configurations
  114. let g:netrw_keepdir = 0
  115. let g:netrw_winsize = 25
  116. let g:netrw_banner = 0
  117. let g:netrw_liststyle = 3
  118. " Changes to commands
  119. let g:netrw_localcopydircmd = 'cp -r'
  120. let g:netrw_localrmdir='rm -rf' " Careful with this
  121. nnoremap <leader>d :Lexplore<cr>
  122. "-----------------------------------------------------------------------------
  123. " Easy access to configs
  124. "-----------------------------------------------------------------------------
  125. " Edit and source vimrc
  126. nnoremap <leader>ec :tabedit $MYVIMRC<cr>
  127. nnoremap <leader>S :source $MYVIMRC<cr>
  128. " Edit tmux.confg
  129. nnoremap <leader>et :tabedit ~/.config/tmux/tmux.conf<cr>