淺述vim操作

vim是一種比vi更加強大的模式化的全屏文本編輯器。vim在工作過程中有三種模式:編輯模式、插入模式、末行模式。

編輯模式(默認):又稱命令模式,其工作內容包括移動光標、剪切、粘貼、刪除等
輸入模式:亦可稱為插入模式,主要是在文件中修改文本內容
末行模式:亦稱擴展命令模式,主要是執行vim內置命令的

vim三種模式之間的切換:如下圖

 淺述vim操作

(1)編輯模式 –> 輸入模式

i: 在光標所在處輸入
I:在當前光標所在行的行首 輸入
a: 在光標所在處后面輸入
A:在當前光標所在行的行尾 輸入
o: 在當前光標所在行的下方打開一個新行
O:在當前光標所在行的上方打開一個新行

(2)輸入模式 —-> 編輯模式

按ESC鍵

(3)編輯模式 —-> 末行模式

:(冒號)

(4)末行模式 —-> 編輯模式

按ESC鍵

1、vim的基本操作

(1)vim語法即其常用選

vim [options] [file ..]
option:
-b:以二進制方式打開文件
-d:后接多個文件表示打開并比較多個文件
-m:以只讀方式打開文件
-e:直接進入末行模式

(2)打開文件

+#:表示打開文件后,直接讓光標處于第#行的行首
+/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN 匹配到的行的行首
如:vim '+/UUID' /etc/fstab
+:打開文件后,光標處于文件的最后一行

(3)退出文件

1)末行模式中退出

:q  表示退出
:q!  表示強制退出
:wq  表示保存退出
:x  表示保存退出
:w /PATH/TO/SOMEFILE 不退出,而是將文件保存至指定文件

2)編輯模式退出

ZZ:表示保存退出
ZQ:表示不保存退出

(4)光標移動(編輯模式中)

1)字符間移動

h:一次向左移動一個字符
j:一次向下移動一個字符
k:一次向上移動一個字符
l:(小寫L)一次向右移動一個字符
上下左右箭頭鍵亦可實現上述操作
還可以用#+{h,j,k,l}來表示移動幾個字符,如“3h”表示向左移動3個字符

2)單詞間移動

w:移動到下一個單詞的詞首
e:移動到當前或下一個單詞的詞尾
b:移動到當前或下一個單詞的詞首
#+{w,e,b}表示動到第#個字符的詞首(詞尾)

3)當前頁面內的移動

H:移動到當前頁的第一行行首
M:移動到當前頁面的中間行的行首
L:移動到當前頁面的最后一行的行尾

4)行內移動

^:跳至當前行首的第一個非空白字符
0:跳至當前行的行首(絕對行首)
$:跳至當前行的行尾

5)行間移動

G:跳至文件的最后一行的行首
1G(gg):跳至文件的第一行行首
#G:跳至指定的定#行行首

6)句間移動(以空行來劃分)

):向下移動一句
(:向上移動一句

7)段落間移動(以空行來劃分)

{:向下移動一段
}:向上移動一段

(5)翻屏操作

Ctrl+f:  向文件尾部翻一屏
Ctrl+b:  向文件首部翻一屏
Ctrl+d:  向文件尾部翻半屏
Ctrl+u: 向文件首部翻半屏

2、vim的編輯模式的命令

(1)字符刪除

x: 刪除光標處的字符
#x: 刪除光標處起始的#個字符
d:刪除(剪切)命令,需要結合光標移動字符使用(w/b/e/$/0/^等)如:“d$”表示刪除光標以后的內容,“3dw”表示刪除光標后的3個單詞
dd:刪除光標所在處的行
D:從當前光標位置一直刪除到行尾,等同于d$
xp: 交換光標所在處的字符及其后面字符的位置
~: 轉換大小寫

(2)字符替換

r:替換光標所在處的字符,一次只能替換單個字符
R:切換成REPLACE模式,可以逐個字符替換

(3)復制

y:復制命令,可以結合光標移動字符使用(w/b/e/$/0/^等)如:“y0”表示復制光標所在處到行首的內容,“0y$”表示整行。
yy:復制整行
#yy:一次復制#行

(4)粘貼(配合d或y命令使用)

