vim的常用用法

來源:互聯網
上載者:User

標籤:style   blog   http   ar   使用   sp   strong   檔案   on   

Vi/Vim 是所有 Unix/Linux 作業系統預設配備的編輯器。因其強大的功能和高效的操作,Vi/Vim 也成為眾多 Unix/Linux 使用者、管理員必須掌握並熟練使用的編輯工具之一。

我在學習和使用linux的過程中,基本都是使用vim來寫程式,用得越多也用得越熟悉,也越發現vim的強大之處,下面我就作些筆記,把最常用的vim命令記一記。

1.vim的啟動與切換

vim <filename> 即可開啟需要查看的檔案,當檔案不存在時系統會自動建立新檔案;

:open file,or  :e  <filename> 在vim視窗中開啟一個新檔案;

:q 退出vim, :wq  :q!   shitf+zz   ;

當需要從vim的編輯介面臨時切換到shell環境下時,可以採用如下3種方式,非常方便。

  • :! + command 即可在vim下執行shell命令, 如: :!ls -al ;
  • 使用 Ctrl-z 以及 fg 這兩個命令組合,ctrl-z將vim進程放入後台運行,執行完shell命令之後,fg將vim拿回前台執行;
  • 在 Vi/Vim 的正常模式下輸入 :sh即可進入 Linux/Unix shell 環境。在要返回到 Vi/Vim 編輯環境時,輸入 exit 命令即可。

2.vim的操作單位

在使用vim時,弄清vim命令的操作單位十分有必要。

