1. 程式人生 > >IdeaVim外掛使用技巧--JetBrains Plugin Vim

IdeaVim外掛使用技巧--JetBrains Plugin Vim

IDEA Intellij小技巧和外掛 一文中簡單介紹了一下IdeaVim外掛。在這裡詳細總結一下這個外掛在日常程式設計中的一些常用小技巧。供有興趣使用這個外掛,但對Vim還不十分熟悉的朋友參考。當然基本的hjkl移動游標和幾種常見模式等等基本概念就略過不提了。

為了確保只包含常用操作,這裡提到的技巧都沒有從現成文件裡抄,而是憑記憶列出(不常用自然就不記得了)。估計會有所遺漏,慢慢再補充。

  1. 切換Vim模擬器狀態

這個外掛允許設定一個快捷鍵一鍵開啟或關閉,在切換模式時會同時自動切換keymap,十分方便。預設鍵位是Ctrl+Alt+V,但這個鍵位覆蓋了很常用的“抽取區域性變數”功能,建議重設,在setting->keymap中查詢VIM Emulator即可。

由於開啟和關閉狀態分別使用兩套keymap,因此兩套都需要設定。可以把兩套keymap下的都設為一樣的鍵,也就是用同一個鍵切換。但個人建議設為不同的鍵,這樣能清楚知道當前處於那種模式中。並且,如果在開啟Vim的插入模式下關閉Vim模擬器,下次進入時仍然是插入模式,比較混亂(因為你關閉模擬器就是為了使用預設keymap輸入大段程式碼,重新開啟Vim模擬器就是為了使用普通模式下的命令)。因此建議把Vim keymap中的Exit Insert Mode設為與另一個keymap的Vim Emulator相同的鍵(也就是進入Vim模擬器的快捷鍵)。例如,我使用的設定是:
Default keymap -> Vim Emulator : Ctrl+; (用Ctrl+分號開啟Vim模擬器)
Vim keymap -> Vim Emulator : Ctrl+, (用Ctrl+逗號關閉Vim模擬器)
Vim keymap -> Vim Emulator : Ctrl+; (用Ctrl+分號退出插入模式,進入普通模式)
這樣,在任何時候只要連按兩下ctrl+分號,就能保證必定在Vim模擬器的普通模式中。

  1. ScrollOff 引數
    啟動Intellij後在Vim模擬器下輸入命令 :set so=5 可以令螢幕滾動時在游標上下方保留5行預覽程式碼(也就是游標會在第5行觸發向上滾動,或者在倒數第5行觸發向下滾動)。在程式碼視窗比較狹小時(例如單步跟蹤除錯時)非常方便。可惜僅在Vim模擬器開啟時有效。

  2. 行號定位
    普通模式下輸入 行號G 或 :行號<回車> 都能快速定位到某一行。區別在於前者在輸入行號時螢幕上沒有任何提示,後者則在Vim命令輸入框中可以看到輸入過程。(題外話:Sublime Text 2也是用 :行號 來快速定位到某行,應該是沿用了Vim的習慣)

  3. 進入修改
    進入插入模式的方式有很多,直接選用合適的方式進入插入模式比進入後再用箭頭鍵移動游標要好。常用的有:
    o - 在當前行下方插入新行並自動縮排
    O - 在當前行上方插入新行並自動縮排 (普通模式下的大寫字母命令用 shift+字母鍵 輸入,下同)
    i - 在當前字元左方開始插入字元
    a - 在當前字元右方開始插入字元
    I - 游標移動到行首並進入插入模式
    A - 游標移動到行尾並進入插入模式
    s - 刪除游標所在字元並進入插入模式
    S - 刪除游標所在行並進入插入模式
    c<範圍> - 刪除游標所在位置周圍某個範圍的文字並進入插入模式。關於範圍請看第5點,常用的組合有:caw - 刪除一個單詞包括它後面的空格並開始插入; ciw - 刪除一個單詞並開始插入; ci” - 刪除一個字串內部文字並開始插入; c

    ctC(c)
    r - 修改游標所在字元,然後返回普通模式
    R - 進入覆蓋模式

  4. 範圍操作
    某些普通模式的動作命令後面可以追加一些表示範圍的指令,表示該動作將作用在整個範圍上。這類命令常用的有:

d<範圍> - 刪除一定範圍內的文字 
c<範圍> - 刪除一定範圍內的文字並進入插入模式 
y<範圍> - 將範圍內的文字放入0號和"號註冊欄 
v<範圍> - 選擇範圍內的文字 
=<範圍> - 自動縮排範圍內的文字 
gU<範圍> - 將範圍內的字元轉換為大寫 
gu<範圍> - 將範圍內的字元轉換為小寫 
><範圍> - 將範圍中的內容縮排一格 
<<範圍> - 將範圍中的內容取消縮排一格 

