You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

118 lines
2.7 KiB
Plaintext

" vim:ft=vim:fenc=utf-8:fdm=marker
"" Difference between all the different maps:
"" https://stackoverflow.com/questions/3776117/what-is-the-difference-between-the-remap-noremap-nnoremap-and-vnoremap-mapping
"" Ideavim actionlist:
"" https://gist.github.com/zchee/9c78f91cc5ad771c1f5d
"" List of supported plugins:
"" https://github.com/JetBrains/ideavim/wiki/Emulated-plugins
"" https://betterprogramming.pub/the-essential-ideavim-plugins-f939b4325180
let mapleader = " "
"" Emulated plugins
" use 'c|d|yia' to c|d|y inner arguments
set argtextobj
set commentary
set highlightedyank
set NERDTree
set surround
set textobj-entire
set which-key
"" Options
set notimeout
set smartcase
set incsearch
set relativenumber
set number
set ideajoin
set showcmd
set showmode
" Stay in the mode in which the editing started
set idearefactormode=keep
" No annoying sound on errors
set visualbell
set tm=500
"" Mappings
" 0 -> first non-blank character
map 0 ^
" Center buffer when navigating
" nmap <C-u> <C-u>zz
" nmap <C-d> <C-d>zz
nmap n nzzzv
nmap N Nzzzv
" Workaround for unifying navigation history:
" https://youtrack.jetbrains.com/issue/VIM-44/Unify-navigation-history-between-ideavim-and-idea"
nmap <C-o> <Action>(Back)
nmap <C-i> <Action>(Forward)
" Navigate project errors
map [d <Action>(GotoPreviousError)
map ]d <Action>(GotoNextError)
" Navigate git changes
map [c <Action>(VcsShowPrevChangeMarker)
map ]c <Action>(VcsShowNextChangeMarker)
" Show hoverdoc
map H <Action>(ShowErrorDescription)
" Shortcutting split navigation
map <a-h> <C-w>h
map <a-j> <C-w>j
map <a-k> <C-w>k
map <a-l> <C-w>l
" Bye bye
map <leader>q <Action>(CloseContent)
map <leader>Q <Action>(CloseAllEditors)
map <leader>h <Action>(HideAllWindows)
" Focus project window
map <leader>e :NERDTreeToggle<CR>
" File navigation
map <leader>ff <Action>(GotoFile)
map <leader>fC <Action>(SearchEverywhere)
map <leader>fg <Action>(FindInPath)
map <leader>fr <Action>(RecentLocations)
" Keep visual selection
vnoremap < <gv
vnoremap > >gv
" LSP stuffs
map <leader>lo <Action>(OptimizeImports)
map <leader>lf <Action>(ReformatCode)
map <leader>lr <Action>(RenameElement)
map <leader>la <Action>(ShowIntentionActions)
map gt <Action>(GotoTest)
map gs <Action>(GotoSuperMethod)
" Debugging stuffs
map <leader>dt <Action>(ToggleLineBreakpoint)
map <leader>ds <Action>(ContextDebug)
map <leader>rs <Action>(ContextRun)
map <leader>rc <Action>(RunClass)
map <leader>rf <Action>(ChooseRunConfiguration)
" Hello terminal :D
map <leader>t <Action>(ActivateTerminalToolWindow)
" Open ideavimrc
map <leader>; :e ~/.config/ideavim/ideavimrc<CR>
" Alt+j/k for autocompletion popup
inoremap <A-j> <C-n>
inoremap <A-k> <C-p>
" Zen mode
map <leader>zz <Action>(ToggleZenMode)
" Vim search is simply outclassed here
map / <Action>(Find)