Vim命令合集

命令歷史

:/開頭的命令都有歷史紀(jì)錄馆匿,可以首先鍵入:或/然后按上下箭頭來選擇某個歷史命令。

啟動vim

在命令行窗口中輸入以下命令即可

  • vim 直接啟動vim
  • vim filename 打開vim并創(chuàng)建名為filename的文件

文件命令

  • 打開單個文件vim file
  • 同時打開多個文件vim file1 file2 file3 ...
  • 在vim窗口中打開一個新文件:open file
  • 在新窗口中打開文件:split file
  • 切換到下一個文件:bn
  • 切換到上一個文件:bp
  • 查看當(dāng)前打開的文件列表燥滑,當(dāng)前正在編輯的文件會用[]括起來渐北。:args
  • 打開遠(yuǎn)程文件,比如ftp或者share folder:e ftp://192.168.10.76/abc.txt或者:e \\qadrive\test\1.txt

vim的模式

  • 正常模式(按Esc或Ctrl+[進(jìn)入) 左下角顯示文件名或?yàn)榭?/li>
  • 插入模式(按i鍵進(jìn)入) 左下角顯示--INSERT--
  • 可視模式(不) 左下角顯示--VISUAL--
  • 導(dǎo)航命令

移動命令

  • ^:移動光標(biāo)到行首铭拧;
  • $:移動光標(biāo)到行尾赃蛛;
  • ctrl-b:類似于鍵盤上的"PgUp"(b為backword)
  • ctrl-f:類似于鍵盤上的"PgDn"(f為forword)
  • G:移動到末行;
  • 1G:移動到首行搀菩;
  • 50G:移動到50行呕臂;
  • H:移動到當(dāng)前窗口的首行;
  • M:移動到當(dāng)前窗口的中間位置秕磷;
  • L:移動光標(biāo)到當(dāng)前窗口的最后一行诵闭;
  • w:光標(biāo)移動到下一個單詞的詞首;注:對于中文澎嚣,連續(xù)的多個漢字作為一個word疏尿。
  • 2w:重復(fù)執(zhí)行w操作2次;
  • e:光標(biāo)移動到下一個單詞的詞尾易桃;
  • 5e:重復(fù)執(zhí)行e操作5次褥琐;
  • b:向前移動光標(biāo),移動到前一個單詞的詞首晤郑;

句字(sentences)直接移動操作:

  • ):光標(biāo)移動到下一句敌呈;
  • (:光標(biāo)移動到上一句;
  • 3):光標(biāo)移動到向下3句

段落(paragraphs)直接移動操作:

  • {:向上移動一個段落造寝;
  • }:向下移動一個段落
  • 3}:向下移動3個段落

更多操作在vim Normal模式下輸入 :help cursor-motions

vim

http://blog.csdn.net/richerg85/article/details/17636827

vim 快速選中并復(fù)制粘貼替換一個單詞

  1. 光標(biāo)移動到aaa的開頭磕洪,按 v 按e 按y
  2. 光標(biāo)移動到bbb的開頭,按 v 按e 按p
    也就說诫龙,快速選中一個單詞析显,按v按e即可。
  • 復(fù)制一個單詞: yaw
  • 復(fù)制一行: yim 光標(biāo)在中間

插入命令

  • i 在當(dāng)前位置生前插入
  • I 在當(dāng)前行首插入
  • a 在當(dāng)前位置后插入
  • A 在當(dāng)前行尾插入
  • o 在當(dāng)前行之后插入一行
  • O 在當(dāng)前行之前插入一行

查找命令

  • /text  查找text签赃,按n健查找下一個谷异,按N健查找前一個。
  • ?text  查找text锦聊,反向查找歹嘹,按n健查找下一個,按N健查找前一個孔庭。
  • vim中有一些特殊字符在查找時需要轉(zhuǎn)義  .*[]^%/?~$
  • :set ignorecase  忽略大小寫的查找
  • :set noignorecase  不忽略大小寫的查找
  • 查找很長的詞尺上,如果一個詞很長,鍵入麻煩,可以將光標(biāo)移動到該詞上尖昏,按*#鍵即可以該單詞進(jìn)行搜索仰税,相當(dāng)于/搜索构资。而#命令相當(dāng)于?搜索抽诉。
  • :set hlsearch  高亮搜索結(jié)果,所有結(jié)果都高亮顯示吐绵,而不是只顯示一個匹配迹淌。
  • :set nohlsearch  關(guān)閉高亮搜索顯示
  • :nohlsearch  關(guān)閉當(dāng)前的高亮顯示,如果再次搜索或者按下n或N鍵己单,則會再次高亮唉窃。
  • :set incsearch  逐步搜索模式,對當(dāng)前鍵入的字符進(jìn)行搜索而不必等待鍵入完成纹笼。
  • :set wrapscan  重新搜索纹份,在搜索到文件頭或尾時,返回繼續(xù)搜索廷痘,默認(rèn)開啟蔓涧。

