idea使用Vim的技巧大全分享
一、前言
vim的基礎(chǔ)命令我這邊不多做介紹,直接給兩個(gè)比較大而全的直觀圖,照著一個(gè)個(gè)命令看下去基本命令就學(xué)了一遍了,我會(huì)著重介紹我在idea編寫代碼過程中比較常用的命令,畢竟在idea寫代碼和在vim編輯器里寫代碼還是有很大區(qū)別的,idea本身自帶了很多功能,不需要依賴vim更加方便


二、插件推薦
- 在idea用vim推薦下載如下幾個(gè)插件,很多文章也推薦了這兩個(gè)插件,但都沒具體介紹

IdeaEasyMotion
對(duì)于不想用鼠標(biāo)移動(dòng)的用戶來講,這是個(gè)快速定位的神器,入下圖所示,通過快捷鍵<ll>w
顯示所有單詞的開頭,輸入對(duì)應(yīng)的字母就可以將光標(biāo)定位到那個(gè)單詞的開頭,接下去若要修改,直接cw就刪掉這個(gè)單詞進(jìn)入插入模式修改了
這里<ll> 代表了兩個(gè)<leader> 在配置文件用let mapleader=" " 來表示這個(gè)字符,我習(xí)慣用空格來作為leader

IdeaVimExtension
這個(gè)插件就是用來支持vim操作idea的
action動(dòng)作的,下面會(huì)介紹如何使用action
三、開發(fā)常用命令
v系列viw選中光標(biāo)所在的單詞,通常配合c進(jìn)行單詞的快速修改,也就是viwc直接修改一個(gè)單詞變成插入模式直接寫,相比于idea的變量重命名快捷鍵,這個(gè)的好處就是不管是變量,類名,方法名都可以直接快速選中單詞直接改

viw:選擇當(dāng)前光標(biāo)所在的單詞(word),不包括周圍的空格或標(biāo)點(diǎn)。vis或vi':選擇單引號(hào)內(nèi)的文本(不包括單引號(hào)本身)。vin或vi":選擇雙引號(hào)內(nèi)的文本(不包括雙引號(hào)本身)。vib或vi(或vi):選擇圓括號(hào)內(nèi)的文本(不包括圓括號(hào)本身)。viB或vi{或vi}:選擇大括號(hào)內(nèi)的文本(不包括大括號(hào)本身)。vi[或vi]:選擇方括號(hào)內(nèi)的文本(不包括方括號(hào)本身)。vit:選擇HTML標(biāo)簽內(nèi)的文本(不包括標(biāo)簽本身)
以上方法對(duì)應(yīng)了選中對(duì)應(yīng)兩個(gè)相同符號(hào)范圍內(nèi)的字符串,比如選中雙引號(hào)內(nèi)的字符串

c系列
ciw==viwc相比于viwc這種可視化選擇修改,ciw更加直接,會(huì)直接修改光標(biāo)所在的單詞,直接進(jìn)入插入模式并刪除單詞

v系列的所有命令都可以改成c開頭,效果等同于vi?c
hjkl移動(dòng)- 在vim編輯器中,本來移動(dòng)和定位也是vim語法比較擅長的一項(xiàng),但在idea中實(shí)際上鼠標(biāo)的移動(dòng)更方便進(jìn)行光標(biāo)的定位,特別是對(duì)mac來講更加如此,手指劃拉一下比
hjkl的移動(dòng)更有性價(jià)比,所以對(duì)vim的移動(dòng),感興趣的學(xué)下就好了,沒必要在實(shí)際開發(fā)中用它
- 在vim編輯器中,本來移動(dòng)和定位也是vim語法比較擅長的一項(xiàng),但在idea中實(shí)際上鼠標(biāo)的移動(dòng)更方便進(jìn)行光標(biāo)的定位,特別是對(duì)mac來講更加如此,手指劃拉一下比
r替換x刪除- idea中command+R進(jìn)行快速替換就夠用了,所以
:%s/a/b/g這種方式的替換就沒必要了,但我們常常會(huì)遇到單個(gè)字母寫錯(cuò)或者多寫的情況,這種情況下,快速的修補(bǔ)方案用r和x就比較有性價(jià)比了 - 選中指定字母,按
r,接下去你按任意字母,該字母就會(huì)替換為指定字母 - 選中指定字母,按
x,直接刪除這個(gè)字母,不會(huì)進(jìn)入插入模式
- idea中command+R進(jìn)行快速替換就夠用了,所以
自定義刪除指定參數(shù)
自定義命令需要在ideavimrc文件里寫入,入口在

