summaryrefslogtreecommitdiff
path: root/.config/vim/.vimrc
blob: 3236d8768d05fd23cb3f8f1e02c9f3f8a9f5ccd5 (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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
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
set scrolloff=8             " Keep the cursor in the middle
set completeopt=menuone,noinsert " Make autocomplete in Python usable

" 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,pl
colorscheme pablo       " Change colorscheme

" 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 %

" Run .py files automatically
autocmd FileType python map <F5> :w<CR>:!python3 %<CR>

" 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 g:pymode_doc_bind = 'K'
let g:pymode_rope = 1
let g:pymode_rope_autoimport = 1
let g:pymode_rope_lookup_project = 1
let g:pymode_rope_project_root = "."
let g:pymode_rope_folder = ".ropeproject"
let g:pymode_rope_completion = 1
let g:pymode_rope_complete_on_dot = 1

let maplocalleader = '\'

" fzy integration
function! FzyCommand(choice_command, vim_command)
  try
    let output = system(a:choice_command . " | fzy ")
  catch /Vim:Interrupt/
    " Swallow errors from ^C, allow redraw! below
  endtry
  redraw!
  if v:shell_error == 0 && !empty(output)
    exec a:vim_command . ' ' . output
  endif
endfunction

nnoremap <leader>e :call FzyCommand("ag . --silent -l -g ''", ":e")<cr>
nnoremap <leader>v :call FzyCommand("ag . --silent -l -g ''", ":vs")<cr>
nnoremap <leader>s :call FzyCommand("ag . --silent -l -g ''", ":sp")<cr>