替換命令

  • ra 將當(dāng)前字符替換為a,當(dāng)期字符即光標(biāo)所在字符笋额。
  • s/old/new/ 用old替換new元暴,替換當(dāng)前行的第一個匹配
  • s/old/new/g 用old替換new,替換當(dāng)前行的所有匹配
  • %s/old/new/ 用old替換new兄猩,替換所有行的第一個匹配
  • %s/old/new/g 用old替換new茉盏,替換整個文件的所有匹配
  • :10,20 s/^/ /g 在第10行知第20行每行前面加四個空格,用于縮進(jìn)枢冤。
  • ddp 交換光標(biāo)所在行和其下緊鄰的一行鸠姨。

移動命令

  • h 左移一個字符
  • l 右移一個字符,這個命令很少用淹真,一般用w代替讶迁。
  • k 上移一個字符
  • j 下移一個字符
  • 以上四個命令可以配合數(shù)字使用,比如20j就是向下移動20行趟咆,5h就是向左移動5個字符添瓷,在Vim中,很多命令都可以配合數(shù)字使用值纱,比如刪除10個字符10x鳞贷,在當(dāng)前位置后插入3個!虐唠,3a搀愧!<Esc>,這里的Esc是必須的,否則命令不生效咱筛。
  • w 向前移動一個單詞(光標(biāo)停在單詞首部)搓幌,如果已到行尾,則轉(zhuǎn)至下一行行首迅箩。此命令快溉愁,可以代替l命令。
  • b 向后移動一個單詞 2b 向后移動2個單詞
  • e饲趋,同w拐揭,只不過是光標(biāo)停在單詞尾部
  • ge,同b奕塑,光標(biāo)停在單詞尾部堂污。
  • ^ 移動到本行第一個非空白字符上。
  • 0(數(shù)字0)移動到本行第一個字符上龄砰,
  • <HOME> 移動到本行第一個字符盟猖。同0健。
  • $ 移動到行尾 3$ 移動到下面3行的行尾
  • gg 移動到文件頭换棚。 = [[
  • G(shift + g) 移動到文件尾式镐。 = ]]
  • f(find)命令也可以用于移動,fx將找到光標(biāo)后第一個為x的字符圃泡,3fd將找到第三個為d的字符碟案。
  • F 同f,反向查找颇蜡。
  • 跳到指定行价说,:n,回車风秤,比如跳到240行就是 :240回車鳖目。另一個方法是行號+G,比如230G跳到230行缤弦。
  • Ctrl + e 向下滾動一行
  • Ctrl + y 向上滾動一行
  • Ctrl + d 向下滾動半屏
  • Ctrl + u 向上滾動半屏
  • Ctrl + f 向下滾動一屏
  • Ctrl + b 向上滾動一屏

撤銷和重做

  • u 撤銷(Undo)
  • U 撤銷對整行的操作
  • Ctrl + r 重做(Redo)领迈,即撤銷的撤銷。

刪除命令

  • x 刪除當(dāng)前字符
  • 3x 刪除當(dāng)前光標(biāo)開始向后三個字符
  • X 刪除當(dāng)前字符的前一個字符碍沐。X=dh
  • dl 刪除當(dāng)前字符狸捅, dl=x
  • dh 刪除前一個字符
  • dd 刪除當(dāng)前行
  • dj 刪除上一行
  • dk 刪除下一行
  • 10d 刪除當(dāng)前行開始的10行。
  • D 刪除當(dāng)前字符至行尾累提。D=d$
  • d$ 刪除當(dāng)前字符之后的所有字符(本行)
  • kdgg 刪除當(dāng)前行之前所有行(不包括當(dāng)前行)
  • jdG(jd shift + g) 刪除當(dāng)前行之后所有行(不包括當(dāng)前行)
  • :1,10d 刪除1-10行
  • :11,$d 刪除11行及以后所有的行
  • :1,$d 刪除所有行
  • J(shift + j)  刪除兩行之間的空行尘喝,實(shí)際上是合并兩行。

拷貝和粘貼

  • yy 拷貝當(dāng)前行
  • nyy 拷貝當(dāng)前后開始的n行斋陪,比如2yy拷貝當(dāng)前行及其下一行朽褪。
  • p 在當(dāng)前光標(biāo)后粘貼,如果之前使用了yy命令來復(fù)制一行置吓,那么就在當(dāng)前行的下一行粘貼。
  • shift+p 在當(dāng)前行前粘貼
  • :1,10 co 20 將1-10行插入到第20行之后缔赠。
  • :1,$ co $ 將整個文件復(fù)制一份并添加到文件尾部衍锚。
  • 正常模式下按v(逐字)或V(逐行)進(jìn)入可視模式,然后用jklh命令移動即可選擇某些行或字符嗤堰,再按y即可復(fù)制
  • ddp交換當(dāng)前行和其下一行
  • xp交換當(dāng)前字符和其后一個字符