p:(小寫)如果復制為整行,則將復制的內容粘貼到當前光標所在行的下方;如果復制的是行的部分內容,則將復制的內容粘貼至當前光標所在處的后面
P:(大寫)如果復制為整行,則將復制的內容粘貼到當前光標所在行的上方;如果復制的是行的部分內容,則將復制的內容粘貼至當前光標所在處的前面

(5)修改,即先刪除在變為輸入模式

c:修改命令,可以結合光標移動字符使用(w/b/e/$/0/^等)
cc:刪除當前行并輸入新內容
C:刪除當前光標到行尾的內容,并切換成插入模式

(6)撤銷與重復操作

u:撤銷最近的修改,一次只撤銷一個操作
#u:一次撤銷#個操作
Ctrl+r:撤銷上一次的撤銷操作
.:重復前一個操作
n.:重復前n個操作

(7)其他編輯操作

1)可視化模式

v:按字符選定
V:按行選定
Ctrl+v:按塊選定

2)一次輸入n次同樣的內容,示例說明

100iwang [ESC]:先輸入100,在輸入i,然后輸入wang,最后按ESC鍵,即輸入100個wang字符

3、vim的末行模式操作(記得“:”)

(1)地址定界

1)#: 具體第#行,如2 表示第2 行;
2)#,#: 從左側#表示行起始,到右側# 表示行結尾,如3,8表示第3到第8行
3)#,+#: 左側#示的行起始,加上右側# 表示的行數,如2,+3 表示2到5行
4). : 當前行
5)$: 最后一行
6)% :全文, 相當于1,$
7)/pattern1/,/pattern2/ : 第一次被pattern1模式匹配到的行開始,一直到第一次被pattern2匹配到的行結束
8)w /PATH/TO/SOMEFILE : 表示將范圍內的內容另存到指定文件中
9)r /PATH/FROM/SOMEWHERE : 表示將外部指定文件的內容調入到指定的位置中

(2)查找

/PATTERN:從當前光標所在處向文件尾部查找
?PATTERN:從當前光標所在處向文件首部查找
N:上一個,與命令反方向
n:下一個,與命令同方向

(3)查找與替換

s///:查找并替換,分隔符可以自定如:s@@@,s###。
格式:s/ 要查找的內容/ 替換為的內容/ 修飾符
    要查找的內容:可使用模式
    替換為的內容:不能使用模式,但可以使用\1, \2, ...等后向引用符號;還可以使用“&” 引用前面查找時查找到的內容
    修飾符:
    i : 忽略大小寫
    g : 全局替換;默認情況下,每一行只替換第一個匹配到的內容
    gc : 全局替換,每次替換前詢問

4、vim的寄存器(在編輯模式下)

1)有26個命名寄存器和1個無命名寄存器,常存放不同的剪貼版內容,可以不同會話間共享
2)26個命名寄存器由26個英文字母一一對應,用a ,b,…,z 表示, 用“字母 表示寄存器,放在數字和命令之間,如“3"ayy”  表示復制3 行到a 寄存器中,“"ap”表示將a寄存器的3行內容粘貼到光標處的下一行
3)未指定名字,將使用無命名寄存器,直接使用3yy即可復制
4)有10個數字寄存器用0,1,…,9表示,0存放最近復制的內容,1存放最近刪除的內容。當新的文變更和刪除時,1 轉存到2 ,2 轉存到3 ,以此類推。數字寄存器不能在不同會話間共享。

5、打開多個文件

vim FILE1 FILE2 FILE3 ...
各個文件間的切換:(在編輯模式下)
:next  跳至下一個文件
:prev  跳至前一個文件
:first  跳至第一個文件
:last  跳至最后一個文件
:wall  保存所有文件但不退出
:qall  退出所有文件
:wqall   保存并退出所有文件

6、多窗口模式

(1)多文件分割

vim -o |-O FILE1 FILE2 FILE3 ...
-o:水平分割
-O:垂直分割
Ctrl+w切換窗口

(2)單文件分割

Ctrl+w,s: split,  水平分割()
Ctrl+w,v: vertical,  垂直分割
ctrl+w,q :取消相鄰窗口
ctrl+w,o : 取消全部窗口
:wqall  退出

7、定制vim的工作特性

(1)自動縮進

啟用:set ai
禁用:set noai

(2)高亮搜索

啟用:set hlsearch
禁用:set nohlsearch

