怎樣用vi編程

轉自:http://www.cnblogs.com/amaoxiaozhu/archive/2012/03/23/2414007.html

用了近2年的emacs,沒想到進了公司基本就沒有機會摸了。。全都是裸環境,一次兩次還好。。

轉投vi的陣營也不只是單純的環境原因吧,感覺vi的操作更快一些,堅持用一些命令時間長了會很大的提高效率。

 3.27 更新新學的幾個地方,ctags還在摸索中·0·

零  瀏覽代碼

      拿到開源代碼或者類似遺留代碼的時候,閱讀是必不可少的工作,通常我喜歡先整體的瀏覽下代碼,長度,格式,是否符合個人的審美觀點,再開始學習。所以常用的第一個命令就是打開文本瀏覽器 :{} 還是多年的windows下的習慣,在着色而且隨意可以裏面查看代碼還是很爽的,一口氣把文件夾裏面的代碼文件開光,從main看起,猜到名字的就過,猜不到名字的就全部打開文件查找。自己來當IDE的功能。

 

一 打開文件:

   與第0步不同,這裏介紹最近在用vi看代碼需要的一些命令,用了不少時間來bing到,記下來以後省得四處找

    vi filename

    會打開文件,並停留在上次編輯的位置

 

   提高效率:

       修改代碼時通常都會記得自己要修改的行數和修改字段的特徵:)畢竟是出問題的代碼或者經過考慮find到的,因此定位文件打開的位置可以很大的提高效率

    vi +n filename 打開文件跳轉的指定行數

    vi +/xx filename 打開文件,跳轉到含有內容的行

 

二 瀏覽

    下一頁    上一頁        行首     行尾       文檔首頁         文檔末尾

    Ctrl+f   Ctrl+b          0         $             [[                   ]]

  

    最常用的命令就是下面這些了,這幾天用的都有這種感覺,輸入的時候拼命想按住ESC,然後按住l不放。。。

    可以直接輸入數字然後輸入這些命令,例如200k 可以跳回200行

    下一行、上一行       前一字符  後一字符   下一個單詞  上一個單詞

        j          k              h          l               e                b

 

   當在特定行有疑問時或者需要報告的時候,用

   ctrl+g                        報告當前行列信息

   

  ngg 或 :n  跳到指定的第n行

  跳到第一行可以直接使用gg

  H 移到屏幕頂端

  M 移到屏幕中間

  L  移到屏幕底端

  

 

三 編輯

    編輯,沒有廢話,非常非常非常喜歡vi的輸入,所有想做的功能全都有了

     i   光標處插入  

     I   句首插入

     a  光標後插入

     A  句尾插入

     o  新起一行插入     

     J   下一行併入本行

   提高效率:

   :set ai 開啓自動對齊,寫代碼比用吧~

    r  替換指定位置的字符  不會進入插入模式,替換幾個字母的最完美方案,強力推薦使用

    R  替換模式 

    s  刪除當前字符後插入,也很常用  可以當作需要替換字符後的進入編輯模式的r :) 之前一直在用s+esc來做字符替換。。直到發現了強推的r

    cc  刪除整行的內容並進行編輯

 增加vim配置:

  創建或編輯 用戶目錄下的.vimrc文件

  增加 set autoindent

     set softtabstop=4

  自動對齊和軟tab鍵。  

   刪除

     x 或  dl 刪除當前字符

     X 或 dh 刪除前一字符

     dd 刪除當前行  

  d]] 刪除至文檔末尾

    

  拷貝粘貼 這個也是個程序員常乾的事,類似的語句,拷貝下來,粘貼上三四行,再用正則改成自己需要的單詞

          yw     拷貝一個單詞  

      yy      拷貝一行 

          nyy    拷貝n行

          yG     拷貝到文章末尾

      y1G  拷貝到文章開頭

          "xnyy  拷貝n行給變量x(任意字母)   非常喜歡的功能,輸出函數可以拷貝成p,這樣不會不用當前複製了一段別的東西,還有回去複製輸出了:)

          :reg     拷貝給哪個變量不記得了就可以用查看信息的命令~

       p      粘貼與yy命令對應

         

     拷貝選擇的多行

         v 進入 visual mode 移動光標就是選中文本了。V 則是以行爲單位

   y 拷貝 d 刪除

 

      :s/old/new/g           輕鬆替換一行裏面的全部old—new,如果只替換行內的第一個,去掉最後的/g,都是通用的正則了。

  如果要替換指定範圍內的行數,前面簡單的加上就可以了

     :80,84s/create/delete/g   其中.表示當前行,#表示最後一行

    全部替換的話,可以使用

   :%s/old/new/g

 

   查找

       最常用的功能之一了,看到幾十行前面的代碼要去修改,但估計不出來行數的時候,可以直接看下特徵,然後find~

       /xx   查找後面的xx

      ?xx      查找前面的xx    

      n  繼續執行搜索

      N  反向執行搜索  

   撤銷

    u   取消上次操作

   ctrl+R 恢復u的動作

 

四、 功能命令

    :w 保存  

    :q 退出 

    :x 保存並退出       一個快捷命令可以讓程序員節省很多時間呀,我悲催的輸入了n+1次wq之後,發現原來它們合起來叫x

  ZZ 保存並退出     發現了一個新的,這個更好用!

            

 五、 小技巧

  歷史命名

  :ctrl+p      這個很顯然是傳統的用法了

  : ctrl+f   最近歷史命令 這個是新發現的,很好用!

  將命令command的輸出結果放到當前行

   :r!command   可以用於插入一些本機信息 如 :r!ifconfig eth0 grep "inet " 就把本機的IP信息直接放進了vi的文檔中啦。

      顯示光標下單詞的man內容

  K

  顯示光標下字符的Unicode的16進制值

  g8

 

  書籤

       瀏覽代碼時需要馬克一下的時候:

      mX : X爲任意字母

      跳到書籤:

                 'X

      保存並退出 : ZZ 很方便 哦

   代碼移動

    :set sw ?    查看代碼一次移動的個數

    :set sw=4  設定4位(寫代碼還是4位比較重要啊:)

           :le |  :ce | :ri   定位左中右

 六、 多文檔編輯

     之前覺得vi的多文檔編輯用着很不方便,現在接觸了幾個,用過了MiniBufExplorer,發現看着不是很舒服。還是使用ls比較好看一些。

  :ls  展示全部的打開文檔

  :xn  切換到向下的第x個文檔

  n ctrl+6 : 切換到第n個buffer

  ctrl+6  或 :e#   回到前一個編輯文件

  

         分屏

        :new xxx

   ctrl+w s   對當前文檔內容分屏顯示

   ctrl+w q   關閉所處分屏

   ctrl+w o   僅顯示當前分屏內容

   ctrl+w j k  上下選擇分屏

        個人覺得最值得用的命令就是ctrl+w  w 快速在分屏的兩個屏幕中切換

 

   下面寫的還沒用過~看了大家的分享覺得這幾個還不錯

    :n1,n2 co n3: 將n1行到n2行之間的內容拷貝到第n3行下
    :n1,n2 m n3:將n1行到n2行之間的內容移至到第n3行下
    :n1,n2 d: 將 n1行到n2行之間的內容刪除

    :n1,n2 w!command: 將文件中n1行至n2行的內容作爲command的輸入並執行之,
    若不指定n1,n2,則表示將整個文件內容作爲command的輸入

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章