剪切命令

  • 正常模式下按v(逐字)或V(逐行)進(jìn)入可視模式戴质,然后用jklh命令移動即可選擇某些行或字符,再按d即可剪切
  • ndd 剪切當(dāng)前行之后的n行梁棠。利用p命令可以對剪切的內(nèi)容進(jìn)行粘貼
  • :1,10d 將1-10行剪切置森。利用p命令可將剪切后的內(nèi)容進(jìn)行粘貼。
  • :1, 10 m 20 將第1-10行移動到第20行之后符糊。

退出命令

  • :wq 保存并退出
  • ZZ 保存并退出
  • :q! 強(qiáng)制退出并忽略所有更改
  • :e! 放棄所有修改,并打開原來文件呛凶。

窗口命令

  • :split:new 打開一個新窗口男娄,光標(biāo)停在頂層的窗口上
  • :split file:new file 用新窗口打開文件
  • split打開的窗口都是橫向的,使用vsplit可以縱向打開窗口漾稀。
  • Ctrl+ww 移動到下一個窗口
  • Ctrl+wj 移動到下方的窗口
  • Ctrl+wk 移動到上方的窗口

關(guān)閉窗口

  • :close 最后一個窗口不能使用此命令模闲,可以防止意外退出vim。
  • :q 如果是最后一個被關(guān)閉的窗口崭捍,那么將退出vim尸折。
  • ZZ 保存并退出。
  • 關(guān)閉所有窗口殷蛇,只保留當(dāng)前窗口:only

錄制宏

  • q鍵加任意字母開始錄制实夹,再按q鍵結(jié)束錄制(這意味著vim中的宏不可嵌套),使用的時候@加宏名粒梦,比如qa亮航。。匀们。q錄制名為a的宏缴淋,@a使用這個宏。

執(zhí)行shell命令

  • :!command
  • :!ls 列出當(dāng)前目錄下文件
  • :!perl -c script.pl 檢查perl腳本語法泄朴,可以不用退出vim重抖,非常方便。
  • :!perl script.pl 執(zhí)行perl腳本祖灰,可以不用退出vim钟沛,非常方便。
  • :suspendCtrl - Z 掛起vim夫植,回到shell讹剔,按fg可以返回vim油讯。

注釋命令

perl程序中#開始的行為注釋,所以要注釋某些行延欠,只需在行首加入#

  • 3,5 s/^/#/g 注釋第3-5行
  • 3,5 s/^#//g 解除3-5行的注釋
  • 1,$ s/^/#/g 注釋整個文檔陌兑。
  • :%s/^/#/g 注釋整個文檔,此法更快由捎。

幫助命令

  • :help or F1 顯示整個幫助
  • :help xxx 顯示xxx的幫助兔综,比如 :help i, :help CTRL-[(即Ctrl+[的幫助)。
  • :help 'number' Vim選項(xiàng)的幫助用單引號括起
  • :help <Esc> 特殊鍵的幫助用<>擴(kuò)起
  • :help -t Vim啟動參數(shù)的幫助用-
  • :help i_<Esc> 插入模式下Esc的幫助狞玛,某個模式下的幫助用模式_主題的模式
    幫助文件中位于||之間的內(nèi)容是超鏈接软驰,可以用Ctrl+]進(jìn)入鏈接,Ctrl+o(Ctrl + t)返回
    其他非編輯命令

來自:http://www.cnblogs.com/softwaretesting/archive/2011/07/12/2104435.html

IdeaVim插件使用技巧

在 IDEA Intellij小技巧和插件 一文中簡單介紹了一下IdeaVim插件心肪。在這里詳細(xì)總結(jié)一下這個插件在日常編程中的一些常用小技巧锭亏。供有興趣使用這個插件,但對Vim還不十分熟悉的朋 友參考硬鞍。當(dāng)然基本的hjkl移動光標(biāo)和幾種常見模式等等基本概念就略過不提了慧瘤。

為了確保只包含常用操作,這里提到的技巧都沒有從現(xiàn)成文檔里抄固该,而是憑記憶列出(不常用自然就不記得了)锅减。估計會有所遺漏,慢慢再補(bǔ)充伐坏。

1. 切換Vim模擬器狀態(tài)

這個插件允許設(shè)置一個快捷鍵一鍵開啟或關(guān)閉怔匣,在切換模式時會同時自動切換keymap,十分方便桦沉。默認(rèn)鍵位是Ctrl+Alt+V每瞒,但這個鍵位覆蓋了很常用的“抽取局部變量”功能,建議重設(shè)永部,在setting->keymap中查找VIM Emulator即可独泞。

由 于開啟和關(guān)閉狀態(tài)分別使用兩套keymap,因此兩套都需要設(shè)定苔埋∨成埃可以把兩套keymap下的都設(shè)為一樣的鍵,也就是用同一個鍵切換组橄。但個人建議設(shè)為不同 的鍵荞膘,這樣能清楚知道當(dāng)前處于那種模式中。并且玉工,如果在開啟Vim的插入模式下關(guān)閉Vim模擬器羽资,下次進(jìn)入時仍然是插入模式,比較混亂(因?yàn)槟汴P(guān)閉模擬器 就是為了使用默認(rèn)keymap輸入大段代碼遵班,重新開啟Vim模擬器就是為了使用普通模式下的命令)屠升。因此建議把Vim keymap中的Exit Insert Mode設(shè)為與另一個keymap的Vim Emulator相同的鍵(也就是進(jìn)入Vim模擬器的快捷鍵)潮改。例如,我使用的設(shè)定是:

  • Default keymap -> Vim Emulator : Ctrl+; (用Ctrl+分號開啟Vim模擬器)
  • Vim keymap -> Vim Emulator : Ctrl+, (用Ctrl+逗號關(guān)閉Vim模擬器)
  • Vim keymap -> Vim Emulator : Ctrl+; (用Ctrl+分號退出插入模式腹暖,進(jìn)入普通模式)

