VIM的進階使用

來源:互聯網
上載者:User

 

 

1)一些常用的Vim配置,在~/.vimrc中syntax on       支援文法高亮set nu          顯示行號
set nonu      不顯示行號set ai          設定自動縮排set shiftwidth=4   設定自動縮排 4 個空格, 當然要設自動縮排先.set sts=4          即設定 softtabstop 為 4. 輸入 tab 後就跳了 4 格.set tabstop=4      實際的 tab 即為 4 個空格, 而不是預設的 8 個.set expandtab      在輸入 tab 後, vim 用恰當的空格來填充這個 tab.:set hls 開啟搜尋高亮

:set nohls 取消搜尋高亮 

:set list : 顯示特殊字元:set nolist    2)多檔案編輯:e filename  vim將在原視窗中開啟新的檔案, 若舊檔案編輯過, 會要求儲存.:sp filename vim將分割出一個橫向視窗, 並在該視窗中開啟新檔案.:vsp filename vim將在右邊分割出一個視窗, 並在該視窗中開啟新檔案.如果:sp 或 :vsp沒有指定檔案,則在新視窗中開啟原檔案。ctrl+w w來在vim開啟的多個視窗中切換.ctrl+w q來關閉多個視窗中當前的視窗.  開啟的兩個檔案上下視窗分布 : vim -o file1 file2
 開啟的兩個檔案左右視窗分布 : vim -O file1 file2           

 

 3) 尋找/xxx(?xxx) 表示在整篇文檔中搜尋匹配xxx的字串, / 表示向下尋找, ? 表示向上尋找.尋找到以後, 再輸入 n 尋找下一個匹配處, 輸入 N 反方向尋找.*(#) 當游標停留在某個單詞上時, 輸入這條命令表示尋找與該單詞匹配的下(上)一個單詞. 同樣, 再輸入 n 尋找下一個匹配處, 輸入 N 反方向尋找. (可以使用shift+* 或 shift + #來尋找當前游標所在單詞)g*(g#) 此命令與上條命令相似, 只不過它不完全符合游標所在處的單詞, 而是匹配包含該單詞的所有字串.% 本命令尋找與游標所在處相匹配的反括弧, 包括 () [] { }.

在vim中一般尋找 :/str,如果有空格則需要:/str str2/ 

 

 4) 游標移動w(e) 移動游標到下一個單詞. b 移動游標到上一個單詞.0 移動游標到本行最開頭. ^ 移動游標到本行最開頭的字元處. $ 移動游標到本行結尾處.向前向後翻頁 ctrl+f 和 ctrl+b. % 跳轉到相配對的括弧.  G(shift+g)   - go to the last line in the vim editor (檔案的末尾) 1G - goto line number 1(檔案的開始)20G - goto line number 20   5)拷貝, 刪除與粘貼

x表示刪除當前字元。 

在 vi 中 y 表示拷貝, d 表示刪除, p 表示粘貼. 其中拷貝與刪除是與游標移動命令結合的, 看幾個例子就能夠明白了.yw 表示拷貝從當前游標到游標所在單詞結尾的內容. dw 表示刪除從當前游標到游標所在單詞結尾的內容. y0 表示拷貝從當前游標到游標所在行首的內容. d0 表示刪除從當前游標到游標所在行首的內容. y$ 表示拷貝從當前游標到游標所在行尾的內容. d$ 表示刪除從當前游標到游標所在行尾的內容. yfa 表示拷貝從當前游標到游標後面的第一個a字元之間的內容. dfa 表示刪除從當前游標到游標後面的第一個a字元之間的內容.特殊地: yy 表示拷貝游標所在行. dd 表示刪除游標所在行. D 表示刪除從當前游標到游標所在行尾的內容.

刪除整個文檔 :1,$d

刪除某行後面的分行符號號:在命令狀態下,在某一行上按"J"鍵將Join下一行,呵呵 

u 撤銷上次的操作,ctrl+r恢複上次的撤銷。 

刪除所有空白行(^是行的開始,\s*是零個或者多個空白字元;$是行尾) :g/^\s*$/d

 6)替換單個字元替換用r,覆蓋多個字元用R,用多個字元替換一個字元用s,整行替換用S.:s/vivian/sky/ 替換當前行第一個 vivian 為 sky:s/vivian/sky/g 替換當前行所有 vivian 為 sky:n,$s/vivian/sky/ 替換第 n 行開始到最後一行中每一行的第一個 vivian 為 sky:n,$s/vivian/sky/g 替換第 n 行開始到最後一行中每一行所有 vivian 為 skyn 為數字,若 n 為 .,表示從當前行開始到最後一行:%s/vivian/sky/(等同於 :g/vivian/s//sky/) 替換每一行的第一個 vivian 為 sky:%s/vivian/sky/g(等同於 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky可以使用 # 作為分隔字元,此時中間出現的 / 不會作為分隔字元:s#vivian/#sky/# 替換當前行第一個 vivian/ 為 sky/:%s+/oradata/apras/+/user01/apras1+ (使用+ 來 替換 / ): /oradata/apras/替換成/user01/apras1/

 

:2,50s/part1/part2      #用part2替換第2行到第50行中每行第1個part1:2,50s/part1/part2/g    #用part2替換第2行到第50行中所有的part1:.,+3s/part1/part2      #用part2替換當前行以及當前行後面的三行中每行第1個part1

:.,+3s/part1/part2/g    #用part2替換當前行以及當前行後面的三行中所有的part1 

 

例如將每行增加 xxx : :%s/\(.*\)/\1 xxx/g 

 

7)visual block狀態

ctrl+v進入,列塊選擇,例如4l選中游標接下來的4列,7j游標開始的7行,執行4l和7j後選中7行4列的塊, 也可以在ctrl+v後使用hjkl來控制選擇的行和列,可以使用y,d等進行拷貝刪除操作。例如刪除多行前面的空格。

(塊編輯:編輯一行,效果被應用到所有選中的行)例如注釋多行:ctrl+v選擇塊後,然後I進入編輯狀態在第一行的開始輸入#,然後兩次esc退出後,剛才選中的所有行前面自動加#,從而達到注釋所有行的目的。

shift+v可以用來選中多行,然後:s/aaa/bbb/g, 對選中的行中進行替換。

shift+v選中多行後,執行d直接刪除選中的多行。

http://man.chinaunix.net/newsoft/vi/doc/visual.html 
 

8) 其他

查看當前vim開啟的檔案:vim下:f

vim中去除空行或行末的^M:dos2unix ufile

VIM中sort不能用:只能在terminal下執行sort -u file > file_new  vim中diff檔案: 如果已經開啟了一個檔案,則 :vert diffsplit file2, 如果還沒有開啟檔案,則直接執行vi -O test_vi.txt test_vi2.txt,此時兩個檔案左右排列,如果需要兩個檔案上下排列的話,執行vi -o test_vi.txt test_vi2.txt。 vimdiff最多可以同時比較4個檔案。 不退出vim,直接執行命令,例如在perl檔案中,直接執行不退出,:!perl % 。 如果前面已經執行過了,則重複前面的命令時,只需要:!!  

完! 

相關文章

聯繫我們

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