談談Vim中實用又好記的一些命令

來源:互聯網
上載者:User

標籤: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   
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.