這樣汇在,在任何時候只要連按兩下ctrl+分號,就能保證必定在Vim模擬器的普通模式中脏答。

2. ScrollOff 參數(shù)

啟 動Intellij后在Vim模擬器下輸入命令 :set so=5 可以令屏幕滾動時在光標(biāo)上下方保留5行預(yù)覽代碼(也就是光標(biāo)會在第5行觸發(fā)向上滾動糕殉,或者在倒數(shù)第5行觸發(fā)向下滾動)。在代碼窗口比較狹小時(例如單步跟 蹤調(diào)試時)非常方便殖告“⒌可惜僅在Vim模擬器開啟時有效。

3. 行號定位

普 通模式下輸入 行號G 或 :行號<回車> 都能快速定位到某一行黄绩。區(qū)別在于前者在輸入行號時屏幕上沒有任何提示羡洁,后者則在Vim命令輸入框中可以看到輸入過程。(題外話:Sublime Text 2也是用 :行號 來快速定位到某行宝与,應(yīng)該是沿用了Vim的習(xí)慣)

4. 進(jìn)入修改

進(jìn)入插入模式的方式有很多焚廊,直接選用合適的方式進(jìn)入插入模式比進(jìn)入后再用箭頭鍵移動光標(biāo)要好。常用的有:

  • o - 在當(dāng)前行下方插入新行并自動縮進(jìn)
  • O - 在當(dāng)前行上方插入新行并自動縮進(jìn) (普通模式下的大寫字母命令用 shift+字母鍵 輸入习劫,下同)
  • i - 在當(dāng)前字符左方開始插入字符
  • a - 在當(dāng)前字符右方開始插入字符
  • I - 光標(biāo)移動到行首并進(jìn)入插入模式
  • A - 光標(biāo)移動到行尾并進(jìn)入插入模式
  • s - 刪除光標(biāo)所在字符并進(jìn)入插入模式
  • S - 刪除光標(biāo)所在行并進(jìn)入插入模式
  • c< 范圍> - 刪除光標(biāo)所在位置周圍某個范圍的文本并進(jìn)入插入模式。關(guān)于范圍請看第5點(diǎn)嚼隘,常用的組合有:caw - 刪除一個單詞包括它后面的空格并開始插入诽里; ciw - 刪除一個單詞并開始插入; ci" - 刪除一個字符串內(nèi)部文本并開始插入飞蛹; c$ - 從光標(biāo)位置刪除到行尾并開始插入谤狡; ct字符 - 從光標(biāo)位置刪除本行某個字符之前(保留該字符)并開始插入。等等卧檐。
  • C - 刪除光標(biāo)位置到行尾的內(nèi)容并進(jìn)入插入模式 (相當(dāng)于c$)
  • r - 修改光標(biāo)所在字符墓懂,然后返回普通模式
  • R - 進(jìn)入覆蓋模式

5. 范圍操作