常用的範圍指令有:

空格 - 游標所在位置字元。(例如 gU空格 - 將游標位置字元轉為大寫) 
重複某些動作命令 - 游標所在行。 (例如dd刪除一行,yy複製一行,cc刪除一行文字並開始插入,>> 當前行縮排一格,==自動縮排當前行) 
$ - 從游標位置到行尾 
^ - 從游標位置到行首,不包含縮排空白 
0 - 從游標位置到行首,包含縮排空白 
gg - 從游標位置到檔案開頭 
G - 從游標位置到檔案結尾 
% - 從游標位置到另一邊匹配的括號 
f<字元> - 從游標位置到游標右邊某個字元首次出現的位置,包括該字元 
F<字元> - 從游標位置到游標左邊某個字元首次出現的位置,包括該字元 
t<字元> - 從游標位置到游標右邊某個字元首次出現的位置,包括該字元 
F<字元> - 從游標位置到游標左邊某個字元首次出現的位置,包括該字元 
/正則表示式 - 從游標位置到下一個匹配正則表示式的位置(跨行) 
?正則表示式 - 從游標位置到上一個匹配正則表示式的位置(跨行) 
aw - 一個單詞加一個空格 (a可理解為“一個”,下同) 
iw - 一個單詞 (i可理解為in,下同) 
a" - 一個字串包括雙引號 
i" - 一個字串內部文字 
a< - 一組< >包含的文字,包括< >號本身 


同理類推: i<, a[, i[, a(, i( 
注意:真正vim中的it範圍(一對xml標籤內部)在ideaVim中不生效。 

    用/或?命令查詢時,正則表示式預設大小寫敏感,如果需要不敏感,可以在正則表示式開始處加上\c標誌。例如 /\cabc 可以匹配到 ABC。下面提到的:s命令同樣適用。 
  1. 選擇文字
    在Vim中,選擇文字需要進入“可視模式”(Visual Mode),這個名稱比較奇怪,它的來由據說是因為在Vim的前身Vi中,選擇區域是不可見的。在Vim中選擇區域會高亮顯示,因此稱為“可視模式”。
    v - 進入字元選擇模式, V - 進入行選擇模式, Ctrl+v - 進入塊選擇模式。
    進入相應模式後移動游標即可選中文字。過程中可按o鍵令游標在選區兩端切換。
    在塊選擇模式中選中多行,然後按I或A後輸入文字,再退出插入模式,所輸入的文字將自動加入到每一行的開頭或結尾。

  2. 複製貼上
    在Vim模式下,複製貼上並不直接使用系統的剪貼簿,而是使用Vim提供的多個“暫存器”,每個暫存器都以一個字元來表示。關於暫存器的詳細說明可以看這裡 http://blah.blogsome.com/2006/04/27/vim_tut_register/ (隨便google的一個網頁),這裡簡單列一些常用的操作技巧 (注意,vim使用雙引號”來作為選擇暫存器的命令,因此下文中的雙引號均指在普通模式下按雙引號鍵):

a)用y命令將文字存入暫存器後,如果想在別處替換原有內容,可以先用v命令選中原有內容,然後用p命令貼上。但第一次粘貼後,預設的暫存器”將被替換為剛剛刪除的內容。如果要再次貼上之前複製的內容,需要使用 “0p 命令組合來複制。也可以進入插入模式後用 Ctrl+r 0 來複制,例如 ciw

相關推薦

IdeaVim外掛使用技巧--JetBrains Plugin Vim

在 IDEA Intellij小技巧和外掛 一文中簡單介紹了一下IdeaVim外掛。在這裡詳細總結一下這個外掛在日常程式設計中的一些常用小技巧。供有興趣使用這個外掛,但對Vim還不十分熟悉的朋友參考。當然基本的hjkl移動游標和幾種常見模式等等基本概念就略過不提

webpack外掛基礎--webpack-plugin(二)

webpack-plugin基礎 如何建立webpack打包之後的 js 檔案 npm安裝webpack-plugin : npm i -D -webpack-plugin 使用前配置 1. 在webpack.config.js

Jenkins外掛之 Docker-Plugin 將slave執行在docker容器中

Jenkins外掛名稱 Docker plugin This plugin integrates Jenkins with Docker This plugin allows slaves to be dynamically provisioned using Docker. 外掛文

Sublime-Text3安裝、註冊、外掛安裝教程,vim模式的啟用

        由於自己總是重灌系統,每次找教程重新安裝還是有點麻煩,所以把安裝過程記下來,方便以後查閱。         使用的是debian系,所以使用apt命令安裝

深入解析webpack 外掛html-webpack-plugin

這個外掛用來簡化建立服務於 webpack bundle 的 HTML 檔案,尤其是對於在檔名中包含了 hash 值,而這個值在每次編譯的時候都發生變化的情況。你既可以讓這個外掛來幫助你自動生成 HTML 檔案,也可以使用 lodash 模板載入生成的 bundles,或者自己載入這些 bu

PS磨皮降噪外掛Imagenomic Professional Plugin Suite for Mac

Imagenomic Professional Plugin Suite for Mac(PS磨皮降噪外掛套件) v1709破解版下載地址 Imagenomic Professional Plugin Suite for Mac是Mac平臺上一款非常優秀的專業PS磨皮降噪外掛套件。imageno

webpack 外掛 html-webpack-plugin 的詳解 實現html檔案自動生成

最近在學習webpack,接觸到的第一個外掛就是html-webpack-plugin,那麼今天就來詳解一下它的用法吧。 先來上一個例子: let htmlWebpackPlugin = require('html-webpack-plugin') const path

外掛 html-webpack-plugin 的詳解

最近在學習webpack,接觸到的第一個外掛就是html-webpack-plugin,那麼今天就來詳解一下它的用法吧。 先來上一個例子: var htmlWebpackPlugin = require('html-webpack-plugin') const

intellij idea中安裝、配置mybatis外掛Free Mybatis plugin

場景:使用intellij idea開發,持久層dao使用了mybatis,經常需要編輯mybatis的××Mapper.java和××Mapper.xml,因為是接口裡一個方法對應xml裡的一個SQL的id,當需要找找個方法時候得拷貝找個方法名,然後在對應檔案中ctrl

slider外掛 滾動條外掛 基於g2-plugin-slider.js修改

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=

eclipse線上安裝maven外掛地址及plugin jar包地址

找了半天才找到Eclipse的maven外掛的地址 http://eclipse.org/m2e/ http://eclipse.org/m2e/download/ Latest m2e release (recommended) http://download.ecli

Cordova 掃碼外掛整理-cordova-plugin-qrscanner

在使用Cordova實現掃碼識別外掛有好幾個:barcode-scanner,zbar,qr-scanner 一、本章主要介紹qr-scanner,目前版本是V3 目前支援的平臺: 二、常用操作

jetty小技巧plugin方式下,如何調整啟動的埠號;jetty獨立部署時,如何修改上下文contextPath

1)plugin方式下,如何調整啟動的埠號 <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId&

Javascript筆記:(實踐篇)從jQuery外掛技巧說起-深切解析extend辦法(中篇)

1.1     對$.extend的懂得   上方的程式碼裡我編寫jQuery外掛應用到了¥.extend辦法。這裡要講講我以前對jQuery外掛開闢的誤會,這種誤會源自於我對jQuery外掛開闢懂得的膚淺。   在我前一家公司,有位做前端的同事很喜好把本身程式碼封裝成jQ

maven編譯外掛maven-compiler-plugin誤將WARNING當ERROR

【問題描述】 經常碰到這樣的問題,在eclipse中編譯是正常的,但是在maven編譯時不通過,錯誤資訊如下: E:\workspace\*.java:[760,31] 警告:sun.misc.BASE64Encoder 是 Sun 的專用 API,可能會在未來版本中刪除

idea 使用 外掛 技巧

idea 相關技巧 tomcat 相關 遠端debug JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,se

大神教你safari刪外掛技巧

導讀 對於 Mac 使用者來說,在 Safari 瀏覽器中新增擴充套件程式是非常有用的,用蘋果的話來說就是“讓你用自己想要的方式來探索網路”。那麼問題來了,我們應該如何刪除這些擴充套件程式呢?如果 Safari 的擴充套件程式造成了 Mac 宕機和其他故障

vim 游標快速移動技巧總結(vim高階操作的基礎)

以下說法,僅個人觀點。 vim移動方式,並非只有hjkl這樣簡單粗暴的方式。熟悉更多移動游標的方式,對其它類似複製、change、delete等操作都有意想不到的用處。比如d/abc表示刪除至abc字元之前,解釋一下就是/abc表示查詢關鍵詞abc,d表

測試覆蓋率外掛cobertura-maven-plugin

maven的測試覆蓋率外掛整合,首先修改工程的pom.xml檔案,新增cobertura-maven-plugin外掛,如下: 1.環境準備 <project> ... <reporting> <plugins

使用 maven 外掛 maven-shade-plugin 對可執行 java 工程及其全部依賴 jar 進行打包

現在基本上都是採用 maven 來進行開發管理,我有一個需求是需要把通過 maven 管理的 java 工程打成可執行的 jar 包,這樣也就是說必需把工程依賴的 jar 包也一起打包。而使用 maven 預設的 package 命令構建的 jar 包中只包括了工程自身的 class 檔案,並沒有包括依賴