我自定義的命令如下,前三個(gè)是刪除,后三個(gè)是選擇
"光標(biāo)在多個(gè)參數(shù)的第一個(gè)參數(shù)任意位置,執(zhí)行直接刪參數(shù) nnoremap <Space>dn F,vt,d "光標(biāo)在多個(gè)參數(shù)的第一個(gè)參數(shù)任意位置,執(zhí)行直接刪參數(shù) nnoremap <Space>db T(vf,ld nnoremap <Space>dm F,vt)d nnoremap <Space>vn F,vt, nnoremap <Space>vb T(vf,l nnoremap <Space>vm F,vt)

四、action
重點(diǎn)介紹下如何使用idea的action實(shí)現(xiàn)用vim的快捷鍵調(diào)用idea的功能
找到命令
首先我們要知道對(duì)應(yīng)功能的action是什么名字,使用命令
:actionlist [pattern]以下舉例,打開terminal控制臺(tái),找到激活控制臺(tái)命令,根據(jù)關(guān)鍵詞terminal搜索,復(fù)制命令后action執(zhí)行

執(zhí)行命令
:action [指令]固話命令
對(duì)于有些命令,我們希望通過快捷鍵就可以便捷的執(zhí)行,那么我們可以寫入
.ideavimrc文件寫入命令
在文件底部直接添加如下命令
nnoremap <Space>te :action ActivateTerminalToolWindow<CR>
接下去在普通模式下按
空格+te則可以快捷打開Terminal常用action
" 這三個(gè)都是arthas的命令,結(jié)合快捷鍵快速復(fù)制命令 nnoremap <Space>aw :action ArthasWatch<CR> nnoremap <Space>at :action ArthasTrace<CR> nnoremap <Space>dc :action ArthasJadCommandAction<CR>
以上三個(gè)是我用的比較多的arthas命令(前提下載arthas插件),調(diào)試的時(shí)候常常用到要頻繁切不同的方法,配置了這幾個(gè)命令用習(xí)慣后無腦按鍵三連就復(fù)制出切方法的命令,就可以去服務(wù)器執(zhí)行了
五、詳解map
關(guān)于map命令有如下幾種,分別在不同的模式下起作用,大部分情況下用的都是nnoremap命令

六、我的配置
" .ideavimrc is a configuration file for IdeaVim plugin. It uses
" the same commands as the original .vimrc configuration.
" You can find a list of commands here: https://jb.gg/h38q75
" Find more examples here: https://jb.gg/share-ideavimrc
" nnoremap - Normal Mode 映射:這個(gè)命令用于在 Normal Mode(普通模式)下創(chuàng)建鍵盤映射。這意味著當(dāng)您在普通模式下按下鍵盤上的指定組合時(shí),將觸發(fā)所定義的操作。
" inoremap - Insert Mode 映射:這個(gè)命令用于在 Insert Mode(插入模式)下創(chuàng)建鍵盤映射。這允許您在編輯文本時(shí)定義按鍵組合的行為。
" nmap - Normal Mode 和 Visual Mode 映射:這個(gè)命令用于在 Normal Mode 和 Visual Mode 下創(chuàng)建鍵盤映射。這意味著它會(huì)影響普通模式和可視模式下的按鍵行為。
" vmap - Visual Mode 映射:這個(gè)命令用于在 Visual Mode(可視模式)下創(chuàng)建鍵盤映射。它會(huì)影響到在可視模式下選擇文本時(shí)的按鍵操作。
" imap - Insert Mode 和 Command-Line Mode 映射:這個(gè)命令用于在 Insert Mode 和 Command-Line Mode(命令行模式)下創(chuàng)建鍵盤映射。它允許您自定義插入模式和執(zhí)行命令時(shí)的按鍵行為。
" map - 通用映射:這個(gè)命令用于創(chuàng)建通用的鍵盤映射,會(huì)影響到多個(gè)模式(Normal Mode、Visual Mode、Insert Mode、Command-Line Mode)。這種映射可能會(huì)導(dǎo)致一些不直觀的行為,因此需要謹(jǐn)慎使用。
"" -- Suggested options --
" Show a few lines of context around the cursor. Note that this makes the
" text scroll if you mouse-click near the start or end of the window.
set scrolloff=5
" Do incremental searching.
" set incsearch
" Don't use Ex mode, use Q for formatting.
map Q gq
" --- Enable IdeaVim plugins https://jb.gg/ideavim-plugins
" Highlight copied text
Plug 'machakann/vim-highlightedyank'
" Commentary plugin
Plug 'tpope/vim-commentary'
set easymotion
"" -- Map IDE actions to IdeaVim -- https://jb.gg/abva4t
"" Map \r to the Reformat Code action
"map \r <Action>(ReformatCode)
"" Map <leader>d to start debug
"map <leader>d <Action>(Debug)
"" Map \b to toggle the breakpoint on the current line
"map \b <Action>(ToggleLineBreakpoint)
set verbose=20
"語法高亮
syntax on
"顯示行號(hào)
set number relativenumber
"顯示光標(biāo)所在位置的行號(hào)和列號(hào)
set ruler
set wrap "自動(dòng)折行
set shiftwidth=4
set tabstop=4
set softtabstop=4
set expandtab "將tab替換為相應(yīng)數(shù)量空格
set smartindent
set backspace=2
set co=5
"設(shè)置取消備份 禁止臨時(shí)文件生成
set nobackup
set noswapfile
" 為IdeaVim插件增加自動(dòng)切換為英文輸入法的功能,
" idea 需要安裝 IdeaVimExtension plugin
set keep-english-in-normal
"設(shè)置匹配模式 類似當(dāng)輸入一個(gè)左括號(hào)時(shí)會(huì)匹配相應(yīng)的那個(gè)右括號(hào)
set showmatch
set hlsearch
set incsearch
set ignorecase
set smartcase
set history=3000000
set commentary
:set vb
set clipboard^=unnamed,unnamedplus
"set laststatus=2 "命令行為兩行
"set fenc=utf-8 "文件編碼
"set mouse=a "啟用鼠標(biāo)
"set ignorecase "忽略大小寫
set cursorline "突出顯示當(dāng)前行
"set cursorcolumn "突出顯示當(dāng)前列
set fdm=marker
set timeoutlen=1000
" 防止按leader鍵亂移動(dòng)
nnoremap <SPACE> <nop>
nnoremap <SPACE>" ciw""<ESC>hp
"jk退出insert模式
"inoremap jk <ESC>
"inoremap jj <ESC>
"inoremap <esc> <nop>
""""""""""""""""""""""""""""""""""""""基礎(chǔ)篇""""""""""""""""""""""""""""""""""""""
"--普通模式下使用回車鍵,向下/向上 增加一行
nmap <CR> o<Esc>
"nmap <S-Enter> O<Esc>
"debug神器
nmap <C-j> :action StepOver<CR>
nmap <C-k> :action Resume<CR>
nmap <C-h> :action StepOut<CR>
nmap <C-l> :action ForceStepInto<CR>
"移動(dòng)專精
nnoremap <C-e> %
vmap <C-k> <C-y>
vmap <C-h> 10zh
vmap <C-l> 10zl
noremap vin vi"
"移動(dòng)專精
"imap <C-j> <Esc>ja
"imap <C-k> <Esc>ka
"imap <C-h> <Esc>10zhi
"imap <C-l> <Esc>l10zla
imap <C-j> <Down>
imap <C-k> <Up>
imap <C-h> <Left>
imap <C-l> <Right>
noremap <S-Enter> <Esc>o
imap <S-Enter> <Esc>o
"imap <C-i> <CR>
"左右視野
nnoremap zH 50zh
nnoremap zL 50zl
"^$符號(hào)太難按了
map gh ^
map gl $
"代碼提示
"imap <C-n> <ESC>:action HippieCompletion<CR>a
"imap <C-p> <ESC>:action HippieBackwardCompletion<CR>a
xnoremap < <gv
xnoremap > >gv
""""""""""""""""""""""""""""""""""""""重構(gòu)篇""""""""""""""""""""""""""""""""""""""
" 設(shè)置leader鍵"
let mapleader=" "
"元素名稱重構(gòu)
noremap <Space>re ^W:action RenameElement<CR>
"移動(dòng)重構(gòu)
noremap <Space>mv :action Move<CR>
"成員變量轉(zhuǎn)換為靜態(tài)變量重構(gòu)(配合移動(dòng)重構(gòu)有奇效)
noremap <Space>ms :action MakeStatic<CR>
"靜態(tài)變量轉(zhuǎn)換為成員變量重構(gòu)
noremap <Space>ci :action ConvertToInstanceMethod<CR>
"內(nèi)聯(lián)重構(gòu)(合并無效變量無效方法)
noremap <Space>il :action Inline<CR>
"抽取方法重構(gòu)
noremap <Space>em :action ExtractMethod<CR>
"抽取接口重構(gòu)
noremap <Space>ei :action ExtractInterface<CR>
"字段的訪問限制
noremap <Space>ef :action EncapsulateFields<CR>
"引入臨時(shí)變量
noremap <Space>iv :action IntroduceVariable<CR>
"引入常量
noremap <Space>ic :action IntroduceConstant<CR>
"引入方法參數(shù)
noremap <Space>ip :action IntroduceParameter<CR>
"引入字段
noremap <Space>if :action IntroduceField<CR>
"引入?yún)?shù)對(duì)象(指定參數(shù))
noremap <Space>po :action IntroduceParameterObject<CR>
"方法下放到子類
noremap <Space>pd :action MemberPushDown<CR>
"方法上移到父類
noremap <Space>pu :action MembersPullUp<CR>
"文件名稱重構(gòu)
noremap <Space>RF :action RenameFile<CR>
"修改方法簽名
noremap <Space>cs :action ChangeSignature<CR>
"抽取類
noremap <Space>ec :action ExtractClass<CR>
"匿名類到內(nèi)部類
noremap <Space>ai :action AnonymousToInner<CR>
""""""""""""""""""""""""""""""""""""""跳轉(zhuǎn)篇""""""""""""""""""""""""""""""""""""""
"特殊變量跳轉(zhuǎn)
nnoremap <Space>ts mm`m:action GotoSymbol<CR>
"url地址跳轉(zhuǎn)
noremap <Space>tu mm`m:action Toolkit.GotoService<CR>
"動(dòng)作跳轉(zhuǎn)
nnoremap <Space>ta mm`m:action GotoAction<CR>
"文件跳轉(zhuǎn)
noremap <Space>tf mm`m:action GotoFile<CR>
"測(cè)試類跳轉(zhuǎn)
noremap <Space>tt mm`m:action GotoTest<CR>
"java類跳轉(zhuǎn)
noremap <Space>tc mm`m:action GotoClass<CR>
"文本跳轉(zhuǎn)
noremap <Space>tp mm`m:action FindInPath<CR>
"跳轉(zhuǎn)下個(gè)報(bào)錯(cuò)處
noremap <Space>ne mm`m:action GotoNextError<CR>
"跳轉(zhuǎn)上個(gè)報(bào)錯(cuò)處
noremap <Space>pe mm`m:action GotoPreviousError<CR>
"從子類方法跳到父類的方法
noremap <Space>gs mm`m:action GotoSuperMethod<CR>
"跳到方法實(shí)現(xiàn)
noremap <Space>gi mm`m:action GotoImplementation<CR>
"跳轉(zhuǎn)到下個(gè)改動(dòng)處
noremap <Space>g, mm`m:action JumpToLastChange<CR>
"跳轉(zhuǎn)到上個(gè)改動(dòng)處
noremap <Space>g; mm`m:action JumpToNextChange<CR>
"最近查看文件間相互跳轉(zhuǎn)
noremap <Space>rf mm`m:action RecentFiles<CR>
"最近改動(dòng)文件間相互跳轉(zhuǎn)
noremap <Space>rF mm`m:action RecentChangedFiles<CR>
"項(xiàng)目之間的跳轉(zhuǎn)(上一個(gè))
noremap <Space>nw :action NextProjectWindow<CR>
"項(xiàng)目之間的跳轉(zhuǎn)(下一個(gè))
noremap <Space>pw :action PreviousProjectWindow<CR>
"跳轉(zhuǎn) 需要安裝AceJump插件
noremap <Space>tj mm`m:action AceWordAction<CR>
noremap <Space>jp mm`m:action AceDeclarationAction<CR>
""""""""""""""""""""""""""""""""""""""SQL篇""""""""""""""""""""""""""""""""""""""
"sql提交
noremap <Space>sc :action Console.Transaction.Commit<CR>
"sql回滾
noremap <Space>sr :action Console.Transaction.Rollback<CR>
"sql執(zhí)行
noremap <Space>se :action Console.Jdbc.Execute<CR>
"sql執(zhí)行計(jì)劃
noremap <Space>ep :action Console.Jdbc.ExplainPlan<CR>
"sql-raw執(zhí)行計(jì)劃
noremap <Space>EP :action Console.Jdbc.ExplainPlan.Raw<CR>
"打開數(shù)據(jù)庫日志窗口,前提安裝了MyBatis Log Plugin插件
noremap <Space>sl :action TailMyBatisLog0<CR>
noremap <Space>SL :action ActivateMyBatisLogToolWindow<CR>
noremap <Space>AL :action TailMyBatisLog0<CR>:action ActivateMyBatisLogToolWindow<CR>
""""""""""""""""""""""""""""""""""""""運(yùn)行篇""""""""""""""""""""""""""""""""""""""
"設(shè)置運(yùn)行配置
nnoremap <Space>rc :action RunConfiguration<CR>
"debug上次運(yùn)行的類
noremap <Space>dd :action Debug<CR>
"統(tǒng)計(jì)單元測(cè)試覆蓋率運(yùn)行上個(gè)類
noremap <Space>cc :action Coverage<CR>
"統(tǒng)計(jì)單元測(cè)試覆蓋率運(yùn)行當(dāng)前(now)類
noremap <Space>cn :action RunCoverage<CR>
"項(xiàng)目停止運(yùn)行
noremap <Space>sp :action Stop<CR>
""""""""""""""""""""""""""""""""""""""Debug篇""""""""""""""""""""""""""""""""""""""
"開啟或關(guān)閉當(dāng)前行斷點(diǎn)
noremap <Space>bp :action ToggleLineBreakpoint<CR>
"debug時(shí)快速計(jì)算表達(dá)式
noremap <Space>qe :action QuickEvaluateExpression <CR>
"debug強(qiáng)制返回
noremap <Space>fr :action Debugger.ForceEarlyReturn<CR>
"添加新的debug觀察
noremap <Space>daw :action Debugger.AddToWatch<CR>
"debug強(qiáng)制運(yùn)行到光標(biāo)處
noremap <Space>fc :action ForceRunToCursor<CR>
"安裝了JRebel且在JRebel debug下才生效,熱更新
noremap <Space>hs :action Hotswap<CR>
"安裝了JRebel的debug運(yùn)行
noremap <Space>DD :action JRebel Debug<CR>
"去除所有斷點(diǎn)在當(dāng)前文件中
noremap <Space>rab :action Debugger.RemoveAllBreakpointsInFile<CR>
"去除所有斷點(diǎn)
noremap <Space>raB :action Debugger.RemoveAllBreakpoints<CR>
"彈出幀
noremap <Space>df :action Debugger.PopFrame<CR>
"顯示當(dāng)前斷點(diǎn)位置
noremap <Space>pp :action ShowExecutionPoint<CR>
"流追蹤技術(shù)
noremap <Space>ds :action StreamTracerAction<CR>
"啞斷點(diǎn)技術(shù)
noremap <Space>mb :action XDebugger.MuteBreakpoints<CR>
"條件斷點(diǎn)編輯
noremap <Space>eb :action EditBreakpoint<CR>
""""""""""""""""""""""""""""""""""""""窗口篇""""""""""""""""""""""""""""""""""""""
"激活maven窗口
noremap <Space>AM :action ActivateMavenToolWindow<CR>
"激活database窗口
noremap <Space>AD :action ActivateDatabaseToolWindow<CR>
"激活todo的窗口
noremap <Space>AT :action ActivateTODOToolWindow<CR>
"激活Favorites的窗口
noremap <Space>AF :action ActivateFavoritesToolWindow<CR>
"激活project的窗口
noremap <Space>AP :action ActivateProjectToolWindow<CR>
"激活git的窗口
noremap <Space>AG :action ActivateVersionControlToolWindow<CR>
"激活服務(wù)的窗口
noremap <Space>AS :action ActivateServicesToolWindow<CR>
"激活Breakpoints的窗口.
noremap <Space>AB :action ViewBreakpoints<CR>
"激活Rest的窗口(需要安裝插件)
noremap <Space>AR :action ActivateRestServicesToolWindow<CR>
"激活debug的運(yùn)行窗口
nnoremap <Space>wd :action ActivateDebugToolWindow<CR>
"激活run的運(yùn)行窗口
nnoremap <Space>wr :action ActivateRunToolWindow<CR>
"隱藏窗口(windows hide)
nnoremap <Space>wh :action HideActiveWindow<CR>
"窗口最大化windows max
nnoremap <Space>mm :action MaximizeToolWindow<CR>
"隱藏所有窗口
noremap <Space>ha :action HideAllWindows<CR>
noremap <Space><Space> :action HideAllWindows<CR>
"激活窗口,選中當(dāng)前位置
noremap <Space>si :action SelectInProjectView<CR>
""""""""""""""""""""""""""""""""""""""信息篇""""""""""""""""""""""""""""""""""""""
"彈出警告信息
noremap <Space>ed :action ShowErrorDescription<CR>
"彈出類型信息
noremap <Space>ti :action ExpressionTypeInfo<CR>
"彈出參數(shù)信息
noremap <Space>pi :action ParameterInfo<CR>
"快速顯示當(dāng)前方法信息
noremap <Space>jd :action QuickJavaDoc<CR>
"彈出文件結(jié)構(gòu)信息
noremap <Space>fs mm`m:action FileStructurePopup<CR>
"顯示maven的依賴層級(jí)信息
noremap <Space>sd :action ShowUmlDiagram<CR>
"彈出方法調(diào)用層級(jí)信息
noremap <Space>ch :action CallHierarchy<CR>
"查找引用了當(dāng)前方法的文件信息
nnoremap <Space>fu :action FindUsages<CR>
"查找方法內(nèi)使用該變量的引用信息
nnoremap <Space>su :action ShowUsages<CR>
"彈出方法結(jié)構(gòu)信息
noremap <Space>mh :action MethodHierarchy<CR>
"彈出項(xiàng)目結(jié)構(gòu)信息
noremap <Space>ps :action ShowProjectStructureSettings<CR>
""""""""""""""""""""""""""""""""""""""項(xiàng)目篇""""""""""""""""""""""""""""""""""""""
"關(guān)閉項(xiàng)目
noremap <Space>cP :action CloseProject<CR>
noremap <Space>CP :action CloseProject<CR>
"打開項(xiàng)目
noremap <Space>oP :action OpenFile<CR>
noremap <Space>OP :action OpenFile<CR>
"新建項(xiàng)目
noremap <Space>nP :action NewProject<CR>
noremap <Space>NP :action NewProject<CR>
""""""""""""""""""""""""""""""""""""""實(shí)用工具篇""""""""""""""""""""""""""""""""
"代碼環(huán)繞
noremap <Space>sw :action SurroundWith<CR>
"整理代碼
noremap <Space>= :action ReformatCode<CR>
"彈出菜單
noremap <Space>sm :action ShowPopupMenu<CR>
"保存模板
noremap <Space>st :action SaveAsTemplate<CR>
"復(fù)制當(dāng)前文件的絕對(duì)路徑
noremap <Space>cap :action CopyAbsolutePath<CR>
"復(fù)制當(dāng)前文件名
noremap <Space>ccp :action CopyContentRootPath<CR>
"優(yōu)化導(dǎo)入
noremap <Space>oi :action OptimizeImports<CR>
"改變視圖
nnoremap <Space>cv :action ChangeView<CR>
"關(guān)閉到只剩當(dāng)前tab欄
noremap <Space>co :action CloseAllEditorsButActive<CR>
"g4文件生成代碼(需要安裝anltr4插件)
"noremap <Space>ag :action antlr.Generate<CR>:action antlr.Generate<CR>
"顯示字節(jié)碼
noremap <Space>bc :action ByteCodeViewer<CR>
"快速翻譯(需要安裝翻譯插件)
noremap <Space>qq :action $TranslateTextComponent<CR>
"替換翻譯(需要安裝翻譯插件)
noremap <Space>tr :action $TranslateAndReplaceAction<CR>
noremap <Space>gfu :action GenerateFullRestUrl<CR>
"添加到收藏文件
"noremap <Space>atf :action AddToFavorites<CR>
"復(fù)制文件元素
noremap <Space>cE :action CopyElement<CR>
"新建文件元素
noremap <Space>nE :action NewElement<CR>
"刪除當(dāng)前文件元素
noremap <Space>dE :action SafeDelete<CR>
nnoremap <Space>cp :action CheckinProject<CR>
"idea智能提示
nnoremap <Space><Space> :action ShowIntentionActions<CR>
"跳轉(zhuǎn)下個(gè)報(bào)錯(cuò)處(這個(gè)與idea智能提示配起來,炒雞爽)
nnoremap <Space><CR> :action GotoNextError<CR>
"新建類,比nE快
noremap <Space>nc :action NewClass<CR>
"打開項(xiàng)目設(shè)置
noremap <Space>ps :action ShowProjectStructureSettings<CR>
"露出文件夾
noremap <Space>ri :action RevealIn<CR>
"代碼生成
noremap <Space>ga :action Generate<CR>
"刪除未修改的tab
noremap <Space>cu :action CloseAllUnmodifiedEditors<CR>
"Codota查找類似代碼,需要提前安裝Codota插件
noremap <Space>oc :action OpenCodotaSearch<CR>
"Codota激活窗口,需要提前安裝Codota插件
noremap <Space>AC :action ActivateCodotaToolWindow<CR>
"Codota激活窗口,需要提前安裝Codota插件
noremap <Space>cl :action CodotaLeanSearchCrossRefAction<CR>
"CSDN萬能工具,需要提前安裝CSDN插件
noremap <Space>csdn :action SearchByCSDN<CR>
"大小寫,駝峰,下劃線,中劃線轉(zhuǎn)換
noremap <Space>uu :action de.netnexus.CamelCasePlugin.ToggleCamelCase<CR>
"替換
noremap <Space>rp :action ReplaceInPath<CR>
"查看代碼git作者
noremap <Space>us :action Annotate<CR>
"打開ddl語句
noremap <Space>dl :action DatabaseView.OpenDdlInConsole<CR>
"大小寫切換,必須要先安裝插件
noremap <Space>u :action de.netnexus.CamelCasePlugin.ToggleCamelCase<CR>
" 顯示git菜單
nnoremap <Space>gm :action Git.Menu<CR>
nnoremap <Space>te :action ActivateTerminalToolWindow<CR>
" 一鍵提交到test環(huán)境
nnoremap <Space>mrt :action com.github.novotnyr.idea.gitlab.quickmr.CreateMergeRequestAction<CR>
" 一鍵提交到uat環(huán)境
nnoremap <Space>mru :action com.github.novotnyr.idea.gitlab.quickmr.CreateMergeRequestAction2<CR>
nnoremap <Space>ah :action swapClassAction<CR>oyum install sudo -y;yum install telnet -y;yum install unzip -y;<Esc>o<Esc>pV9kd
"nnoremap <Space>ah :action Artha"sHotRetransformCommandAction<CR>|:normal oyum install unzip -y;<CR>p"+yy
nnoremap <Space>aw :action ArthasWatch<CR>
nnoremap <Space>at :action ArthasTrace<CR>
nnoremap <Space>dc :action ArthasJadCommandAction<CR>
nnoremap <Space>ss :action com.jetbrains.plugins.remotesdk.console.RunSshConsoleAction<CR>
nnoremap <Space>dn F,vt,d
nnoremap <Space>db T(vf,ld
nnoremap <Space>dm F,vt)d
nnoremap <Space>vn F,vt,
nnoremap <Space>vb T(vf,l
nnoremap <Space>vm F,vt)
nnoremap <Space>ex va{<Bar>:action EditorSelectWord<CR>:action EditorSelectWord<CR>:action EditorSelectWord<CR>:action EditorSelectWord<CR>
以上就是idea使用Vim的技巧大全分享的詳細(xì)內(nèi)容,更多關(guān)于idea使用Vim的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用Spring的攔截器監(jiān)測(cè)每個(gè)Controller或方法的執(zhí)行時(shí)長
這篇文章主要介紹了使用Spring的攔截器監(jiān)測(cè)每個(gè)Controller或方法的執(zhí)行時(shí)長,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
解決mybatis where-if中if不能識(shí)別大寫AND,OR的問題
這篇文章主要介紹了解決mybatis where-if中if不能識(shí)別大寫AND,OR的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02
Java實(shí)現(xiàn)高效隨機(jī)數(shù)算法的示例代碼
這篇文章主要介紹了Java實(shí)現(xiàn)高效隨機(jī)數(shù)算法的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02
Java實(shí)現(xiàn)從字符串中找出數(shù)字字符串的方法小結(jié)
這篇文章主要介紹了Java實(shí)現(xiàn)從字符串中找出數(shù)字字符串的方法,結(jié)合實(shí)例形式總結(jié)分析了Java查找數(shù)字字符串的常用技巧,需要的朋友可以參考下2016-03-03
Java 迪杰斯特拉算法實(shí)現(xiàn)查找最短距離的實(shí)現(xiàn)
這篇文章主要介紹了Java 迪杰斯特拉算法實(shí)現(xiàn)查找最短距離的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
基于bufferedreader的read()與readline()讀取出錯(cuò)原因及解決
這篇文章主要介紹了bufferedreader的read()與readline()讀取出錯(cuò)原因及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
mybatis中foreach報(bào)錯(cuò):_frch_item_0 not found的解決方法
這篇文章主要給大家介紹了mybatis中foreach報(bào)錯(cuò):_frch_item_0 not found的解決方法,文章通過示例代碼介紹了詳細(xì)的解決方法,對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-06-06
通過Spring Boot配置動(dòng)態(tài)數(shù)據(jù)源訪問多個(gè)數(shù)據(jù)庫的實(shí)現(xiàn)代碼
這篇文章主要介紹了通過Spring Boot配置動(dòng)態(tài)數(shù)據(jù)源訪問多個(gè)數(shù)據(jù)庫的實(shí)現(xiàn)代碼,需要的朋友可以參考下2018-03-03
java springboot的概述、特點(diǎn)與構(gòu)建介紹
大家好,本篇文章主要講的是springboot的概述、特點(diǎn)與構(gòu)建介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12