某些普通模式的動作命令后面可以追加一些表示范圍的指令,表示該動作將作用在整個范圍上霉囚。這類命令常用的有:

  • d<范圍> - 刪除一定范圍內(nèi)的文本
  • c<范圍> - 刪除一定范圍內(nèi)的文本并進(jìn)入插入模式
  • y<范圍> - 將范圍內(nèi)的文本放入0號和"號注冊欄
  • v<范圍> - 選擇范圍內(nèi)的文本
  • =<范圍> - 自動縮進(jìn)范圍內(nèi)的文本
  • gU<范圍> - 將范圍內(nèi)的字符轉(zhuǎn)換為大寫
  • gu<范圍> - 將范圍內(nèi)的字符轉(zhuǎn)換為小寫
  • <范圍> - 將范圍中的內(nèi)容縮進(jìn)一格

  • <<范圍> - 將范圍中的內(nèi)容取消縮進(jìn)一格

常用的范圍指令有:

  • 空格 - 光標(biāo)所在位置字符捕仔。(例如 gU空格 - 將光標(biāo)位置字符轉(zhuǎn)為大寫)
  • 重復(fù)某些動作命令 - 光標(biāo)所在行。 (例如dd刪除一行盈罐,yy復(fù)制一行榜跌,cc刪除一行文本并開始插入,>> 當(dāng)前行縮進(jìn)一格盅粪,==自動縮進(jìn)當(dāng)前行)
  • $ - 從光標(biāo)位置到行尾
  • ^ - 從光標(biāo)位置到行首钓葫,不包含縮進(jìn)空白
  • 0 - 從光標(biāo)位置到行首,包含縮進(jìn)空白
  • gg - 從光標(biāo)位置到文件開頭
  • G - 從光標(biāo)位置到文件結(jié)尾
  • % - 從光標(biāo)位置到另一邊匹配的括號
  • f<字符> - 從光標(biāo)位置到光標(biāo)右邊某個字符首次出現(xiàn)的位置票顾,包括該字符
  • F<字符> - 從光標(biāo)位置到光標(biāo)左邊某個字符首次出現(xiàn)的位置础浮,包括該字符
  • t<字符> - 從光標(biāo)位置到光標(biāo)右邊某個字符首次出現(xiàn)的位置帆调,包括該字符
  • F<字符> - 從光標(biāo)位置到光標(biāo)左邊某個字符首次出現(xiàn)的位置,包括該字符
  • /正則表達(dá)式 - 從光標(biāo)位置到下一個匹配正則表達(dá)式的位置(跨行)
  • ?正則表達(dá)式 - 從光標(biāo)位置到上一個匹配正則表達(dá)式的位置(跨行)
  • aw - 一個單詞加一個空格 (a可理解為“一個”豆同,下同)
  • iw - 一個單詞 (i可理解為in番刊,下同)
  • a" - 一個字符串包括雙引號
  • i" - 一個字符串內(nèi)部文本
  • a< - 一組< >包含的文本,包括< >號本身
  • 同理類推: i<, a[, i[, a(, i(

注意:真正vim中的it范圍(一對xml標(biāo)簽內(nèi)部)在ideaVim中不生效撵枢。

用/或?命令查找時,正則表達(dá)式默認(rèn)大小寫敏感精居,如果需要不敏感锄禽,可以在正則表達(dá)式開始處加上\c標(biāo)志。例如 /\cabc 可以匹配到 ABC靴姿。下面提到的:s命令同樣適用沃但。

6. 選擇文本

在Vim中,選擇文本需要進(jìn)入“可視模式”(Visual Mode)佛吓,這個名稱比較奇怪宵晚,它的來由據(jù)說是因?yàn)樵赩im的前身Vi中,選擇區(qū)域是不可見的维雇。在Vim中選擇區(qū)域會高亮顯示淤刃,因此稱為“可視模式”。

  • v - 進(jìn)入字符選擇模式吱型, V - 進(jìn)入行選擇模式逸贾, Ctrl+v - 進(jìn)入塊選擇模式。
    進(jìn)入相應(yīng)模式后移動光標(biāo)即可選中文本津滞。過程中可按o鍵令光標(biāo)在選區(qū)兩端切換铝侵。
    在塊選擇模式中選中多行,然后按I或A后輸入文本触徐,再退出插入模式咪鲜,所輸入的文本將自動加入到每一行的開頭或結(jié)尾。

7. 復(fù)制粘貼

在 Vim模式下撞鹉,復(fù)制粘貼并不直接使用系統(tǒng)的剪貼板疟丙,而是使用Vim提供的多個“寄存器”,每個寄存器都以一個字符來表示孔祸。關(guān)于寄存器的詳細(xì)說明可以看這里 http://blah.blogsome.com/2006/04/27/vim_tut_register/ (隨便google的一個網(wǎng)頁)隆敢,這里簡單列一些常用的操作技巧 (注意,vim使用雙引號"來作為選擇寄存器的命令崔慧,因此下文中的雙引號均指在普通模式下按雙引號鍵):

a)用y命令將文本存入寄存器后拂蝎,如果想在別處替換原有內(nèi)容,可以先用v命令選中原有內(nèi)容惶室,然后用p命令粘貼温自。但第一次粘貼后玄货,默認(rèn)的寄存器 "將被替換為剛剛刪除的內(nèi)容。如果要再次粘貼之前復(fù)制的內(nèi)容悼泌,需要使用 "0p 命令組合來復(fù)制松捉。也可以進(jìn)入插入模式后用 Ctrl+r 0 來復(fù)制,例如 ciw<Ctrl+r>0 命令組合將用粘貼內(nèi)容替換光標(biāo)處的一個單詞馆里,并停留在插入模式隘世。

b)在Windows下,寄存器 + 和 * 都代表系統(tǒng)剪貼板鸠踪,可以互換使用丙者,選一個順手的即可。例如 "+yy 命令組合可將當(dāng)前行復(fù)制到系統(tǒng)剪貼板营密。 ci"<Ctrl+r>* 命令組合則將系統(tǒng)剪貼板的內(nèi)容替換字符串的內(nèi)部文本械媒。

c) 寄存器1至9記錄之前九次的刪除大段文本,每次超過一行的刪除操作都會導(dǎo)致這9個寄存器的內(nèi)容發(fā)生位移评汰,最近刪除的文本會存入寄存器1纷捞。但只有刪除超過1 行時才會影響寄存器1至9,行內(nèi)的刪除內(nèi)容則會被存入寄存器-(減號)被去。如果用q命令錄制宏時不涉及跨行刪除主儡,可以在宏中直接使用這9個寄存器來暫存文 本。(在Vim中惨缆,復(fù)制內(nèi)容與錄制宏共享同一套寄存器缀辩,因此我習(xí)慣把字母寄存器留給宏使用)

