【linux相識相知】VIM編輯器
Vim是一個類似Vi的著名的功能強大、高度可定制的文本編輯器,在Vi的基礎上改進和增加了許多的功能,VIM是自由軟件,今天我們就來講講VIM的使用方法。
本文是基於centos7上的vim編輯器演示的,默認centos7沒有安裝vim,可以使用yum -y install vim安裝vim。
VIM的四種模式及轉換
命令模式:控制屏幕的光標移動,進行文本的刪除、復制等文字編輯工作,當使用vim打開某個文件的時候,默認模式就 是命令模式
插入模式:只有在插入模式下,才可以輸入文字
末行模式:保存文件或退出vim,同時也可以設置編輯環境和一些編譯工作,如列出行號、尋找字符串等。
可視化模式:可以使用鼠標框選文字,比較人性化
特別要提到的是,在命令模式到插入模式,可以有多種方式:
i:insert,在光標所在處輸入
a:append,在光標所在處後方輸入
o:在光標所在行處的下方打開一個新行
I:在光標所在行的行首輸入
A:在光標所在行的行尾輸入
O:在光年所在行的上面打開一個新行
退出文件
在命令模式下:
ZZ:保存並退出
在末行模式下:
q:退出 q!:強制退出,不保存此前的編輯操作 wq:保存並退出 x:保存並退出 w:保存,也可以保存到某個文件 w /PATH/TO/SOMEFILE
舉例:我們復制一個文件cp /etc/rc.d/init.d/functions /tmp/functions.txt,然後操作/tmp/functions.txt這個文件,在第第二行中插入"# hello linux",保存退出。
光標跳轉
在命令模式下操作
字符間跳轉
h:向左一個字符
l:向右一個字符
k:向上一個字符
j:向下一個字符
當然也可以是鍵盤的上下左右箭頭
可以結合數字加COMMAND,例如按 " 2 h " 光標向左移動2個字符
單詞間跳轉
w:下一個單詞的詞首 e:當前或後一個單詞的詞尾 b:當前或者前一個單詞的詞首 可以結合數字加COMMAND,例如" 2 w ":當前單詞後的第二個單詞的詞首
行首行尾跳轉
^:跳轉至行首的第一個非空白字符 0:跳轉至行首 $:跳轉至行尾
行間跳轉
#G:跳轉至由#指定的行
1G,gg:第一行
G:最後一行
句間跳轉和端間跳轉(不常用)
):下一句
(:上一句
}:下一段
{:上一段
翻屏
Ctrl+f:向文件尾部翻一屏 ctrl+b:向文件首部翻一屏 ctrl+d:向文件尾部翻半屏 ctrl+u:向文件首部翻半屏 Enter:按行向後翻
vim的編輯命令
字符編輯
x:刪除當前字符
#x:刪除光標處起始的#個字符
xp:交換光標處的字符及其後面字符的位置
替換命令(replace)
r:替換光標所在處的字符
r+替換字符
刪除命令
d:刪除命令,不能單獨使用 d$:刪除當前字符到所在行的行尾 d^:刪除當前字符到所在行的行首(不刪除光標所在字符) dw:刪除光標所在的單詞位置至下一個單詞的詞首 de:刪除光標所在單詞的位置至下一個單詞的詞尾 db:刪除光標所在單詞的位置至單詞的首部 dd:刪除光標所在的行可以結合數字使用: "3 dd":刪除光標所處的行起行及下面的行,共3行 註意:刪除的內容被保存在緩存區裏面
粘貼命令
p:緩沖區中的內容如果是整行,則粘貼在當前所在行的下方,否則,則粘貼至當前光標所在處的後方
P:緩沖區中的內容如果是整行,則粘貼在當前所在行的上方,否則,則粘貼至當前光標所在處的前鋒
復制命令
y:復制,不能單獨使用 y$:復制光標位置到行尾 y^:復制光標位置至行首,不包含光標所在的字符 ye,yw:復制光標所在單詞的位置至詞尾 yb:復制光標所在單詞的位置至詞首 yy:復制一整行
改變命令
和d的作用是一樣的,刪除文件,不同之處在於,使用c之後,會直接進入插入模式
c$:刪除光標所在位置至行尾並進入插入模式 c^:刪除光標所在位置至行首並進入插入模式 ce,cw:刪除光標所在單詞的位置至單詞尾部 cb:刪除光標所在單詞的位置至單詞首部
其他編輯操作
在命令模式下使用v和V進入可視化模式
v:按字符選定
V:按行選定
選定之後,可以結合d(刪除),c(刪除並進入插入模式),y(復制)來操作
vim末行模式
地址定界
n:特定的第n行,列入:5,即第5行 . :當前行 $:最後一行 n1,n2:指定行範圍,左側為起始行,右側為結束行 n1,+n2:指定行範圍,左側為起始行,右側為偏移量 %:全文 /pattern/:從光標所在處起始向文件尾部第一次被模式匹配到的行 /pat1/,/pat2/:從光標所在處起始,第一由pat1匹配到的行開始,至第一次由pat2匹配到的所有行
可以結合d,y,c使用,也可以使用w將範圍內的文本保存至指定的文件,使用r /PATH/FROM/SOMEFILE 將指定文件中的文本讀取並插入至指定的位置。
查找
/PATTERN:從當前光標所在處向文件尾部查找能夠被模式匹配的所有字符串 ?PATTERN:從當前光標所在處向文件首部查找能夠被模式匹配的所有字符串 n:查看下一個 N:查看上一個
查找並替換
s:末行模式的命令
格式:s/要查找的內容/替換的內容/修飾符 要查找的內容:可使用正則表達式 替換的內容:不能使用正則表達式,但是可以引用 如果"要查找的內容"部分在模式中使用了分組符號,在"替換的內容"中可以使用後向引用 直接引用查找模式匹配到的全部文本,要是用&符號 修飾符: i:忽略大小寫 g:全局替換,意味著一行中如果匹配到多次,則均替換
有的時候我們需要匹配"\",我們就可以把分隔符替換為其他的字符,比如s@@@或者s###。
vim的多文件功能
vim可以同時打開多個文件
vim FILE1 FILE2..
在文件間切換:
:next 下一個文件 :prev 上一個文件 :first 第一個文件 :last 最後一個文件
退出所有文件:
:wqall 保存退出所有文件 :wall 保存所有文件 :qall 退出所有文件
多窗口查看
在使用vim打開多個文件時使用選項:
-o:水平分隔窗口
-O:垂直分隔窗口
使用ctrl+w切換窗口
定制vim的工作特性
在末行模式下的設定,僅對當前vim有效,永久修改必須修改配置文件:
全局:/etc/vimrc
用戶個人:~/.vimrv 沒有可以創建
在末行模式下的操作:
1、行號 顯示:set number, 簡寫為set nu 取消顯示:set nomber, set nonu 2、括號匹配高亮 匹配:set showmatch, set sm 取消:set nosm 3、自動縮進 啟用:set ai 禁用:set noai 4、高亮搜索 啟用:set hlsearch 禁用:set nohlsearch 5、語法高亮 啟用:syntax on 禁用:syntax off 6、忽略字符大小寫 啟用:set ic 禁用:set noic
舉例:在vim中,tab鍵為8個空格的位置且8個空格是一個整體,如果是左右鍵移動會看到只能移動一次就是8個空格,那麽如何將其修改為4個空格呢?
可以在/etc/vimrc加入以下2行:
set ts=4 #設置寬度為4個空格 set expandtab #將tab轉換為了space
在末行模式下可以獲取VIM的幫助
:help
:help subject
如果大家想練習vim的操作,輸入vimtutor即可獲取VIM教程
[[email protected] ~]# vimtutor
【linux相識相知】VIM編輯器