idea使用Vim的技巧大全分享
一、前言
vim的基礎命令我這邊不多做介紹,直接給兩個比較大而全的直觀圖,照著一個個命令看下去基本命令就學了一遍了,我會著重介紹我在idea編寫代碼過程中比較常用的命令,畢竟在idea寫代碼和在vim編輯器里寫代碼還是有很大區(qū)別的,idea本身自帶了很多功能,不需要依賴vim更加方便
二、插件推薦
- 在idea用vim推薦下載如下幾個插件,很多文章也推薦了這兩個插件,但都沒具體介紹
IdeaEasyMotion
對于不想用鼠標移動的用戶來講,這是個快速定位的神器,入下圖所示,通過快捷鍵<ll>w
顯示所有單詞的開頭,輸入對應的字母就可以將光標定位到那個單詞的開頭,接下去若要修改,直接cw
就刪掉這個單詞進入插入模式修改了
這里<ll>
代表了兩個<leader>
在配置文件用let mapleader=" "
來表示這個字符,我習慣用空格來作為leader
IdeaVimExtension
這個插件就是用來支持vim操作idea的
action
動作的,下面會介紹如何使用action
三、開發(fā)常用命令
v
系列viw
選中光標所在的單詞,通常配合c
進行單詞的快速修改,也就是viwc
直接修改一個單詞變成插入模式直接寫,相比于idea的變量重命名快捷鍵,這個的好處就是不管是變量,類名,方法名都可以直接快速選中單詞直接改
viw
:選擇當前光標所在的單詞(word),不包括周圍的空格或標點。vis
或vi'
:選擇單引號內(nèi)的文本(不包括單引號本身)。vin
或vi"
:選擇雙引號內(nèi)的文本(不包括雙引號本身)。vib
或vi(
或vi)
:選擇圓括號內(nèi)的文本(不包括圓括號本身)。viB
或vi{
或vi}
:選擇大括號內(nèi)的文本(不包括大括號本身)。vi[
或vi]
:選擇方括號內(nèi)的文本(不包括方括號本身)。vit
:選擇HTML標簽內(nèi)的文本(不包括標簽本身)
以上方法對應了選中對應兩個相同符號范圍內(nèi)的字符串,比如選中雙引號內(nèi)的字符串
c
系列
ciw
==viwc
相比于viwc
這種可視化選擇修改,ciw
更加直接,會直接修改光標所在的單詞,直接進入插入模式并刪除單詞
v
系列的所有命令都可以改成c
開頭,效果等同于vi?c
hjkl
移動- 在vim編輯器中,本來移動和定位也是vim語法比較擅長的一項,但在idea中實際上鼠標的移動更方便進行光標的定位,特別是對mac來講更加如此,手指劃拉一下比
hjkl
的移動更有性價比,所以對vim的移動,感興趣的學下就好了,沒必要在實際開發(fā)中用它
- 在vim編輯器中,本來移動和定位也是vim語法比較擅長的一項,但在idea中實際上鼠標的移動更方便進行光標的定位,特別是對mac來講更加如此,手指劃拉一下比
r
替換x
刪除- idea中command+R進行快速替換就夠用了,所以
:%s/a/b/g
這種方式的替換就沒必要了,但我們常常會遇到單個字母寫錯或者多寫的情況,這種情況下,快速的修補方案用r和x就比較有性價比了 - 選中指定字母,按
r
,接下去你按任意字母,該字母就會替換為指定字母 - 選中指定字母,按
x
,直接刪除這個字母,不會進入插入模式
- idea中command+R進行快速替換就夠用了,所以
自定義刪除指定參數(shù)
自定義命令需要在ideavimrc文件里寫入,入口在
我自定義的命令如下,前三個是刪除,后三個是選擇
"光標在多個參數(shù)的第一個參數(shù)任意位置,執(zhí)行直接刪參數(shù) nnoremap <Space>dn F,vt,d "光標在多個參數(shù)的第一個參數(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
重點介紹下如何使用idea的action實現(xiàn)用vim的快捷鍵調(diào)用idea的功能
找到命令
首先我們要知道對應功能的action是什么名字,使用命令
:actionlist [pattern]
以下舉例,打開terminal控制臺,找到激活控制臺命令,根據(jù)關鍵詞terminal搜索,復制命令后action執(zhí)行
執(zhí)行命令
:action [指令]
固話命令
對于有些命令,我們希望通過快捷鍵就可以便捷的執(zhí)行,那么我們可以寫入
.ideavimrc
文件寫入命令
在文件底部直接添加如下命令
nnoremap <Space>te :action ActivateTerminalToolWindow<CR>
接下去在普通模式下按
空格+te
則可以快捷打開Terminal
常用action
" 這三個都是arthas的命令,結合快捷鍵快速復制命令 nnoremap <Space>aw :action ArthasWatch<CR> nnoremap <Space>at :action ArthasTrace<CR> nnoremap <Space>dc :action ArthasJadCommandAction<CR>
以上三個是我用的比較多的arthas命令(前提下載arthas插件),調(diào)試的時候常常用到要頻繁切不同的方法,配置了這幾個命令用習慣后無腦按鍵三連就復制出切方法的命令,就可以去服務器執(zhí)行了
五、詳解map
關于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 映射:這個命令用于在 Normal Mode(普通模式)下創(chuàng)建鍵盤映射。這意味著當您在普通模式下按下鍵盤上的指定組合時,將觸發(fā)所定義的操作。 " inoremap - Insert Mode 映射:這個命令用于在 Insert Mode(插入模式)下創(chuàng)建鍵盤映射。這允許您在編輯文本時定義按鍵組合的行為。 " nmap - Normal Mode 和 Visual Mode 映射:這個命令用于在 Normal Mode 和 Visual Mode 下創(chuàng)建鍵盤映射。這意味著它會影響普通模式和可視模式下的按鍵行為。 " vmap - Visual Mode 映射:這個命令用于在 Visual Mode(可視模式)下創(chuàng)建鍵盤映射。它會影響到在可視模式下選擇文本時的按鍵操作。 " imap - Insert Mode 和 Command-Line Mode 映射:這個命令用于在 Insert Mode 和 Command-Line Mode(命令行模式)下創(chuàng)建鍵盤映射。它允許您自定義插入模式和執(zhí)行命令時的按鍵行為。 " map - 通用映射:這個命令用于創(chuàng)建通用的鍵盤映射,會影響到多個模式(Normal Mode、Visual Mode、Insert Mode、Command-Line Mode)。這種映射可能會導致一些不直觀的行為,因此需要謹慎使用。 "" -- 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 "顯示行號 set number relativenumber "顯示光標所在位置的行號和列號 set ruler set wrap "自動折行 set shiftwidth=4 set tabstop=4 set softtabstop=4 set expandtab "將tab替換為相應數(shù)量空格 set smartindent set backspace=2 set co=5 "設置取消備份 禁止臨時文件生成 set nobackup set noswapfile " 為IdeaVim插件增加自動切換為英文輸入法的功能, " idea 需要安裝 IdeaVimExtension plugin set keep-english-in-normal "設置匹配模式 類似當輸入一個左括號時會匹配相應的那個右括號 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 "啟用鼠標 "set ignorecase "忽略大小寫 set cursorline "突出顯示當前行 "set cursorcolumn "突出顯示當前列 set fdm=marker set timeoutlen=1000 " 防止按leader鍵亂移動 nnoremap <SPACE> <nop> nnoremap <SPACE>" ciw""<ESC>hp "jk退出insert模式 "inoremap jk <ESC> "inoremap jj <ESC> "inoremap <esc> <nop> """"""""""""""""""""""""""""""""""""""基礎篇"""""""""""""""""""""""""""""""""""""" "--普通模式下使用回車鍵,向下/向上 增加一行 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> "移動專精 nnoremap <C-e> % vmap <C-k> <C-y> vmap <C-h> 10zh vmap <C-l> 10zl noremap vin vi" "移動專精 "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 "^$符號太難按了 map gh ^ map gl $ "代碼提示 "imap <C-n> <ESC>:action HippieCompletion<CR>a "imap <C-p> <ESC>:action HippieBackwardCompletion<CR>a xnoremap < <gv xnoremap > >gv """"""""""""""""""""""""""""""""""""""重構篇"""""""""""""""""""""""""""""""""""""" " 設置leader鍵" let mapleader=" " "元素名稱重構 noremap <Space>re ^W:action RenameElement<CR> "移動重構 noremap <Space>mv :action Move<CR> "成員變量轉(zhuǎn)換為靜態(tài)變量重構(配合移動重構有奇效) noremap <Space>ms :action MakeStatic<CR> "靜態(tài)變量轉(zhuǎn)換為成員變量重構 noremap <Space>ci :action ConvertToInstanceMethod<CR> "內(nèi)聯(lián)重構(合并無效變量無效方法) noremap <Space>il :action Inline<CR> "抽取方法重構 noremap <Space>em :action ExtractMethod<CR> "抽取接口重構 noremap <Space>ei :action ExtractInterface<CR> "字段的訪問限制 noremap <Space>ef :action EncapsulateFields<CR> "引入臨時變量 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ù)對象(指定參數(shù)) noremap <Space>po :action IntroduceParameterObject<CR> "方法下放到子類 noremap <Space>pd :action MemberPushDown<CR> "方法上移到父類 noremap <Space>pu :action MembersPullUp<CR> "文件名稱重構 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> "動作跳轉(zhuǎn) nnoremap <Space>ta mm`m:action GotoAction<CR> "文件跳轉(zhuǎn) noremap <Space>tf mm`m:action GotoFile<CR> "測試類跳轉(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)下個報錯處 noremap <Space>ne mm`m:action GotoNextError<CR> "跳轉(zhuǎn)上個報錯處 noremap <Space>pe mm`m:action GotoPreviousError<CR> "從子類方法跳到父類的方法 noremap <Space>gs mm`m:action GotoSuperMethod<CR> "跳到方法實現(xiàn) noremap <Space>gi mm`m:action GotoImplementation<CR> "跳轉(zhuǎn)到下個改動處 noremap <Space>g, mm`m:action JumpToLastChange<CR> "跳轉(zhuǎn)到上個改動處 noremap <Space>g; mm`m:action JumpToNextChange<CR> "最近查看文件間相互跳轉(zhuǎn) noremap <Space>rf mm`m:action RecentFiles<CR> "最近改動文件間相互跳轉(zhuǎn) noremap <Space>rF mm`m:action RecentChangedFiles<CR> "項目之間的跳轉(zhuǎn)(上一個) noremap <Space>nw :action NextProjectWindow<CR> "項目之間的跳轉(zhuǎn)(下一個) 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í)行計劃 noremap <Space>ep :action Console.Jdbc.ExplainPlan<CR> "sql-raw執(zhí)行計劃 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> """"""""""""""""""""""""""""""""""""""運行篇"""""""""""""""""""""""""""""""""""""" "設置運行配置 nnoremap <Space>rc :action RunConfiguration<CR> "debug上次運行的類 noremap <Space>dd :action Debug<CR> "統(tǒng)計單元測試覆蓋率運行上個類 noremap <Space>cc :action Coverage<CR> "統(tǒng)計單元測試覆蓋率運行當前(now)類 noremap <Space>cn :action RunCoverage<CR> "項目停止運行 noremap <Space>sp :action Stop<CR> """"""""""""""""""""""""""""""""""""""Debug篇"""""""""""""""""""""""""""""""""""""" "開啟或關閉當前行斷點 noremap <Space>bp :action ToggleLineBreakpoint<CR> "debug時快速計算表達式 noremap <Space>qe :action QuickEvaluateExpression <CR> "debug強制返回 noremap <Space>fr :action Debugger.ForceEarlyReturn<CR> "添加新的debug觀察 noremap <Space>daw :action Debugger.AddToWatch<CR> "debug強制運行到光標處 noremap <Space>fc :action ForceRunToCursor<CR> "安裝了JRebel且在JRebel debug下才生效,熱更新 noremap <Space>hs :action Hotswap<CR> "安裝了JRebel的debug運行 noremap <Space>DD :action JRebel Debug<CR> "去除所有斷點在當前文件中 noremap <Space>rab :action Debugger.RemoveAllBreakpointsInFile<CR> "去除所有斷點 noremap <Space>raB :action Debugger.RemoveAllBreakpoints<CR> "彈出幀 noremap <Space>df :action Debugger.PopFrame<CR> "顯示當前斷點位置 noremap <Space>pp :action ShowExecutionPoint<CR> "流追蹤技術 noremap <Space>ds :action StreamTracerAction<CR> "啞斷點技術 noremap <Space>mb :action XDebugger.MuteBreakpoints<CR> "條件斷點編輯 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> "激活服務的窗口 noremap <Space>AS :action ActivateServicesToolWindow<CR> "激活Breakpoints的窗口. noremap <Space>AB :action ViewBreakpoints<CR> "激活Rest的窗口(需要安裝插件) noremap <Space>AR :action ActivateRestServicesToolWindow<CR> "激活debug的運行窗口 nnoremap <Space>wd :action ActivateDebugToolWindow<CR> "激活run的運行窗口 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> "激活窗口,選中當前位置 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> "快速顯示當前方法信息 noremap <Space>jd :action QuickJavaDoc<CR> "彈出文件結構信息 noremap <Space>fs mm`m:action FileStructurePopup<CR> "顯示maven的依賴層級信息 noremap <Space>sd :action ShowUmlDiagram<CR> "彈出方法調(diào)用層級信息 noremap <Space>ch :action CallHierarchy<CR> "查找引用了當前方法的文件信息 nnoremap <Space>fu :action FindUsages<CR> "查找方法內(nèi)使用該變量的引用信息 nnoremap <Space>su :action ShowUsages<CR> "彈出方法結構信息 noremap <Space>mh :action MethodHierarchy<CR> "彈出項目結構信息 noremap <Space>ps :action ShowProjectStructureSettings<CR> """"""""""""""""""""""""""""""""""""""項目篇"""""""""""""""""""""""""""""""""""""" "關閉項目 noremap <Space>cP :action CloseProject<CR> noremap <Space>CP :action CloseProject<CR> "打開項目 noremap <Space>oP :action OpenFile<CR> noremap <Space>OP :action OpenFile<CR> "新建項目 noremap <Space>nP :action NewProject<CR> noremap <Space>NP :action NewProject<CR> """"""""""""""""""""""""""""""""""""""實用工具篇"""""""""""""""""""""""""""""""" "代碼環(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> "復制當前文件的絕對路徑 noremap <Space>cap :action CopyAbsolutePath<CR> "復制當前文件名 noremap <Space>ccp :action CopyContentRootPath<CR> "優(yōu)化導入 noremap <Space>oi :action OptimizeImports<CR> "改變視圖 nnoremap <Space>cv :action ChangeView<CR> "關閉到只剩當前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> "復制文件元素 noremap <Space>cE :action CopyElement<CR> "新建文件元素 noremap <Space>nE :action NewElement<CR> "刪除當前文件元素 noremap <Space>dE :action SafeDelete<CR> nnoremap <Space>cp :action CheckinProject<CR> "idea智能提示 nnoremap <Space><Space> :action ShowIntentionActions<CR> "跳轉(zhuǎn)下個報錯處(這個與idea智能提示配起來,炒雞爽) nnoremap <Space><CR> :action GotoNextError<CR> "新建類,比nE快 noremap <Space>nc :action NewClass<CR> "打開項目設置 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的技巧大全分享的詳細內(nèi)容,更多關于idea使用Vim的資料請關注腳本之家其它相關文章!
相關文章
使用Spring的攔截器監(jiān)測每個Controller或方法的執(zhí)行時長
這篇文章主要介紹了使用Spring的攔截器監(jiān)測每個Controller或方法的執(zhí)行時長,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10解決mybatis where-if中if不能識別大寫AND,OR的問題
這篇文章主要介紹了解決mybatis where-if中if不能識別大寫AND,OR的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02Java實現(xiàn)從字符串中找出數(shù)字字符串的方法小結
這篇文章主要介紹了Java實現(xiàn)從字符串中找出數(shù)字字符串的方法,結合實例形式總結分析了Java查找數(shù)字字符串的常用技巧,需要的朋友可以參考下2016-03-03Java 迪杰斯特拉算法實現(xiàn)查找最短距離的實現(xiàn)
這篇文章主要介紹了Java 迪杰斯特拉算法實現(xiàn)查找最短距離的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09基于bufferedreader的read()與readline()讀取出錯原因及解決
這篇文章主要介紹了bufferedreader的read()與readline()讀取出錯原因及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12mybatis中foreach報錯:_frch_item_0 not found的解決方法
這篇文章主要給大家介紹了mybatis中foreach報錯:_frch_item_0 not found的解決方法,文章通過示例代碼介紹了詳細的解決方法,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-06-06通過Spring Boot配置動態(tài)數(shù)據(jù)源訪問多個數(shù)據(jù)庫的實現(xiàn)代碼
這篇文章主要介紹了通過Spring Boot配置動態(tài)數(shù)據(jù)源訪問多個數(shù)據(jù)庫的實現(xiàn)代碼,需要的朋友可以參考下2018-03-03