d) 普通模式下小寫p把寄存器內(nèi)容復(fù)制到當(dāng)前位置之后,大寫P把寄存器內(nèi)容復(fù)制到當(dāng)前位置之前踪央。

e) 使用 :regs 命令可以列出當(dāng)前所有寄存器的內(nèi)容

8. 一些插入模式下的常用快捷鍵

  • Ctrl+h - 刪除光標(biāo)左邊字符
  • Ctrl+w - 刪除光標(biāo)左邊的單詞
  • Ctrl+y - 復(fù)制上方的一個字符
  • Ctrl+e - 復(fù)制下方的一個字符
  • Ctrl+r 0 - 插入前一次用y命令寄存的內(nèi)容
  • Ctrl+r * - 插入系統(tǒng)剪貼板的內(nèi)容
  • Ctrl+r <寄存器名稱> - 插入指定寄存器的內(nèi)容
  • Ctrl+a - 插入前一次插入模式所鍵入的內(nèi)容
  • Ctrl+o - 執(zhí)行一個普通模式下的命令然后返回插入模式。 例如 Ctrl+o A 相當(dāng)于按 End鍵瓢阴, Ctrl+o I相當(dāng)于按Home鍵

9. 退出插入模式

退出插入模式可以用 ESC 鍵畅蹂,但鍵位太遠(yuǎn)。其實(shí)也可以用 Ctrl+[ 鍵退出插入模式 荣恐。當(dāng)然也可以用第1點(diǎn)自定義的Ctrl+;快捷鍵液斜,但這不是標(biāo)準(zhǔn)vim按鍵,會養(yǎng)成不良習(xí)慣叠穆,不建議使用少漆。

10. 重復(fù)操作

普通模式下按. (小數(shù)點(diǎn))可重復(fù)上一次的修改操作

  • & - 重復(fù)上一次的:s替換命令
  • @@ - 重復(fù)上一次執(zhí)行的宏

11. 跳轉(zhuǎn)

  • Ctrl+] 跳轉(zhuǎn)到當(dāng)前標(biāo)識符的定義位置 (相當(dāng)于在當(dāng)前光標(biāo)位置的單詞上按住ctrl用鼠標(biāo)點(diǎn)擊)
  • Ctrl+o 回退一步 (go back)
  • Ctrl+i 前進(jìn)一步 (go forward)
  • `. 跳轉(zhuǎn)到之前修改位置
  • `` 在前一次跳轉(zhuǎn)位置與當(dāng)前位置間切換
  • 行號G 或 :行號<回車> 跳轉(zhuǎn)到某一行
  • gg 跳轉(zhuǎn)到文件開頭
  • G 跳轉(zhuǎn)到文件末尾
  • H 跳轉(zhuǎn)到屏幕頂端(如果設(shè)置了set so=n,則跳轉(zhuǎn)到第n行)
  • L 跳轉(zhuǎn)到屏幕底端(如果設(shè)置了set so=n硼被,則跳轉(zhuǎn)到倒數(shù)第n行)
  • M 跳轉(zhuǎn)到屏幕中間
  • f 或 F 跳轉(zhuǎn)到本行某個字符示损,小寫f向右查找,大寫F向左查找嚷硫。用;或,在匹配間切換
  • t 或 T 跳轉(zhuǎn)到本行某個字符之前检访,小寫t向右查找始鱼,大寫T向左查找。用;或,在匹配間切換
  • /正則表達(dá)式 跳轉(zhuǎn)到下一個匹配脆贵。用n或N在匹配間切換医清。
  • ?正則表達(dá)式 跳轉(zhuǎn)到上一個匹配。用n或N在匹配間切換卖氨。
    (結(jié)合前面第5點(diǎn)会烙,你也許注意到了,在指定范圍時筒捺,使用跳轉(zhuǎn)命令將指定一個從光標(biāo)位置到跳轉(zhuǎn)目標(biāo)的區(qū)域)

12 書簽

在 普通模式下按 m<小寫字母> 即可定義書簽柏腻,按 `<字母> 則可跳轉(zhuǎn)到某個書簽的精確位置,按 '<字母>可跳轉(zhuǎn)到某個書簽所在行的行首(用來錄制宏時比較有用)焙矛。最常用的自然是mm, mn, mj, mk, ml這幾個順手的鍵位葫盼。
真正的vim中的全局書簽 m<大寫字母> 在目前IdeaVim版本中不生效。需要定義全局書簽可以使用Idea原本的 F11 + 數(shù)字 方式

