Skip to content

Instantly share code, notes, and snippets.

@soomtong
Last active January 23, 2025 04:36
Show Gist options
  • Save soomtong/9168011df7fd31a128ceda13937c9841 to your computer and use it in GitHub Desktop.
Save soomtong/9168011df7fd31a128ceda13937c9841 to your computer and use it in GitHub Desktop.
Jetbrains ideavim plugin vimrc
" ref: https://www.jetbrains.com/help/idea/using-product-as-the-vim-editor.html#ide_actions
"noremap j gj
"noremap k gk
" inoremap jk <ESC>
" map space as leader key
let mapleader=" "
nnoremap <SPACE> <Nop>
" system
map \\r <Action>(IdeaVim.ReloadVimRc.reload)
map \\a <Action>(VimFindActionIdAction)
" like helix
nnoremap X V
" vnoremap x j
" vnoremap X k
vmap ; <Action>(EditorEscape)
nmap gh <Action>(EditorLineStart)
nmap gl <Action>(EditorLineEnd)
nmap gH <Action>(EditorLineStartWithSelection)
nmap gL <Action>(EditorLineEndWithSelection)
" Move line up / down
map <A-k> <Action>(MoveLineUp)
map <A-j> <Action>(MoveLineDown)
" Extend selection / shrink selection
map <A-o> <Action>(EditorSelectWord)
map <A-i> <Action>(EditorUnSelectWord)
" Duplicate line up / down
map <A-S-j> <Action>(EditorDuplicate)
map <A-S-k> <Action>(EditorDuplicate)<Action>(MoveLineUp)
" find and go to
nmap <leader><space> <Action>(SearchEverywhere)
nmap <leader>fe <Action>(RecentLocations)
nmap <leader>ff <Action>(GotoFile)
nmap <leader>fr <Action>(RecentFiles)
nmap <leader>fx <Action>(CloseEditor)
nmap <leader>fw <Action>(Switcher)
nmap <leader>fd <Action>(NewScratchBuffer)
nmap <leader>fs <Action>(SaveDocument)
nmap <leader>fa <Action>(SelectInProjectView)
nmap gj viw:action FindInPath<CR>
nmap gr <Action>(FindUsages)
nmap gJ <Action>(FindUsages)
nmap gk <Action>(ShowUsages)
nmap gK <Action>(ShowRecentFindUsagesGroup)
nmap gT <Action>(GotoTest)
nmap gi <Action>(GotoImplementation)
nmap gI <Action>(GotoImplementation)
nmap <leader>e <Action>(SearchEverywhere)
nmap <leader>o <Action>(RecentChangedFiles)
" easy motion
nmap s <Action>(AceAction)
" Show and edit structure
map <leader>a <Action>(ShowIntentionActions)
map <leader>k <Action>(QuickImplementations)
nmap <C-S-K> <Action>(ShowErrorDescription)
nmap <S-K> <Action>(QuickJavaDoc)
nmap <leader>= <Action>(ReformatCode)
nmap <leader>fl <Action>(ReformatWithPrettierAction)
" bookmark
nmap M <Action>(ToggleBookmark)
nmap L <Action>(GotoNextBookmark)
nmap H <Action>(GotoPreviousBookmark)
nmap <C-S-M> <Action>(ShowBookmarks)
nmap <leader>ms <Action>(ShowBookmarks)
nmap <leader>mm <Action>(ToggleBookmark)
nmap <leader>mn <Action>(GotoNextBookmark)
nmap <leader>mp <Action>(GotoPreviousBookmark)
nmap <leader>m1 <Action>(ToggleBookmark1)
nmap <leader>m2 <Action>(ToggleBookmark2)
nmap <leader>m3 <Action>(ToggleBookmark3)
nmap <leader>m4 <Action>(ToggleBookmark4)
nmap <leader>m5 <Action>(ToggleBookmark5)
nmap <leader>m6 <Action>(ToggleBookmark6)
nmap <leader>m7 <Action>(ToggleBookmark7)
nmap <leader>m8 <Action>(ToggleBookmark8)
nmap <leader>m9 <Action>(ToggleBookmark9)
nmap <leader>m0 <Action>(ToggleBookmark0)
" highlight
nmap <leader>s :nohls<CR>
" nmap <leader><cr> :nohlsearch<CR>
nmap <leader>uh <Action>(ToggleInlayHintsGloballyAction)
nmap <leader>uw <Action>(EditorToggleShowWhitespaces)
" tab open action
nmap <Tab> <Action>(NextTab)
nmap <S-Tab> <Action>(PreviousTab)
nmap <leader><Tab> <Action>(PrevSplitter)
nmap <C-.> <Action>(NextTab)
nmap <C-,> <Action>(PreviousTab)
nmap <leader>w <Action>(NextSplitter)
nmap <leader>W <Action>(OpenEditorInOppositeTabGroup)
nmap <leader>X <Action>(CloseAllEditorsButActive)
nmap <leader>gx <Action>(CloseAllEditorsButActive)
nmap <leader>gh <Action>(PrevSplitter)
nmap <leader>gl <Action>(NextSplitter)
nmap <leader>1 <Action>(GoToTab1)
nmap <leader>2 <Action>(GoToTab2)
nmap <leader>3 <Action>(GoToTab3)
nmap <leader>4 <Action>(GoToTab4)
nmap <leader>5 <Action>(GoToTab5)
nmap <leader>6 <Action>(GoToTab6)
nmap <leader>7 <Action>(GoToTab7)
nmap <leader>8 <Action>(GoToTab8)
nmap <leader>9 <Action>(GoToTab9)
nmap <leader>T <Action>(EditorTabPopupMenu)
nmap <c-w>m <Action>(MoveEditorToOppositeTabGroup)
nmap <c-w>n <Action>(OpenEditorInOppositeTabGroup)
" vcs
nmap <leader>gb <Action>(Annotate)
" built in search looks better
" nnoremap / :action Find<cr>
" but preserve ideavim search
" nnoremap g/ /
" enter newlines
"nnoremap <CR> I<CR>
"inoremap <CR> <C-o><Action>(EditorEnter)
" move with control arrow key
nmap <C-Up> <Action>(MethodUp)
nmap <C-Down> <Action>(MethodDown)
imap <C-Up> <C-O><Action>(MethodUp)
imap <C-Down> <C-O><Action>(MethodDown)
" open declaration in new split tab
"nmap <C-]> :action GotoDeclarationOnly<CR><BAR>:action VimWindowSplitVertical<CR><BAR>:action VimWindowPrev<CR>
"nmap <C-]> :action GotoDeclarationOnly<CR><BAR>:action VimWindowSplitVertical<CR>
"nmap <C-]> :action GotoDeclaration<CR>
" misc fallback when insert mode
imap <C-F> <Right>
imap <C-B> <Left>
imap <C-E> <End>
imap <C-A> <C-O>I
imap <C-D> <C-O>x
" enable options
" set which-key
set NERDTree
set surround
set hlsearch
set incsearch
set ignorecase smartcase
set visualbell
set keymodel=startsel,continueselect
set selectmode=mouse,key,ideaselection
" set virtualedit=onemore
set idearefactormode=keep
" set ideajoin
@soomtong
Copy link
Author

0.52 버전에 도입된 selectmode 와 keymodel 이 반영되었습니다.

@soomtong
Copy link
Author

2025년 버전으로 최신화 합니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment