標籤:style blog http color 使用 os io strong
本文的目的在於總結一些日常操作中比較實用、有規律的Vim命令,而不致於介紹一些基礎的Vim知識,比如幾種插入模式,hjkl移動命令,dd刪除本行,p粘貼 等等,故對Vim基本知識不夠熟悉的請參見其他教程。 另外,強烈給大家推薦一款強大的Vim外掛程式集“
spf13-vim”,這是一款Vim外掛程式集,它把常用的一些Vim外掛程式結合起來了,滿足大部分人的需求,開箱即用,而不用自己一個一個的去配置Vim外掛程式,處理各種按鍵衝突等等,免去你花大量的時間用於配置Vim軟體本身(比如博主最初學習Vim的時候),而不是利用Vim來更好地解決問題。 最後,本博文會不定時更新。。。。
命令1: [vydc] [ia] [pair_char] 上面命令指的是該命令由三部分組成,每部分可以是[ ]裡面的任意一個字元
第一部分指定“操作類型”
第二部分和第三部分指定“操作範圍”,是基於當前游標所在位置的,這個非常重要 (1)v: visual selecty: copyd: deletec: change,和delete的區別在於它會先delete,然後進入"insert mode";等價於先 d 然後按下 i 進入"insert mode" (2)pair_char 可以是一些成對的字元,比如 { [ ( < " ‘ 也可以使用它們的對應right close版本,比如} ] 等等pair_char 的特殊情況, 可以是w, 代表游標所在的單詞(以空格分隔), 這時中間是使用i還是a, 區別在於操作結果包不包括單詞右邊的空格 (3)i: exclude the pair_chara: include the pair_chari 和 a 的區別在於指定的“操作範圍”包不包括由pair_char指定的這一對字元,即 {} 或 [] 或 () 或 "" 等等
舉個例子吧: 假設有一文本行為 abcd "fgh ijk <lmn>";游標位於m處(底線處)
vi< 作用:選中了 lmn
ya" 作用:複製了 "fgh ijk <lmn>"
di" 作用:刪除了 fgh ijk <lmn>
ci< 作用: 刪除了 lmn 並且進入了"insert mode",游標位於<>中間
命令2: [vydc] [tf] [a_char] (1)參見命令1的(1) (2)t: till, exclude the character ‘a_char‘f: find, include the character ‘a_char‘ t和f 代表從左往右另外,還可以使用大寫的T和F,代表從右往左 (3)a_char: 代表某一個字元,特殊情況是0和$, 代表行首和行尾
命令3: 大小寫轉換 gU, gu (1)[visual_select_something_by_someway]gU[visual_select_something_by_someway]gU先通過某種方式選擇某個範圍的內容(可以通過命令1,2中的v指令進行選擇),然後將其轉換成大寫或小寫 (2)gU [ia] [pair_char]gu [ia] [pair_char]gU [tf] [a_char]gu [tf] [a_char]這種方式是先通過gU指定要轉換成大寫,然後通過後兩部分指定“操作範圍” [ia] [pair_char] 參見命令1的解釋這裡中間部分使用 i 或 a 好像是沒有什麼區別 [tf] [a_char] 參見命令2的解釋
命令4: 宏命令 錄製命令 qa [do_some_routine_job_in_this_line_and_move_to_next_line] q執行上一步錄製的命令 [n]@a qa中的a代表將錄製的命令放置於哪個寄存器中,對應於[n]@a 中的a。所以,a也可以換成b,c,d...[n]@a中的n代表執行該錄製命令的次數,省略n即執行1次 宏命令非常適合執行一些針對每一行都執行有規律的的操作,重點在於,首先,按下qa進入錄製模式,然後在第一行針對該行進行有規律的操作,最終移到下一行,按下a退出錄製模式,使用[n]@a對餘下的所有行進行批量處理 例子:假設有如下的文本行,每一行代表一個使用者名稱,現在需要對該使用者名稱進行密碼重設為123456,簡單起見,假設只有5行:
user1user2user3user4user5
游標置於第一行某個位置處,在“Normal mode” 模式下按順序按 qaIalter user_table set password=‘123456‘ where username=‘<Esc>A‘;<Esc>ja
好了,錄製命令完畢,執行命令[email protected],即把剩下的4行處理為與第一行相同的結果了
執行結果如下:
alter user_table set password=‘123456‘ where username=‘user1‘;alter user_table set password=‘123456‘ where username=‘user2‘;alter user_table set password=‘123456‘ where username=‘user3‘;alter user_table set password=‘123456‘ where username=‘user4‘;alter user_table set password=‘123456‘ where username=‘user5‘;
命令5: 代碼自動縮排 = (1) 游標移到某個位置,然後,使用 vi{ 選擇要自動縮排的代碼塊{ code },最後,按=(2) 按下大寫V進入行選擇模式,使用 jk 上下移動選擇要自動縮排的行集, 最後,按 =(3) 最懶的方式, gg到第一行, VG 選擇該檔案所有行,最後,按 =,格式化所有代碼
命令6: 倒置文本 :g/^/m0 讓第一行成為最後一行,第二行成為倒數第二行,最後一行成為第一行。
原創文章,轉載請註明出處:http://www.cnblogs.com/DayByDay/p/3921799.html