13 文本替換

  • 使用 :s/正則表達(dá)式/替換文本/ 可在本行內(nèi)替換首次出現(xiàn)的匹配
  • 使用 :s/正則表達(dá)式/替換文本/g 在本行內(nèi)替換所有出現(xiàn)的匹配
  • 使用 :%s/正則表達(dá)式/替換文本/g 在當(dāng)前文件內(nèi)替換所有出現(xiàn)的匹配

在 可視模式下選中文本后村斟,使用:'<,'>s/正則表達(dá)式/替換文本/g 命令可在選中區(qū)域中替換文本贫导。其中'<,'>部分在可視模式下,按:冒號后自動加入蟆盹,直接輸入s命令即可孩灯。但有效區(qū)域只能以行為單位。真正 Vim中的 %V 標(biāo)志在IdeaVim中不生效逾滥。

  • 11 代碼折疊
  • zo - 打開折疊
  • zc - 關(guān)閉折疊

14 宏定義

在 IdeaVim中定義宏比Idea自帶的宏功能要輕量許多峰档。按在普通模式下 q<寄存器名稱> 即可開始把后續(xù)按鍵序列錄制到指定寄存器中(寄存器參考前面第7條)。錄制完畢進(jìn)入普通模式再按q鍵即可停止錄制寨昙。之后用 @<寄存器名稱> 即可重放讥巡。需要注意的是宏和復(fù)制粘貼共用一套寄存器,因此在錄制宏時就注意不要把當(dāng)前宏正在使用的寄存器用來復(fù)制了舔哪。寄存器內(nèi)容是自動保存的欢顷,重啟 Idea仍然生效。但I(xiàn)deaVim沒有導(dǎo)出宏獨(dú)立保存的功能捉蚤。因此最好把用來保存宏的寄存器和用來復(fù)制粘貼的寄存器分開抬驴,不要同一個寄存器有時用來記錄 宏,有時用來復(fù)制粘貼缆巧。我的習(xí)慣是鍵盤左手區(qū)用來保存一些長期使用的宏(比如說我有一個宏專門用來把pom.xml中的版本號抽取到property區(qū) 域布持,原來的位置則改用${property}引用)。右手區(qū)的hjklnm鍵用來保存一些臨時宏陕悬。yuiop五個寄存器保留用來復(fù)制粘貼题暖。如果錄制的宏不 涉及刪除大段代碼,寄存器1至9也可以用來進(jìn)行復(fù)制粘貼。

執(zhí)行一次宏后芙委,可以用@@命令重復(fù)上一次執(zhí)行的宏逞敷。

在Idea 中錄制宏時,如果觸發(fā)了代碼自動完成灌侣,在自動完成列表啟動的狀態(tài)輸入的字符不會被記錄推捐。因此最好在Setting -> Code Completion -> Autopopup code completion中把延遲設(shè)為500ms以上或干脆關(guān)掉。在錄制宏的過程中避免觸發(fā)代碼自動完成功能侧啼。

