VIM的高階用法

2021-07-15 11:32:57 字數 3489 閱讀 8568

在vim的配置檔案 /etc/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

: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

/***(?***) 表示在整篇文件中搜尋匹配***的字串, / 表示向下查詢, ? 表示向上查詢.查詢到以後, 再輸入 n 查詢下乙個匹配處, 輸入 n 反方向查詢。

*(#)  當游標停留在某個單詞上時, 輸入這條命令表示查詢與該單詞匹配的下(上)乙個單詞。同樣, 再輸入 n 查詢下乙個匹配處, 輸入 n 反方向查詢. (可以使用shift+* 或 shift + #來查詢當前游標所在單詞)

g*(g#)  此命令與上條命令相似, 只不過它不完全匹配游標所在處的單詞, 而是匹配包含該單詞的所有字串。

% 本命令查詢與游標所在處相匹配的反括號, 包括 () 。

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

0 移動游標到本行最開頭. ^ 移動游標到本行最開頭的字元處. $ 移動游標到本行結尾處。

向前向後翻頁 ctrl+f 和 ctrl+b。

% 跳轉到相配對的括號.

g(shift+g)  - goto the last line in the vim editor (檔案的末尾)

1g         - goto line number 1(檔案的開始)

20g       - goto line number 20

x表示刪除當前字元。

在 vi 中 y 表示拷貝, d 表示刪除, p 表示貼上. 其中拷貝與刪除是與游標移動命令結合的, 看幾個例子就能夠明白了.

yw 表示拷貝從當前游標到游標所在單詞結尾的內容.

dw 表示刪除從當前游標到游標所在單詞結尾的內容.

y0 表示拷貝從當前游標到游標所在行首的內容.

d0 表示刪除從當前游標到游標所在行首的內容.

y$ 表示拷貝從當前游標到游標所在行尾的內容.

d$ 表示刪除從當前游標到游標所在行尾的內容.

yfa 表示拷貝從當前游標到游標後面的第乙個a字元之間的內容.

dfa 表示刪除從當前游標到游標後面的第乙個a字元之間的內容.

特殊地:

yy 表示拷貝游標所在行.

dd 表示刪除游標所在行.

d 表示刪除從當前游標到游標所在行尾的內容.

刪除整個文件 :1,$d

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

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

g/^\s*$/d

單個字元替換用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 為 sky

n 為數字,若 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

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

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

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

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

檢視當前vim開啟的檔案:vim下:f

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

vim中sort不能用:只能在terminal下執行sort -ufile > file_new

vim中diff檔案: 如果已經開啟了乙個檔案,則 :vertdiffsplit file2,如果還沒有開啟檔案,則直接執行vi -o test_vi.txt test_vi2.txt,此時兩個檔案左右排列,如果需要兩個檔案上下排列的話,執行vi -o test_vi.txt test_vi2.txt。 vimdiff最多可以同時比較4個檔案。

不退出vim,直接執行命令,例如在perl檔案中,直接執行不退出,:!perl % 。如果前面已經執行過了,則重複前面的命令時,只需要:!!

vim的高階用法

vim 編輯器中的一款很強大外掛程式 vim fugitive 這款外掛程式可以實現你在 vim 編輯器裡直接完成 git 操作,而無需退出 vim 安裝方法 cd vim bundle git clone git vim u none c helptags vim fugitive doc c q...

vim高階用法

瀏覽模式 只能對檔案內容進行瀏覽 插入模式 對檔案內容進行修改的模式 推出模式 結束vim程式使用到的指令 vimtutor vim使用手冊 命令開啟vim程式在程式中輸入help 在vim瀏覽模式中 set 設定 如 set nu 顯示行號 set nonu 取消顯示行號 set cursorli...

Vim高階用法

域功能 標識域為從游標位置開始到當前行尾 0標識域為從游標位置前到當前行首e或 w標識域為從游標位置開始到當前字尾 其他用法 如3dw,刪除游標後3個字 b標識域為從游標位置前到當前字首 5.緩衝區的使用 5.1 數字編號緩衝區 雙引號 n 緩衝區號,1至9 p或p 例如 9p 其中對數字緩衝區的使...