linux基礎之vim編輯器 1、vim編輯器 基本介紹 vim編輯器的前身叫做vi。vi的英文名:Visual Interface。中文解釋文本編輯器,你不應該用他去打開二進位可執行文件 文本編輯器種類 行編輯器 sed 全屏編輯器 nano vi vim:Vi IMproved 基本使用 vim ...
linux基礎之vim編輯器
1、vim編輯器
基本介紹
vim編輯器的前身叫做vi。vi的英文名:Visual Interface。中文解釋文本編輯器,你不應該用他去打開二進位可執行文件
文本編輯器種類
行編輯器
sed
全屏編輯器
nano
vi
vim:Vi IMproved
基本使用
vim是一個模式化編輯器
vim編輯器預設打開文件後是編輯模式或者命令模式
vim的基本模式
編輯模式、命令模式
輸入模式
末行模式
可視化模式
基本介紹
vim內建了很多子命令,即內置了命令行介面,可以通過打開末行模式來執行vim內置的命令
vim打開文件的語法
vim [options] [file ..]
vim [options] -
vim [options] -t tag
vim [options] -q [errorfile]
常用選項
+num:打開文件後,直接讓游標處於第num行。如果只有加號,沒有num表示打開文件處於文件的最後一行
使用案例
vim + /tmp/fstab
vim +10 /tmp/fstab
+/PATTERN:打開文件後,直接讓游標處於第一個被PATTERN匹配到的行的行首
vim模式轉換
編輯模式轉換到輸入模式,需要鍵入的符號
i:英文名insert,在游標所在處前面輸入
a:英文名,append,在游標所在處後面輸入
o:在當前游標所在行的下麵打開一個新行,並轉換為輸入模式
I:在游標所在行的行首輸入.如果游標處於不在行首,那麼他會移動到行首並轉換為輸入模式
A:在游標所在行的行尾輸入.如果游標處於不在尾首,那麼他會移動到行尾並轉換為輸入模式
O:在當前游標所在行的上面打開一個新行,並轉換為輸入模式
c:
C:
輸入模式轉換到編輯模式,需要鍵入的符號
ESC
編輯模式轉換到末行模式
:
末行模式轉換到編輯模式
一次ESC,這個如果在末行模式輸入有命令,那麼鍵入一次ESC不能快速回到編輯模式
兩次ESC可以快速回到編輯模式
關閉文件方式
在末行模式下,鍵入命令
不保存退出
q:直接退出,不保存
q!:強行退出
保存退出
wq:保存退出
x:保存退出
w PATH:將當前文本內容另存到PATh這個路徑下
在編輯模式下,鍵入命令
保存退出
ZZ:保存退出
vim中快速實現游標跳轉
字元間跳轉
h:向左跳一個字元
j:向下跳一個字元
k:向上跳一個字元
l:向右跳一個字元
一次跳過指定的字元
num h:向左跳num個字元
num k:向上跳num個字元
num j:向下跳num個字元
num l:向右跳num個字元
單詞間跳轉
w:跳轉到後一個單詞的詞首
e:跳轉到當前或者後一個單詞的詞尾。如果當前游標不在當前游標所在單詞的詞尾時,跳轉到當前游標所在單詞的詞尾;如果當前游標在當前游標所在單詞的詞尾,那麼跳轉到後一個單詞的詞尾
b:跳轉到前一個單詞的詞首,如果游標不在一個單詞的詞首時,跳轉到當前游標所在單詞的詞首
行首行尾跳轉(編輯模式下)
^:跳轉至行首的第一個非空白字元
0:跳轉到行首
$:跳轉至行尾
行間移動(編輯模式下)
num G:跳轉到第num行
G:跳轉最後一行
1G或者gg:跳轉到第一行
句間移動
):跳轉到下一個句子
(:跳轉到前一個句子
段落間移動
}:跳轉到後一個段落
{:跳轉到前一個段落
vim編輯命令
字元編輯(末行模式下)
字元的刪除
x:刪除游標所在處的字元
num x:刪除游標所在處向後num個字元
d + 行間移動|句間移動|段落間移動|行首行尾移動|單詞間移動:d鍵加上行間移動|句間移動|段落間移動|行首行尾移動|單詞間移動的字元可以實現範圍刪除
案例演示
刪除游標所在位置到下一個單詞之間的字元
鍵入d+w
刪除游標所在位置到行尾之間的字元
鍵入d+$
刪除游標所在位置到行首之間的字元
鍵入d+0
刪除游標所在位置到下一段之間的字元
鍵入d+}
交換字元位置
x + p:交換游標所在的字元和後邊字元的位置
行的刪除(編輯模式下)
dd:刪除游標所在行
num + dd:刪除num行
DD:刪除游標所在行,並且新建空白行到游標所在位置
註意:刪除的內容都保留到了一個緩衝區,如果要撤回,鍵入u
粘貼命令(編輯模式下)
p:(小寫)英文名paste,緩存區如果為整行內容,則如果粘貼,那麼粘貼到當前游標所在行的下麵。如果不是整行,則粘貼到當前游標所在處的後邊
P:(大寫P)。如果緩存區為整行,那麼粘貼時粘貼到當前游標所在行的上面行。如果不為整行,那麼粘貼到游標所在處的前面
num + p 或者num + P:一次性粘貼多次
複製命令(編輯模式下)
y + 行間移動|句間移動|段落間移動|行首行尾移動|單詞間移動:y鍵加上行間移動|句間移動|段落間移動|行首行尾移動|單詞間移動的字元可以實現範圍複製
使用案例
複製游標所在處到游標所在行的行尾之間的字元
y+$
複製游標所在處到游標所在行的行首之間的字元
y+0
複製游標所在處到游標所在單詞的後一個單詞之間的字元
y+e
yy:複製整行(複製的是單行)
num + yy:複製num行
改變命令(編輯模式)
c + 行間移動|句間移動|段落間移動|行首行尾移動|單詞間移動:c鍵加上行間移動|句間移動|段落間移動|行首行尾移動|單詞間移動的字元可以實現範圍刪除,並且從編輯模式進入輸入模式
使用案例
刪除游標所在處到游標所在行的行尾之間的字元
c+$
刪除游標所在處到游標所在行的行首之間的字元
c+0
刪除游標所在處到游標所在單詞的後一個單詞之間的字元
c+e
cc:刪除整行(複製的是單行)並且從編輯模式進入輸入模式
num + cc:刪除num行,並且從編輯模式進入輸入模式
替換命令(編輯模式下)
r char:替換游標所在處的字元
num + r鍵 + char:將游標所在位置向後指定num個字元全部替換成char字元
使用案例
將游標所在位置向後10個字元全部替換成a字元
10 + r + a
撤銷命令
u:英文名Undo,撤銷此前的操作
num + u:撤銷num次操作
ctrl+r:撤銷以後後悔了,這個命令是為了執行撤銷的撤銷操作
重覆前一個編輯操作
.(點號)
可視化模式
在編輯模式下按小寫或者大寫v鍵可以進入可視化模式
v:(小寫),可以使用方向鍵選中我們要的內容
V:(大寫)。可以使用方向鍵選中我們要的內容
小寫和大寫v的區別
小寫v當我們使用方位鍵時不會整行整行的選中,而大寫v則會整行整行的選中
通過可視化模式選中的內容可以結合編輯模式下的任何命令,比如:替換命令、複製命令、刪除命令等進行一些操作
使用案例
進入可視化模式,選中一部分內容進行複製
v+方位鍵+y
vim實現翻屏操作
ctrl+f:項文件的尾部翻一屏
ctrl+b:項文件的首部翻一屏
ctrl+d:向文件的尾部翻半屏
ctrl+u:項文件的首部翻半屏
vim自帶的練習教程
vimtutor命令
vim末行模式
vim內建了命令行模式,它具有的功能如下
地址定界
start_pos,end_pos:表示第start_pos行到end_pos行的內容
start_pos:表示第start_pos行
start_pos,+num:表示從第start_pos行開始向後多加num行之間內容
使用案例
表示是刪除第一行向後再輸20行的內容
:1,+20d
.(點號):表示當前行
$:表示最後一行
%:表示全文,相當於1,$
start_pos,end_pos - num:表示從第start_pos行開始到end_pos行的前num行,也就是到了end_pos行後向前走num行,即end_pos行減num行
/PATTERN1/,/PATTERN2/:從第一次被PATTERN1模式匹配到的行開始,一直到第一次被PATTERN2匹配到的行結束之間的行
使用案例
第一次匹配name所在的行開始,到最後一行結束,之間的行的內容
/name/,$
第一匹配Go.*g$所在行開始,到第一次匹配na.*一行作為結束。之間的行的內容
/Go.*g$/,/na.*/
vim的地址定界後邊可以接任何編輯模式下的命令。
使用案例
第一匹配Go.*g$所在行開始,到第一次匹配na.*一行作為結束。刪除之間的行的內容
/Go.*g$/,/na.*/d
第一次匹配name所在的行開始,到最後一行結束,拷貝之間的行的內容
/name/,$y
第一次匹配name所在的行開始,到最後一行結束,另存之間的行的內容到/tmp/name.txt這個文件中
使用案例
/name/,$w /tmp/name.txt
將滑鼠放入一個位置,然後在末行模式下輸入:
r path:表示在游標所在位置插入指定路徑下的文件內容
num +r path:表示在100行插入指定路徑下的文件內容
使用案例
:100r /etc/fstab
:r /etc/issue
vim的查找命令(末行模式下)
/PATTERN:從當前游標所在處向文件尾部進行查找
?PATTERN:從當前游標所在處向文件首部查找
使用註意
當匹配到多個時,要想後跳一個匹配的使用下麵的按鍵
n:小寫,同方向跳
N:大寫,反方向跳
vim的替換操作(末行模式下)
s:在末行模式先完成的替換操作
替換操作的語法
s/要查找內容/替換為的內容/修飾符
要查找的內容
可以使用模式匹配(預設使用的是基本模式)
要替換的內容
不可以使用模式,但是可以使用\1、\2、\3..等返向引用符號。還可以使用&符號引用前面查找時查找到的整個內容
修飾符
i:表示忽略大小寫
g:表示全局替換。預設情況下,每行只替換第一次出現被匹配到的內容
使用註意:
替換操作需要結合vim的地址定界符使用,表示在那個範圍內容完成搜索替換操作。替換時,如果有些具有特定意義的字元需要轉義
查找替換的分割符可以使用其他字元,比如@、#等
使用案例
將游標所在位置開始到最後一行之間的內容,把匹配模式為r..t的單詞替換成ROOT,並且是全局匹配
.,$s/\<r..t\>/ROOT/g
全文匹配,把匹配模式為r..t的單詞替換成ROOT,並且是全局匹配
%s/\<r..t\>/ROOT/g
vim的末行模式也有命令歷史的功能
問題
1、複製/etc/grub2.cfg至/tmp下,用查詢替換操作刪除/tmp/grub.cfg文件中的行首為空白的字元
:.,$s/^[[:space:]]\+//
2、複製/etc/rc.d/init.d/functions文件至/tmp下。用查詢替換操作為/tmp/functions文件的每行開頭為空白字元的行的行首添加一個#號
:%s/^[[:space:]]\+/#&/
vim的多文件模式
基本介紹
vim可以同時打開多個文件
基本語法
vim [file1[file2[file3.......]]
使用註意
vim可以同時打開多個文件,但是預設顯示的是第一個文件,如果想切換到另一個文件顯示的換,可以進入末行模式,輸入next命令。如果到了最後一個文件,可以使用first命令,回到第一個文件顯示。同時也可以使用prev命令看前一個文件;last命令看最後一個文件
當我們同時修改了兩個文件時,需要一起保存,那麼可以在末行模式下輸入wall命令,退出所有文件使用qall命令。當然你也可以在末行模式下一個一個的保存然後在退出
vim中的視窗分割模式
基本介紹
我們可以將多個文件在同一個屏幕顯示,那麼需要使用到vim提供的視窗分割模式的功能
基本語法
vim [options...] file1[ file2[ .....]]
常用選項
-o:將多個文件水平分割顯示在屏幕上
-O:將多個文件垂直分割顯示在屏幕上
使用註意
雖然我們視窗被分割成多個,但是滑鼠只有一個,那麼就需要在多個分割視窗進行切換
在視窗間進行切換的命令
ctrl + w + 上下左右箭頭
如果是水平分割,那麼就可以使用 ctrl+w+左右箭頭
如果是垂直分割,那麼就可以使用 ctrl+w+上下箭頭
vim單文件視窗分割
基本介紹
我們可以將一個大文件分割成多個視窗顯示,這時候就會利用到vim提供的vim單文件視窗分割
基本使用
打開文件後使用命令將文件分隔成多個視窗顯示,多個視窗間可以相互做一些編輯操作(拷貝、刪除、替換、修改等操作)
ctrl+w+s:將單個文件水平分割
ctrl+w+v:將單個文件垂直分割
使用註意
ctrl+w一起按,然後鬆開按s或者v鍵,否則屏幕會被鎖住,如果被鎖住,使用ctrl+q命令解鎖。因為ctrl+s是鎖住終端命令
2、定製vim的工作特性
基本介紹
vim也有自己的配置文件。配置文件定義的vim特性是永久有效,但是如果在末行模式下定製的vim特性,只有在當前vim進程有效,vim進程關閉就無效了,還原為原來的狀態
全局配置文件
/etc/vimrc
個人配置文件
~/.vimrc
vim常定製特性(在末行模式下)
set number 簡寫set nu 顯示行號
set nonumber 簡寫 set nonu 關閉行號顯示
set showmatch 簡寫set sm 開啟括弧匹配高亮,當滑鼠在左括弧,那麼右括弧被高亮
set autoindent 簡寫 set ai 開啟自動縮進
set noai 關閉自動縮進
set hlsearch 開啟搜索高亮顯示
set nohlsearch 關閉搜索高亮顯示
syntax on 開啟語法高亮
syntax off 關閉語法高亮
set ic 忽略字元大小寫
set noic 不忽略字元大小寫
使用註意
如果你想在個人下配置vim特性,並且是讓他永久有效,那麼實在家目錄向創建一個~/.vimrc配置文件。這個文件預設是不存在的,需要用戶自己創建。然後把vim的特性寫入這個文件中