1. 程式人生 > >【linux相識相知】VIM編輯器

【linux相識相知】VIM編輯器

ins span ext number 命令 sub 右鍵 修改 編譯

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編輯器