vim常用命令總結(ideavim)
1. 插入命令
- “i” 命令可以在當前光標之前插入文本。
- “I” 命令可以在當前行首插入文本。
- “a” 命令可以在當前光標之後插入文本。
- “A” 命令可以在當前行尾插入文本。
- “o” 命令可以在當前行的下面另起一行.
- “O” 命令(注意是大寫的字母O)將在當前行的上面另起一行。
- “c” 修改,類似delete與insert的組和。刪除一個字組、句子等之資料,並插入新建資料。
- “cc”修改整行的內容。
- “C” 刪除遊標所在位置到行末資料,並進入輸入模式。
- “s” 刪除遊標所在之字元,並進入輸入模式。
- “S” 刪除遊標所在之該行資料,並進入輸入模式。
- “r” 用接於此指令之後的字元取代(replace)遊標所在字元。如:ra將遊標所在字元以 a 取代之。
- “R” 進入取代狀態。
2. 刪除命令
- “x” 刪除遊標所在該字元。
- “X” 刪除遊標所在之前一字元。
- “dd” 刪除一整行內容使用”dd”命令。刪除後下面的行會移上來填補空缺。
- “J” 刪除換行符。在Vim中你可以把兩行合併爲一行,也就是說兩行之間的換行符被刪除了。
- “D” 以行爲單位,刪除遊標後之所有字元。
- “yy”使遊標所在該行復制到記憶體緩衝區。
3. 複製命令
- 剪切、複製、刪除
1.”d” 剪切 2.“y” 複製。 3.“p” 粘帖,與 d 和 y 配和使用。可將最後d或y的資料放置於遊標所在位置之行列下。
- 移動文本
以”d”或”x”這樣的命令刪除文本時,被刪除的內容還是被保存了起來。 你還可以用p命令把它取回來。 ”P”命令是把被去回的內容放在光標之前,”p”則是放在光標之後。 對於以”dd”刪除的整行內容,”P”會把它置於當前行的上一行。 ”p”則是至於當前行的後一行。 也可以對命令”p”和”P”命令使用命令記數。 它的效果是同樣的內容被取回指定的次數。 這樣一來”dd”之後的”3p”就可以把被刪除行的3 份副本放到當前位置。
- 複製文本(VIM編輯器內複製)
“y”操作符命令會把文本複製到一個寄存器3中。 然後可以用”p”命令把它取回。 因爲”y”是一個操作符命令,所以你可以用”yw”來複制一個word. 同樣可以使用命令記數。 如下例中用”y2w”命令複製兩個word,”yy”命令複製一整行,”Y”也是複製整行的內容, 複製當前光標至行尾的命令是”y$”。
4. 選中命令
- 查找與替換
% 查找“(”,“)”,“{”,“}”的配對符。 另外:將光標移動在選定單詞下方按*, 則可以選中此單詞作爲查詢字符,可以避免輸入一長串字符的麻煩。
- (vim) 大小寫替換
首先用按V開啓選擇功能,然後用↑↓←→鍵來選定所要替換的字符,若是小寫變大寫,則按U;反之按u; 如果是選擇單詞,則可以在按v後,按w,最後按U/u,這樣就可以將字符隨意的改變大小寫了,而不用刪除後重新敲入。
5. 光標移動
- “m”<a-z> 設置書籤
- “`”(在Esc鍵下面)< 移至書籤處
- “0” 移至該行之首
- “$” 移至該行之末。
- “e” 移動到下個字的最後一個字母
- “w” 移動到下個字的第一個字母。
- “b” 移動到上個字的第一個字母。
- “^” 移至該行的第一個字元處。
- “H” 移至視窗的第一行。
- “M” 移至視窗的中間那行。
- “L” 移至視窗的最後一行。
- “G” 移至該文件的最後一行。 用”G”命令指定一個命令計數,這個命令就會把光標定位到由命令計數指定的行上。比如”33G”就會把光標置於第33行上。沒有指定命令計數作爲參數的話, “G”會把光標定位到最後一行上。”gg”命令是跳轉到第一行的快捷的方法。
- “%” 另一個移動到某行的方法是在命令”%”之前指定一個命令計數比如”50%”將會把光標定位在文件的中間. “90%”跳到接近文件尾的地方。
- “+” 移至下一列的第一個字元處。
- “-” 移至上一列的第一個字元處。
- “n+” 移至遊標所在位置之後的第 n 列。
- “n-” 移至遊標所在位置之前的第 n 列。
- “Ctrl+g” 顯示該行之行號、文件名稱、文件中最末行之行號、遊標所在行號佔總行號之百分比。
- 移動到指定字符上
命令”fx”在當前行上查找下一個字符x(向右方向),可以帶一個命令計數”F”命令向左方向搜索。 ”tx”命令形同”fx”命令,只不過它不是把光標停留在被搜索字符上,而是在它之前的一個字符上。 提示:”t”意爲”To”。該命令的反方向版是”Tx”。這4個命令都可以用”;”來重複。 以”,”也是重複同樣的命令,但是方向與原命令的方向相反。
- 滾屏
”CTRL+U”顯示文本的窗口向上滾動了半屏。 “CTRL+D”命令將窗口向下移動半屏。 “CTRL+E”向上滾動一行。 “CTRL+Y”向下滾動一行。 “CTRL+F”向前滾動一整屏。 “CTRL+B”向後滾動一整屏。 “zz”命令會把當前行置爲屏幕正中央。 “zt”命令會把當前行置於屏幕頂端。 “zb”則把當前行置於屏幕底端.。
6. 功能命令
- Visual模式
1.v 從光標當前位置開始,光標所經過的地方會被選中,再按一下v結束。 2.V 從光標當前行開始,光標經過的行都會被選中,再按一下V結束。 3.Shift + v 從光標當前位置開始,選中光標起點和終點所構成的矩形區域,再按一下Shift + v結束。 4.ggVG 選中全部的文本, 其中gg爲跳到行首,V選中整行,G末尾 5.選中後就可以用編輯命令對其進行編輯,如 d 刪除 y 複製 (默認是複製到”寄存器) p 粘貼 (默認從”寄存器取出內容粘貼) “+y 複製到系統剪貼板(也就是vim的+寄存器) “+p 從系統剪貼板粘貼
- 重複改動
“.”命令會重複上一次做出的改動。 ”.”命令會重複你做出的所有修改,除了”u”命令CTRL-R和以冒號開頭的命令。 ”.”需要在Normal模式下執行,它重複的是命令,而不是被改動的內容,
- 撤銷
如果你誤刪了過多的內容。 顯然你可以再輸入一遍,但是命令”u” 更簡便,它可以撤消上一次的操作。
- 重做
如果你撤消了多次,你還可以用CTRL-R(重做)來反轉撤消的動作。 換句話說,它是對撤消的撤消。 撤消命令還有另一種形式,”U”命令,它一次撤消對一行的全部操作。 第二次使用該命令則會撤消前一個”U”的操作。 用”u”和CTRL-R你可以找回任何一個操作狀態。
- 使用命令計數
假設你要向上移動9行。 這可以用”kkkkkkkkk”或”9k”來完成。 事實上,很多命令都可以接受一個數字作爲重複執行同一命令的次數。 比如剛纔的例子,要在行尾追加三個感嘆號,當時用的命令是”a!!!”。 另一個辦法是用”3a!”命令。3說明該命令將被重複執行3次。 同樣,刪除3個字符可以用”3x”。指定的數字要緊挨在它所要修飾的命令前面。
- 告訴你當前的位置
使用CTRL-G命令。 ”set number”在每行的前面顯示一個行號。 相反關閉行號用命令”:set nonumber”。 ”:set ruler”在Vim窗口的右下角顯示當前光標位置。
7.標記命令
- 使用標記
當你用”G”命令從一個地方跳轉到另一個地方時,Vim會記得你起跳的位置。 這個位置在Vim中是一個標記。 使用命令”` `”可以使你跳回到剛纔的出發點。 “` `”命令可以在兩點之間來回跳轉。 CTRL-O命令是跳轉到你更早些時間停置光標的位置(提示:O意爲older). CTRL-I則是跳回到後來停置光標的更新的位置(提示:I在鍵盤上位於O前面)。 注:使用CTRL-I 與按下鍵一樣。
- 具名標記
命令”ma”將當前光標下的位置名之爲標記”a”。 從a到z一共可以使用26個自定義的標記。 要跳轉到一個你定義過的標記,使用命令”`marks” marks就是定義的標記的名字。 命令” `a”使你跳轉到a所在行的行首,”`a”會精確定位a所在的位置。 命令:”:marks”用來查看標記的列表。 命令delm!刪除所有標記。
配置自定義vim快捷鍵
.ideavimrc 配置文件
其實很簡單,修改 ideavim 的配置文件 .ideavimrc 即可。默認情況下該文件並不存在,需要自行創建。macOS 或 Linux 下直接在當前用戶目錄下新建即可。(Windows 下應該也是在用戶目錄下新建配置文件,不過文件名應該是 _ideavimrc。)
wim 系統C:\Users\Administrator文件夾下創建_ideavimrc, 我這裏用的是win系統
需要安裝ideaVim插件
let mapleader=' '
set hlsearch
set incsearch
set ignorecase
set smartcase
set showmode
set number
set relativenumber
set scrolloff=3
set history=100000
set clipboard=unnamed
" clear the highlighted search result
" (清除高亮)
nnoremap <Leader>sc :nohlsearch<CR>
nnoremap <Leader>fs :w<CR>
" Quit normal mode
" (保存關閉)
nnoremap <Leader>q :q<CR>
nnoremap <Leader>Q :qa!<CR>
" Move half page faster
" (上下翻頁)
nnoremap <Leader>d <C-d>
nnoremap <Leader>u <C-u>
" Ctrl+某個按鍵
inoremap <C-h> <Left>
inoremap <C-j> <Down>
inoremap <C-k> <Up>
inoremap <C-l> <Right>
inoremap <C-a> <Home>
inoremap <C-e> <End>
inoremap <C-d> <Delete>
" 快速進入vim模式
inoremap jj <Esc>
inoremap jk <Esc>
inoremap kk <Esc>
" Quit visual mode
vnoremap v <Esc>
" Redo
nnoremap U <C-r>
" 以下是自定義快捷鍵-----------------
" 複製單個單詞並標記a鍵 ==>空格+y
nnoremap <Leader>y ma"+yiw"ayiw
" 刪除單個字符串並黏貼寄存器內容並標記b鍵 ==>空格+v
nnoremap <Leader>v mbviw"ap
" 以上是自定義快捷鍵-----------------
" quit ==> close current window
nnoremap <Leader>q <C-W>w
" Window operation
" (關於窗口操作)
nnoremap <Leader>ww <C-W>w
nnoremap <Leader>wd <C-W>c
nnoremap <Leader>wj <C-W>j
nnoremap <Leader>wk <C-W>k
nnoremap <Leader>wh <C-W>h
nnoremap <Leader>wl <C-W>l
nnoremap <Leader>ws <C-W>s
nnoremap <Leader>w- <C-W>s
nnoremap <Leader>wv <C-W>v
nnoremap <Leader>w\| <C-W>v
" Tab operation
" (切換標籤)
nnoremap tn gt
nnoremap tp gT
" ==================================================
" Show all the provided actions via `:actionlist`
" ==================================================
" project search
"相當於IDEA的兩次shift按鈕
nnoremap <Leader>se :action SearchEverywhere<CR>
"查找用法
nnoremap <Leader>fu :action FindUsages<CR>
"打斷點
nnoremap <Leader>bb :action ToggleLineBreakpoint<CR>
"查看所有斷點
nnoremap <Leader>br :action ViewBreakpoints<CR>
"DUG啓動
nnoremap <Leader>cd :action ChooseDebugConfiguration<CR>
"跳轉到Action
nnoremap <Leader>ga :action GotoAction<CR>
"跳轉到實體類
nnoremap <Leader>gc :action GotoClass<CR>
"跳轉到聲明
nnoremap <Leader>gd :action GotoDeclaration<CR>
"跳轉到文件
nnoremap <Leader>gf :action GotoFile<CR>
"跳轉到實現類
nnoremap <Leader>gi :action GotoImplementation<CR>
"跳轉到測試類(沒有則自動建立)
nnoremap <Leader>gt :action GotoTest<CR>
"顯示當前文件路徑
nnoremap <Leader>fp :action ShowFilePath<CR>
"激活maven窗口
nnoremap <Leader>mv :action ActivateMavenProjectsToolWindow<CR>
"修改所有的關聯名字
nnoremap <Leader>re :action RenameElement<CR>
"修改當前文件的文件名
nnoremap <Leader>rf :action RenameFile<CR>
"顯示用法
nnoremap <Leader>su :action ShowUsages<CR>
"關閉活動顯示板
nnoremap <Leader>tc :action CloseActiveTab<CR>
"以下是不常用
"打開命令管理器
nnoremap <Leader>tl Vy<CR>:action ActivateTerminalToolWindow<CR>
vnoremap <Leader>tl y<CR>:action ActivateTerminalToolWindow<CR>
" built in search looks better
" (查找字符串)
nnoremap / :action Find<CR>
" but preserve ideavim search
" (vim自帶的搜索)
nnoremap <Leader>/ /
"添加註釋
nnoremap <Leader>;; :action CommentByLineComment<CR>
"改變視圖
nnoremap <Leader>cv :action ChangeView<CR>
"跳轉到標緻
nnoremap <Leader>gs :action GotoSymbol<CR>
"
nnoremap <Leader>ic :action InspectCode<CR>
nnoremap <Leader>oi :action OptimizeImports<CR>
nnoremap <Leader>pm :action ShowPopupMenu<CR>
"正常啓動工程
nnoremap <Leader>rc :action ChooseRunConfiguration<CR>
.ideavim配置文件講解
在.ideavim中,註釋寫法爲:
" xxx
第一條命令let mapleader=',' 就是vim命令調用模式要用到的命令,具體怎麼用,下面將會進行講解。
接下來的set開頭的命令,都是vim配置命令,比如搜索時開啓高亮,顯示行數等等。
然後就是命令nnoremap。
首先說一下命令map的意思:比如ctrl + d在命令模式是向下滾屏,在編輯模式是減少縮進(可能不準確),那麼如果使用命令map來覆蓋ctrl + d命令,則會將命令模式和編輯模式下的命令都給覆蓋掉。而nnoremap命令則只會覆蓋命令模式下的命令。這裏再講一下命令inoremap,這個命令表示的是在編輯模式下覆蓋命令,不過這個命令一般用得少。
自定義快捷鍵
比如命令: nohisearch,是指消除搜索之後的高亮顯示。如果定義自定義快捷鍵,則這樣定義:
nnoremap <Leader>sc :nohisearch<CR>
這裏的就是開頭定義的,。命令的前半部分nnoremap <Leader>sc代表的就是在命令模式下,使用命令,sc代替命令: nohisearch(是規定,具體啥意思我也沒查到)。所以在IDEA的編輯區在命令模式下使用命令,sc,就可以實現消除高亮的搜索結果
ideavim的action命令。
先來在idea中輸入命令```:actionlist``,然後回車即可看到非常多的action命令。很多命令都非常實用,比如
Go to Class //打開查找類的搜索框
Go to File //打開查找File的搜索框
使用這些action命令,只需要輸入:
: action GotoClass