Vi/Vim 中操作單位有很多,主要包括:

  • 字元(h、l):以字元為單位,h前一字元,l後一字元;
  • 單詞 (w、W、b、B、e) :小寫以非字母字元為分割,大寫以非空白字元(空格、Tab)分隔;w下一個單詞,b上一個單詞,e游標所在單詞結尾;
  • 行 (j、k、0、^、$、:n):j下一行,k上一行,^ 0行首,$行尾,:n 跳到n行;
  • 句子((、)):VI以標點符號?、。!中的一個,當這些標點後至少有2個空格,或者作為一行的最後一個非空白字元出現;
  • 段落({、}):段落以空行為分割;
  • 屏 (H、M、L):H 移動到螢幕的第一行,M 移動到螢幕的中間一行 L 移動到螢幕的最後一行;
  • 頁(Ctrl-f、Ctrl-b、Ctrl-u、Ctrl-d):Ctrl-f 向前滾動一頁,Ctrl-b 向後滾動一頁, Ctrl-u 向前滾動半頁,Ctrl-d 向後滾動半頁
  • 檔案(G、gg、:0、:$):G 移動到檔案末尾,gg 移動到檔案開頭;
  • 特殊:%(跳轉到與之匹配的括弧處),`.(跳轉到最近修改過的位置並定位編輯點),‘.(跳轉到最近修改過的位置但不定位編輯點)。

vim移動的 操作範圍 = 操作次數 * 操作單位。比如:10l 命令右移 10 個字元,8w 命令右移 8 個單詞。

3.vim的編輯命令

插入命令:

  • i insert 在當前游標之前插入
  • a append  在當前游標之後插入
  • I 大寫在行首插入
  • A 大寫在行尾插入
  • o 在當前游標所在行的下面一行插入
  • I  在當前游標所在行的上面一行插入

修改命令:

 

  • x 刪除當前字元, 3x 刪除當前游標開始向後三個字元;
  • dd 刪除當前行, 10d 刪除當前行開始的10行, :11,$d 刪除11行及以後所有的行;
  • yy 拷貝當前行, 2yy拷貝當前行及其下一行;
  • p 在當前游標後粘貼;
  • u , Ctrl-R ,撤消與前進;
  •  ~ 游標字母大小寫反轉,guw 游標單詞小寫 ,gUw 游標單詞變為大寫 ,guu 游標行所有字元小寫,gUU 游標行所有字元變為大寫 ,g~~ 游標行所有字元大小寫反轉;
  • . 點重複上一條命令,點號在linux的其他地方也有很多用法(點號的五種用法);
  • >> 右縮排 ,<< 左縮排, 配合運算元使用,在編輯源碼的時候非常有用;

 多行注釋:

  • 1. 進入命令列模式,按ctrl + v進入 visual block模式,然後按j, 或者k選中多行,把需要注釋的行標記起來
  • 2. 按大寫字母I,再插入注釋符,例如//
  • 3. 按esc鍵就會全部注釋了 

取消多行注釋:

  • 1. 進入命令列模式,按ctrl + v進入 visual block模式,按字母l橫向選中列的個數,例如 // 需要選中2列
  • 2. 按字母j,或者k選中注釋符號
  • 3. 按d鍵就可全部取消注釋

 

4.vim搜尋與替換

  • /string 向前搜尋指定字串;
  • ?string 從游標處開始向上開始尋找字元從string;
  • 因為支援Regex,所以vim中有一些特殊字元在尋找時需要轉義 .*[]^%/?~$;
  • n 搜尋下一個;
  • N 反向搜尋下一個;
  • * 在檔案中向前搜尋當前游標所在的單詞;
  • # 在檔案中向後搜尋當前游標所在的單詞;
  • :m,ns/str1/str2/g 將 m 行到 n 行中的字串 str1 全部替換為字串 str2;

5.vim環境設定

 

  • :set 查看vim環境變數
  • :set number 顯示行號
  • :set no number 取消行號顯示
  • :set autoindent 設定自動縮排
  • :set no autoindent 取消自動縮排設定
  • :set shiftwidth=4 設定縮排寬度為 4
  • :set ignorecase 設定忽略大小
  • :set no ignorecase 取消忽略大小設定
  • :set list 顯示不可見字元
  • :set nolist 取消顯示不可見字元設定
  • :set hlsearch   高亮搜尋結果,所有結果都高亮顯示,而不是只顯示一個匹配
  • :set nohlsearch   關閉高亮搜尋顯示
  • :set wrapscan   重新搜尋,在搜尋到檔案頭或尾時,返回繼續搜尋,預設開啟

有時候在vim開啟檔案時發現代碼的縮排錯位,這很有可能是由於tab鍵在不同環境下設定的空格數不同造成的。

  對於已儲存的檔案,可以使用下面的方法進行空格和TAB的替換:
  TAB替換為空白格:
  :set ts=4
  :set expandtab
  :%retab!

  空格替換為TAB:
  :set ts=4
  :set noexpandtab
  :%retab!

6.vim多屏操作

vim的多屏操作很適合查看大型的項目

  • :new 水平切割視窗,預設開啟空白視窗
  • :split 水平切割視窗(或者直接輸入:sp ),預設開啟當前檔案
  • :vsplit 垂直切割( 也可以 :vsp )
  • Ctrl+ww 移動到下一個視窗
  • Ctrl+w+(hjkl) 向不同方向移動視窗;
  • vim -o a.txt b.txt c.txt為每一個檔案開啟一個水平分割視窗
  • vim -O a.txt b.txt c.txt為每一個檔案開啟一個垂直分割視窗

vimdiff命令: 對比兩個檔案的差異,代碼merge十分方便

  • vim -d file1 file2 或  vimdiff file1 file2 , 使用vim的比較模式開啟兩個檔案;
  • :diffthis  用split方式開啟了兩個檔案file1,file2,比較兩檔案的不同,分別在兩個視窗裡面輸入該命令;
  • [c 跳到前一個不同點
  • ]c 跳到後一個不同點
  • dp 將差異點的當前文檔內容應用到另一文檔(diff put)
  • do 將差異點的另一文檔的內容拷貝到當前文檔(diff get)
  • :set diffopt=context:3 , vimdiff 預設是會把不同之處上下各 6 行的文本都顯示出來以供參考。其他的相同的文本行被自動摺疊
  • zf 建立摺疊(使用數字表示建立有當前行到下多少行的摺疊,比如3j就建立包括4行的摺疊)
  • zo 開啟摺疊(l也可以開啟摺疊)
  • zc 關閉當前摺疊
  • zm 關閉所有摺疊
  • zr 開啟所有摺疊
  • zE 刪除所有摺疊
  • zd 刪除當前摺疊
  • za 若當前開啟則關閉,若當前關閉則開啟(這個十分方便)
  • zj 到下一摺疊的開始處
  • zk 到上一摺疊的末尾

先總結這麼多,還有像函數跳轉等一些命令,等等,用到的時候再去整理吧,看一遍可能只能記住一小會,只有實際應用才會形成潛意識!

推薦 http://www.ibm.com/developerworks/cn/linux/l-cn-tip-vim/ 

這篇文章是我見過介紹vim基本命令最有條理的文章的了,本文也借鑒了其中很多內容,表示感謝!

最後插入一張vim命令神圖:

 

vim的常用用法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.