summaryrefslogtreecommitdiff
path: root/.config/vim/.vimrc
blob: 2bad7b55c64c304c27776ceb140b7b259a0ce203 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
runtime ftplugin/man.vim

" General settings
set nocompatible             " Disable compatibility with Vi
set number                   " Show line numbers
set relativenumber           " Show relative line numbers
set title                    " Set terminal title to the file name
set bg=dark                  " Set dark background for better colors
set laststatus=2             " Show the status line with detailed info
set showmode                 " Show mode at the bottom
set noshowcmd                " Don't show partial commands at the bottom
set ruler                    " Show line/column info at the bottom

" Search and highlighting
set nohlsearch              " Disable search highlighting after search
set ignorecase              " Ignore case in search
set smartcase               " Make search case-sensitive if uppercase letters are used
set incsearch               " Incremental search as you type
set wildignore=*.o,*.obj,*.bak,*.exe " Ignore certain file types in file completion

" Indentation and formatting
set autoindent              " Enable automatic indentation
set cindent                 " Enable C-style indentation
set smartindent             " Enable smart indentation (e.g., after braces)
set nowrap                  " Disable line wrapping

" Clipboard and mouse
set clipboard+=unnamedplus  " Enable clipboard integration with system clipboard
set mouse=a                 " Enable mouse support for scrolling, selection, etc.

" Session and history
set viminfofile=~/.config/vim/.viminfo " Set the viminfo file location
set viminfo='100,<50,s10,h  " Clear Viminfo settings (no history saving)

" File paths and runtime environment
set runtimepath^=$HOME/.config/vim/.vim " Add custom runtime path for plugins and resources

" Miscellaneous settings
set go=a                     " Enable all automatic formatting options
set spelllang=en
set nospell

" Use pathogen (plugin manager)
filetype off
execute pathogen#infect()
execute pathogen#helptags()
syntax on
filetype plugin on
filetype plugin indent on

" Automatically source .vimrc after saving
autocmd BufWritePost ~/.vimrc source $MYVIMRC

" Automatically source .inputrc after saving
autocmd BufWritePost ~/.inputrc !bind -f ~/.inputrc

" Automatically deletes all trailing whitespace and newlines at end of file on save. & reset cursor position
autocmd BufWritePre * let currPos = getpos(".")
autocmd BufWritePre * %s/\s\+$//e
autocmd BufWritePre * %s/\n\+\%$//e
autocmd BufWritePre * cal cursor(currPos[1], currPos[2])

" Mappings
noremap <BS> dBx
nnoremap s o<Esc>kzz
" nnoremap S O<Esc>jzz
nnoremap S :%s//g<Left><Left>
nnoremap Y y$
nnoremap - ddp
nnoremap _ ddkP
nnoremap <C-J> "+yy
nnoremap <C-C> "+yW
nnoremap <C-K> "+p
nnoremap <space> i<space><esc>
nnoremap <silent> <F7> :tabnew ~/.vimrc<CR>
nnoremap <silent> <F8> :TlistToggle<CR>
nnoremap <silent> <F9> :NERDTree<CR>
inoremap <Space><Space> <Esc>/<++><CR>"_c4l
vnoremap <C-J> "+y

" show existing tab with 4 spaces width
set tabstop=4

" when indenting with '>', use 4 spaces width
set shiftwidth=4

" On pressing tab, insert 4 spaces
set expandtab

" Compile R Markdown files with F5
autocmd Filetype rmd map <F5> :!echo<space>"require(rmarkdown);<space>render('<c-r>%')"<space>\|<space>R<space>--vanilla<enter>

" Automatically use black on a Python file
autocmd BufWritePost *.py !black --line-length=79 %

" Pymode config
let g:pymode = 1
let g:pymode_warnings = 0
let g:pymode_trim_whitespaces = 1
let g:pymode_options = 1
let g:pymode_options_max_line_length = 79
let g:pymode_options_colorcolumn = 1
let g:pymode_indent = 1
let g:pymode_indent_hanging_width = &shiftwidth
let g:pymode_indent_hanging_width = 4
let g:pymode_doc = 1

let maplocalleader = ","