(3)語法高亮

啟用:syntax on
禁用:syntax off

(4)忽略字符大小寫

忽略:set ic
不忽略:set noic

(5)設置行號

顯示:set nu
不顯示:set nonu

(6)括號成對匹配

啟用:set sm
禁用:set nosm

(7)配置文件(使定制的特性永久生效)

全局設置:/etc/vimrc
個人設置:~/.vimrc

(8)文件格式

啟用unix格式:fileformat=unix
啟用dos格式:fileformat=dos
### (9)設置文本寬度 ###
:set textwidth=65
:set wrapmargin=15

8、習題

(1)如何設置tab 縮進為4 個字符

在末行模式輸入:set ts=4即可,如果要永久生效可以寫入配置文件

淺述vim操作

(2)復制/etc/rc.d/init.d/functions 文件至/tmp 目錄;替換/tmp/functions 文件中的/etc/sysconfig/init 為/var/log;

在末行模式輸入:%s@/etc/sysconfig/init@/var/log@g

淺述vim操作

(3)刪除/tmp/functions 文件中所有以# 開頭,且#后面至少有一個空白字符的行的行首的# 號;

在末行模式輸入:%s@^#[[:space:]]\+@@g

(4)將/etc/yum.repos.d/CentOS-Base.repo文件中所有的enable=0替換enable=1,所有gpgcheck=0替換為gpgcheck=1;

在末行模式輸入:%s@\(enabled\|gpgcheck\)=0@\1=1@g

原創文章,作者:pao,如若轉載,請注明出處:http://www.www58058.com/32924

(0)
paopao
上一篇 2016-08-11
下一篇 2016-08-11

相關推薦

  • Linux學習之數據重定向

    大綱: 一、數據重定向定義 二、數據重定向分類 三、數據重定向作用 四、示例 一、數據重定向:命令的運行的結果默認輸出在監視器上,重定向就是把這個結果輸出到其它地方或其它文件。 二、數據重定向分類: 1.標準輸出: (standard output,簡稱stdout,代碼為 1 ,使用 > 或 >>):命令執行成功輸出的正確提示信…

    Linux干貨 2015-06-24
  • 新鮮出爐的一篇好PPT,MySQL Optimizer團隊力作

    新鮮出爐的一篇好PPT,MySQL Optimizer團隊Senior Principal Software Engineer ?ystein同學親自操刀完成的《How to Analyze and Tune MySQL Queries for Better Performance》內容值得期待,有實現分析,有實戰用例。有需要的朋友可以點擊下載! 下載地址:…

    Linux干貨 2015-02-27
  • 你會用Python寫洗腦神曲嗎?

    Python實戰班-學員學習成果展示 同樣是周末,有些人是閑聊著度過,有些人是學習充電度過。 人與人最大的區別,是下班后的時間。看你怎么去利用。 周末時,馬哥Python實戰班的學員正在認真上課,他們中的不少人,月薪在10k以上,甚至月薪20k以上。 但他們沒有虛度周末時光。 #最浪費時間的就是:思而不學+猶豫不決。# 馬哥Python實戰班二期的小伙伴們才…

    Linux干貨 2016-07-05
  • Linux的文件權限(一)

    Linux的文件權限 在Linux的世界里,一切皆文件,用文件代表了系統的所有數據。既然文件那么重要,自然會給文件賦予一定的權限,要不然每個人都可以亂來,那系統會十分危險。所以文件的所有者會給文件設定權限,每個用戶在自己權限的范圍下做各自的操作。 我們可以先用 ll-d 查看一下文件的權限 第一位代表著問價類型,d 代表著是目錄文件,后面九位代表著權限。其中…

    2017-05-30
  • ip,ss,htop,vmstat,until,while,ping命令使用. N28

    第六周(2018-1.1 – 2018-1.7)

    2018-01-08
  • shell變量的淺談

    變量本質上是存儲數據的一個或多個計算機內存地址,變量的命令規則包括: 1) 不能使用程序中的保留字,如if, for 2) 變量由字母、下劃線和數字組成,且不能以數字開頭 3) 要求風名知義 4) 統一命名規則:駝峰命名法 變量主要分為本地變量、環境變量、局部變量、位置變量和特殊變量 (1)本地變量:只對當前shell…

    2017-08-05
欧美性久久久久