Linux強大編輯器VIM

wKioL1eq4xrzeIwkAAD5Noi5lME416.jpg

命令用法:

vim [OPTION]... FILE... 

+#: 打開文件後,直接讓光標處於第#行的行首 

                                例如:[root@localhost ~]# vim +15 /etc/passwd

+/PATTERN:打開文件後,直接讓光標處於第一個被PATTERN匹配到的行的行首

                                例如:[root@localhost ~]# vim +15/^rpc /etc/passwd

vim + file 直接打開file,光標在最後一行 

                                例如:[root@localhost ~]# vim + /etc/passwd

vim –b file 二進制方式打開文件 

                                例如:[root@localhost ~]# vim -b /bin/cat

vim –d file1 file2…  比較多個文件 ;窗口模式退出之後,會自動標註至不匹配的編輯模式

                                例如:[root@localhost tmp]# vim -d passwd.out passwd

vim  -m file  只讀打開文件;防止誤操作,只能查看內容,不能修改內容

                                例如:[root@localhost tmp]# vim -m passwd.out

ex  file 或 vim –e  直接進入ex模式;

如果該文件存在,文件被打開並顯示內容 如果該文件不存在,當編輯後第一次存盤時創建它

擊鍵行爲是依賴於 vim的 的“模式” 

三種主要模式:

命令模式(默認):移動光標,剪切/粘貼文本 

插入(編輯)模式:修改文本 

擴展命令模式:保存,退出等 

·Esc鍵 退出當前模式

Esc鍵 Esc鍵 總是返回到命令模式

vi: Visual Interface,文本編輯器;文本:ASCII, Unicode 

命令模式 --> 插入模式 

i: insert, 在光標所在處輸入 

I:在當前光標所在行的行首輸入 

a: append, 在光標所在處後面輸入 

A:在當前光標所在行的行尾輸入 

o: 在當前光標所在行的下方打開一個新行 

O:在當前光標所在行的上方打開一個新行

模式轉換方式:

插入模式 ----> 命令模式 ESC

命令模式 ----> 擴展模式 : 

擴展模式 ----> 命令模式 ESC

鎖定和解鎖:CTRL+s,Ctrl+q

擴展模式: 

按“:”進入Ex模式

創建一個命令提示符:,處於底部的屏幕左側

:q 退出 

:q! 強制退出,丟棄做出的修改 

:wq 保存退出 

:x  保存退出 

w  寫(存)磁盤文件 

wq 寫入並退出 

x  寫入並退出 

q  退出 

q!不存盤退出,即使更改都將丟失 

r filename 讀文件內容到當前文件中 

w filename  將當前文件內容寫入另一個文件 !command r!command

命令模式:

ZZ: 保存退出 

ZQ:不保存退出

字符間跳轉:

h: 左

l: 右 

j: 下 

k: 上 

#COMMAND:跳轉由#指定的個數的字符; 

單詞間跳轉: 

w:下一個單詞的詞首 

e:當前或下一單詞的詞尾 

b:當前或前一個單詞的詞首 

#COMMAND:由#指定一次跳轉的單詞數 

當前頁跳轉: 

H:頁首 

M:頁中間行 

L:頁底

行首行尾跳轉: 

^:   跳轉至行首的第一個非空白字符; 

0:        跳轉至行首 

$:       跳轉至行尾 

行間移動: 

  #G: 擴展模式:

#:   跳轉至由#指定行 

G:  最後一行 

1G,gg:    第一行 

