-
Notifications
You must be signed in to change notification settings - Fork 0
/
.ideavimrc
240 lines (198 loc) · 7.03 KB
/
.ideavimrc
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
set ignorecase
set smartcase
set scrolloff=3 " 3 lines above/below cursor when scrolling
" let mapleader = ","
let mapleader = " "
" let maplocalleader = ","
nnoremap ; :
nnoremap : ;
inoremap jj <Esc>
nnoremap H ^
nnoremap L $
nnoremap / :action Find<CR>
nnoremap gl :action NextTab<CR>
nnoremap gh :action PreviousTab<CR>
nnoremap q :action CloseContent<CR>
nnoremap t :action GotoTest<cr>
nnoremap <leader>= :action ReformatCode<cr>
nnoremap <leader>o :action OptimizeImports<cr>
" Navigation
nmap <leader>h :action Back<cr>
nmap <leader>l :action Forward<cr>
nmap <leader>C :action CallHierarchy<cr>
nmap <leader>; :action FileStructurePopup<cr>
nmap <leader>M :action ActivateStructureToolWindow<cr>
nmap <leader>i :action GotoImplementation<cr>
nmap <leader>U :action GotoSuperMethod<cr>
nmap <leader>e :action RecentFiles<cr>
nmap <leader>a :action RecentChangedFiles<cr>
" To navigate between split panes
nnoremap <leader>wo :action NextSplitter<cr>
nnoremap <leader>wp :action PrevSplitter<cr>
" Alt+Tab is quite good for this action
" nmap <leader>j :action PrevSplitter<cr>
nmap ,s :action PrevSplitter<cr>
" Splits manipulation
nnoremap <leader>ws :action SplitHorizontally<cr>
nnoremap <leader>wv :action SplitVertically<cr>
nnoremap <leader>wc :action Unsplit<cr>
nnoremap <leader>wC :action UnsplitAll<cr>
nmap <leader>wd :action OpenEditorInOppositeTabGroup<cr>
" nmap <leader><leader> :action VimFilePrevious<cr>
" nmap <leader>, :action VimFilePrevious<cr>
" nmap <leader>ww :action JumpToLastWindow<cr>
nnoremap <leader>i :action ShowIntentionActions<cr>
nnoremap <leader>p :action ExpressionTypeInfo<cr>
" Emulated Plugins
set surround
" set easymotion
set NERDTree
" Copy to system clipboard as well
set clipboard+=unnamed
" Use Idea to join lines smartly
set ideajoin
" Multiple cursors support
set multiple-cursors
" These settings are from - https://github.com/Valloric/dotfiles/blob/master/intellij/ideavimrc
" Create new vertical splits on right and horizontals on below
" set splitright
" set splitbelow
" Use Q for formatting the current paragraph (or visual selection)
vmap Q gq
nmap Q gqap
" These create newlines like o and O but stay in normal mode
nmap zj o<Esc>k
nmap zk O<Esc>j
" key bindings for quickly moving between windows
" h left, l right, k up, j down
" nmap <leader>h <c-w>hce
" nmap <leader>l <c-w>l
" nmap <leader>k <c-w>k
" nmap <leader>j <c-w>j
" Closing tabs
nmap <leader>q :action CloseContent<cr>
nmap <leader>Q :action ReopenClosedTab<cr>
" Switch projects
nmap <leader>ww :action NextProjectWindow<cr>
" Full screen window
nmap <leader>wf :action HideAllWindows<cr>
" NERDTree
map <leader>nn :NERDTree<CR>
map <leader>nf :NERDTreeFind<CR>
" Navigation
nmap <leader>h :action Back<cr>
nmap <leader>l :action Forward<cr>
nmap <leader>L :action RecentLocations<cr>
nmap <leader>u :action FindUsages<cr>
nmap <leader>C :action CallHierarchy<cr>
nmap <leader>f :action GotoFile<cr>
nmap <leader>c :action GotoClass<cr>
nmap <leader>s :action GotoSymbol<cr>
nmap <leader>m :action ToggleBookmark<cr>
nmap <leader>; :action FileStructurePopup<cr>
nmap <leader>M :action ActivateStructureToolWindow<cr>
nmap <leader>d :action ShowErrorDescription<cr>
nmap <leader>i :action GotoImplementation<cr>
nmap <leader>U :action GotoSuperMethod<cr>
nmap <leader>I :action SelectIn<cr>
nmap <leader>e :action RecentFiles<cr>
nmap <leader>a :action RecentChangedFiles<cr>
nmap <leader>t :action GotoTest<cr>
" nmap <leader>p :action JumpToLastWindow<cr>
nmap <leader>b :action ShowBookmarks<cr>
" Useful Git actions
nmap <leader>gb :action Git.Branches<cr>
nmap <leader>gp :action Git.Pull<cr>
nmap <leader>gu :action Git.Push<cr>
nmap <leader>gr :action Git.Rebase<cr>
nmap <leader>gm :action Git.Merge<cr>
" nmap <leader>a :action Switcher<cr>
nmap ,a :action GotoAction<cr>
" Errors
nmap <leader>x :action GotoNextError<cr>
nmap <leader>X :action GotoPreviousError<cr>
" Refactorings
vmap T :action Refactorings.QuickListPopupAction<cr>
vmap <leader>rm :action ExtractMethod<cr>
nmap <leader>rr :action RenameElement<cr>
nmap <leader>rg :action Generate<cr>
nmap <leader>rI :action OptimizeImports<cr>
" Inspection
nmap <leader>rc :action InspectCode<cr>
" VCS operations
nmap <leader>yy :action Vcs.Show.Local.Changes<cr>
nmap <leader>yp :action Vcs.QuickListPopupAction<cr>
nmap <leader>ya :action Annotate<cr>
nmap <leader>yl :action Vcs.Show.Log<cr>
nmap <leader>yd :action Compare.LastVersion<cr>
nmap <leader>yP :action Git.Pull<cr>
nmap <leader>yr :action Git.ResolveConflicts<cr>
nmap <leader>yo :action Github.Open.In.Browser<cr>
" Terminal
nmap <leader>T :action ActivateTerminalToolWindow<cr>
" Gradle
nmap <leader>G :action ActivateGradleToolWindow<cr>
" External GVim
nmap <leader>v :action Tool_External Tools_mvim<cr>
" External Emacs
nmap <leader>E :action Tool_External Tools_emacsclient<cr>
" External Sublime Text
nmap <leader>S :action Tool_External Tools_sublime_text<cr>
" IdeaVim uses 'a' for alt instead of Vim's 'm'
nmap <a-j> 15gj
nmap <a-k> 15gk
" Won't work in visual mode (with vmap) for some reason.
" Use default map of <c-/> for that.
nmap gcc :action CommentByLineComment<cr>
" unimpaired mappings - from https://github.com/saaguero/ideavimrc/blob/master/.ideavimrc
nnoremap [<space> O<esc>j
nnoremap ]<space> o<esc>k
nnoremap [q :action PreviousOccurence<cr>
nnoremap ]q :action NextOccurence<cr>
nnoremap [m :action MethodUp<cr>
nnoremap ]m :action MethodDown<cr>
nnoremap [c :action VcsShowPrevChangeMarker<cr>
nnoremap ]c :action VcsShowNextChangeMarker<cr>
" Tabs
nnoremap [b :action PreviousTab<cr>
nnoremap ]b :action NextTab<cr>
" Search
nmap <leader>/ :action Find<cr>
nmap <leader>\ :action FindInPath<cr>
" Moving lines
nmap [e :action MoveLineUp<cr>
nmap ]e :action MoveLineDown<cr>
" Moving statements
nmap [s :action MoveStatementUp<cr>
nmap ]s :action MoveStatementDown<cr>
" Building, Running and Debugging
nmap ,c :action CompileDirty<cr>
nmap ,r :action Run<cr>
nmap ,R :action RunAnything<cr>
nmap ,b :action Debug<cr>
nmap ,c :action RunClass<cr>
nmap ,d :action DebugClass<cr>
nmap ,t :action RerunTests<cr>
nmap ,T :action RerunFailedTests<cr>
nmap ,p :action ToggleLineBreakpoint<cr>
nmap ,i :action ParameterInfo<cr>
" Useful Quick actions
nmap ,, :action QuickJavaDoc<cr>
nmap ,H :action LocalHistory.ShowHistory<cr>
nmap ,e :action JumpToLastChange<cr>
" AceJump shortcut
nmap <leader>j :action AceAction<cr>
nmap ,yy :action CopySourceRootPath<cr>
nmap ,ya :action CopyAbsolutePath<cr>
nmap ,l :action RecentLocations<cr>
nmap ,S :action ShowProjectStructureSettings<cr>
" JumpToLastChange <M-S-BS>
" JumpToLastWindow <F12>
" QuickActionPopup <M-A-CR>
" QuickActions
" QuickChangeScheme <C-À>
" QuickDocCopy <M-C>
" QuickEvaluateExpression <M-A-F8> button=1 clickCount=1 modifiers=512
" QuickFixes
" QuickImplementations <A- > <M-Y>
" QuickJavaDoc <F1> <C-J> button=2 clickCount=1 modifiers=128