錄制一些長期有效的宏時牛柒,開始錄制后,最好先用0痊乾,^皮壁,T, F, $等命令把光標(biāo)對齊到行首行末或某個特定起始位置(比如說用 F" 跳轉(zhuǎn)到字符串的左邊引號),再用一個f或/指令跳轉(zhuǎn)到操作位置哪审,這樣的宏就不用必須把光標(biāo)放在某個特定字符才能使用了蛾魄。

15. 一些常用組合技

  • 全選: ggvG
  • 調(diào)換兩個字符位置: xp
  • 復(fù)制一行: yyp
  • 調(diào)換兩行位置: ddp
  • 插入模式下到行尾繼續(xù)輸入(相當(dāng)于End鍵): Ctrl+o A 或 Ctrl+[ A
  • 插入模式下到行首繼續(xù)輸入(相當(dāng)于Home鍵): Ctrl+o I 或 Ctrl+[ I
  • 到類定義位置(適用于正確縮進(jìn)的public,protected類) : ?^p回車

16. 一些在目前版本已知沒有實(shí)現(xiàn)的一些常用Vim功能

(如果對Vim不熟悉可以跳過這節(jié))

  • a)let命令 (沒有l(wèi)et命令就無法導(dǎo)出/導(dǎo)入寄存器內(nèi)容湿滓,也就是無法導(dǎo)入宏)
  • b):g命令 (在文本處理中很有用的一個命令滴须,在編程中倒是不那么常用)
  • c)!命令 (執(zhí)行shell命令)
  • d)大部分正則表達(dá)式標(biāo)記 (例如 %V, \v 等等)
  • e) 某些多鍵命令雙擊最后一個字符表示作用于當(dāng)前行叽奥。例如在Vim中g(shù)UU可以把當(dāng)前行轉(zhuǎn)換為大寫扔水,在IdeaVim中無效,實(shí)現(xiàn)同樣功能可以先用V命令選中當(dāng)前行朝氓,再用gU轉(zhuǎn)換為大寫魔市。
  • f)關(guān)于窗口操作的大部分命令 (Ctrl+w系列命令, :split等)
  • g)所有Vim腳本插件 (不過大部分可以用Idea自身的功能和插件來補(bǔ)償)

嗯,差點(diǎn)忘了赵哲,在普通模式下按u撤銷上一個修改(相當(dāng)于其他IDE的Ctrl+z)待德,按Ctrl+r重做被撤銷的修改。

http://my.oschina.net/pureboys/blog/182211](http://my.oschina.net/pureboys/blog/182211

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末枫夺,一起剝皮案震驚了整個濱河市磅网,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌筷屡,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件簸喂,死亡現(xiàn)場離奇詭異毙死,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)喻鳄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門扼倘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事再菊∽Υ” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵纠拔,是天一觀的道長秉剑。 經(jīng)常有香客問我,道長稠诲,這世上最難降的妖魔是什么侦鹏? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮臀叙,結(jié)果婚禮上略水,老公的妹妹穿的比我還像新娘。我一直安慰自己劝萤,他們只是感情好渊涝,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著床嫌,像睡著了一般跨释。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上既鞠,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天煤傍,我揣著相機(jī)與錄音,去河邊找鬼嘱蛋。 笑死蚯姆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的洒敏。 我是一名探鬼主播龄恋,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼凶伙!你這毒婦竟也來了郭毕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤函荣,失蹤者是張志新(化名)和其女友劉穎显押,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體傻挂,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乘碑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了金拒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兽肤。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出资铡,到底是詐尸還是另有隱情电禀,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布笤休,位于F島的核電站尖飞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏宛官。R本人自食惡果不足惜葫松,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望底洗。 院中可真熱鬧腋么,春花似錦、人聲如沸亥揖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽费变。三九已至摧扇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挚歧,已是汗流浹背扛稽。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滑负,地道東北人在张。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像矮慕,于是被迫代替她去往敵國和親帮匾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • vim 選擇文本痴鳄,刪除瘟斜,復(fù)制,粘貼 文本的選擇痪寻,對于編輯器來說螺句,是很基本的東西,也經(jīng)常被用到橡类,總結(jié)如下: v 從...
    壹首簡單的歌閱讀 880評論 0 7
  • 1.歷史命令 以:和/開頭的命令都有歷史紀(jì)錄壹蔓,可以首先鍵入:或/然后按上下箭頭來選擇某個歷史命令。 2.啟動vim...
    SandsLee閱讀 701評論 0 3
  • Vim命令合集 命令歷史 以:和/開頭的命令都有歷史紀(jì)錄猫态,可以首先鍵入:或/然后按上下箭頭來選擇某個歷史命令。 啟...
    王詩翔閱讀 447評論 0 1
  • 命令歷史 以:和/開頭的命令都有歷史紀(jì)錄,可以首先鍵入:或/然后按上下箭頭來選擇某個歷史命令亲雪。 啟動vim 在命令...
    隔壁cookie閱讀 379評論 0 0
  • 命令歷史 以:和/開頭的命令都有歷史紀(jì)錄勇凭,可以首先鍵入:或/然后按上下箭頭來選擇某個歷史命令。 啟動vim 在命令...
    Jack張ok閱讀 196評論 0 0