句間移動: (按住ctrl實現效果)

):下一句 (:上一句 

段落間移動:(按住ctrl實現效果)

}:下一段 {:上一段

命令模式翻屏:

  Ctrl+f: 向文件尾部翻一屏

  Ctrl+b: 向文件首部翻一屏

  Ctrl+d: 向文件尾部翻半屏

  Ctrl+u:向文件首部翻半屏

字符編輯: 

  x: 刪除光標處的字符; 

  #x: 刪除光標處起始的#個字符 

  xp: 交換光標所在處的字符及其後面字符的位置

  ~:轉換大小寫

替換命令(r, replace) 

  r: 替換光標所在處的字符 

  R:切換成REPLACE模式

刪除命令:

  d: 刪除命令,可結合光標跳轉字符,實現範圍刪除; 

  d$: 刪除到行尾 

  d^:刪除到非空行首 

  d0:刪除到行首 

  dw: de: db: #COMMAND

  dd: 刪除光標所在的行 #dd:多行刪除

  D:從當前光標位置一直刪除到行尾,留空行,等同於d$

複製命令(y, yank): 

  y: 複製,行爲相似於d命令 

  yy:複製行 #yy: 複製多行 

  Y: 複製整行

粘貼命令(p, paste):

  p:緩衝區存的如果爲整行,則粘貼當前光標所在行的下 方;否則,則粘貼至當前光標所在處的後面 

  P:緩衝區存的如果爲整行,則粘貼當前光標所在行的上 方;否則,則粘貼至當前光標所在處的前面

改變命令(c, change) 

  c: 修改後切換成插入模式 

命令模式 --> 插入模式 

  c$ 刪除此行光標之後並插入

  c^ 刪除此行光標之前並插入

  c0 刪除此段光標之後並插入

  cb 刪除此段光標之前並插入

  ce 刪除此行光標之後的段並插入

  cc 刪除當前行並輸入新內容 

  C  刪除當前光標到行尾,並切換成插入模式

命令使用方法:

  100iluyubo [ESC] 粘貼“luyubo”100次 

  <start position><command><end position> 

  Command: 

  y 複製、d 刪除、gU 變大寫、gu 變小寫 

  例如 0y$ 命令意味着: 

  0 → 先到行頭 

  y → 從這裏開始拷貝 

  $ → 拷貝到本行最後一個字符 

  ye 從當前位置拷貝到本單詞的最後一個字符

撤消更改:

  u撤銷最近的更改 

  #u撤銷之前多次更改 

  U 撤消光標落在這行後所有此行的更改 

  按Ctrl - r重做最後的“撤消”更改 

  . 重複前一個操作 

  n.重複前一個操作n次

擴展模式:

地址定界:

  #: 具體第#行,例如2表示第2行; 

  #,#: 從左側#表示行起始,到右側#表示行結尾 

  #,+#: 從左側#表示的行起始,加上右側#表示的行數 :

  2,+3  表示2到5行 

  .: 當前行 

  $: 最後一行 

  .,$-1 當前行到倒數第二行 

  %:全文, 相當於1,$

  /pat1/,/pat2/ 從第一次被pat1模式匹配到的行開始,一直到第一次被 pat2匹配到的行結束 #,/pat/ /pat/,$

使用格式:(後跟一個編輯命令)

  w file: 將範圍內的行另存至指定文件中 

  r file:在指定位置插入指定文件中的所有內容

查找並替換:

  /PATTERN:從當前光標所在處向文件尾部查找 

  ?PATTERN:從當前光標所在處向文件首部查找 

  n:與命令同方向 

  N:與命令反方向

  s: 在擴展模式下完成查找替換操作 格式:s/要查找的內容/替換爲的內容/修飾符 要查找的內容:可使用模式 替換爲的內容:不能使用模式,但可以使用\1, \2, ... 等後向引用符號;還可以使用“&”引用前面查找時查找到的整個內容  格式:s///,s@@@,s$$$

修飾符: 

  i: 忽略大小寫 

  g: 全局替換;默認情況下,每一行只替換第一次出現 

  gc:全局替換,每次替換前詢問

  查找替換中的分隔符/可替換爲其它字符,例如 s@/etc@/var@g s#/boot#/#i

vim寄存器介紹:

  有26個命名寄存器和1個無命名寄存器,常存放不同的 剪貼版內容,可以不同會話間共享。 

  用a,b,…,z表示,用“寄存器表示,放在數字和命令之間 如:3"tyy 表示複製3行到t寄存器中 "tp  表示將t寄存器內容粘貼 

  未指定,將使用無命名寄存器 

  有10個數字寄存器,用0,1,…,9表示,0存放最近復 制內容,1存放最近刪除內容。當新的文本變更和刪除 時,1轉存到2,2轉存到3,以此類推。數字寄存器不能 在不同會話間共享。

編輯二進制:

  以二進制方式打開文件 vim –b binaryfile 

  擴展命令模式下,利用xxd命令轉換爲可讀的十六進制 :%!xxd 

  擴展命令模式下,利用xxd命令轉換回二進制 :%!xxd –r 

  保存退出

可視化模式:

  允許選擇的文本塊 

  v 面向字符 

  V 面向行 

  ctrl-v 面向塊 

  可視化鍵可用於與移動鍵結合使用: w, ) , } ,箭頭等 

  突出顯示的文字可以被刪除,複製,變更,過濾,搜索/替換 等

多文件模式:

  vim FILE1 FILE2 FILE3 ... :

  :next  下一個 

  :prev  前一個 

  :first 第一個 

  :last  最後一個 

  :wall  保存所有 

  :qall  退出所有 

  :wqall 保存所有並退出

多文件分割:

  vim -o|-O FILE1 FILE2 ... 

  -o: 水平分割 

  -O: 垂直分割 

  在窗口間切換:Ctrl+w, Arrow 

單個文件窗口分割:

  Ctrl+w,s: split, 水平分割 

  Ctrl+w,v: vertical, 垂直分割 

  ctrl+w,q:取消相鄰窗口 

  ctrl+w,o:取消全部窗口 

  :wqall 退出

定製vim的工作特性:

配置文件:

  永久有效 全局:/etc/vimrc 

  個人:~/.vimrc 

擴展模式:

當前vim進程有效 

(1) 行號:

顯示:set number, 簡寫爲set nu 取消顯示:set nonumber, 簡寫爲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

(7) 文件格式

啓用:fileformat=unix 

不忽略: fileformat=dos 

(8) 設置文本寬度

:set textwidth=65 (vim only) 

:set wrapmargin=15 

:help option-list 

:set or :set all

練習案例:

1、複製/etc/profile至/tmp/目錄,用查找替換命令刪除 /tmp/profile文件中的行首的空白字符

[root@localhost tmp]# vim profile
擴展模式輸入:%s@^[[:space:]]\+@@

2、複製/etc/rc.d/init.d/functions文件至/tmp目錄,用查 找替換命令爲/tmp/functions的每行開頭爲空白字符的行的 行首添加一個#號

[root@localhost tmp]# vim functions 
擴展模式輸入:%s@^[[:space:]]@#$@

3、如何設置tab縮進爲4個字符? 

set ts=4

4、複製/etc/rc.d/init.d/functions文件至/tmp目錄;替換 /tmp/functions文件中的/etc/sysconfig/init爲/var/log; 

[root@localhost tmp]# vim functions 
:%s@/etc/sysconfig/init@/var/log:@

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

[root@localhost tmp]# vim functions 
:%s@^#[[:space:]]\+@#@g

6、將/etc/yum.repos.d/CentOS-Base.repo文件中所有的enabled=0替換爲enabled=1,所有gpgcheck=0替換爲gpgcheck=1

:%s@\(gpgcheck\|enabled\)=1@\1=0@


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章