1. 程式人生 > >文本編輯工具之vim使用介紹

文本編輯工具之vim使用介紹

vim

1、文本編輯器:

純文本編輯器,ascii碼(127個字符),unicode(全球統一編碼)


2、文本編輯器分類:

行編輯器:sed

全屏編輯器:nano、vi、vim


3、vim編輯器模式介紹:

編輯模式:(也叫命令模式)

輸入模式:

末行模式:內置命令行接口

4、vim編輯器模式之間轉換:

編輯模式-->輸入模式

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

a:append;在光標所在處後方輸入

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

I:在光標所在行行首輸入

A:在光標所在處行尾輸入

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

輸入模式-->編輯模式

ESC鍵

編輯模式-->末行模式


末行模式-->編輯模式

ESC鍵


5、vim新建或打開文件

格式:

vim [options] [file ..]

vim [options] -

vim [options] -t tag

vim [options] -q [errorfile]

option:

+#: 打開文件後,光標直接處於第#行的行首,如果不加#,+則代表處於文件尾行行首;

+/PATTERN:打開文件後,直接讓光標處於被模式PATTERN匹配的第一次匹配的字符行的行首


6、vim退出

ZZ: 在編輯模式下,輸入兩個大寫Z

q:不保存退出,在末行模式下輸入q

q!:強制不保存退出,末行模式下

wq:保存退出,末行模式下

x:保存退出,末行模式下

w /path/to/somefile :保存至指定路徑文件,末行模式下



7、編輯模式下(即命令模式)的相關操作

7.1、實現光標跳轉:字符間跳轉、單詞間跳轉、行首行尾跳轉、行/句間跳轉、段間跳轉

字符間跳轉:

h:向左跳轉一個字符

l:向右跳轉一個字符

j:向下跳轉一個字符

k:向上跳轉一個字符

#[hjkl]:向相應方向一次跳轉#個字符;如2h,向左跳轉2個字符一次

單詞間跳轉:

w:跳轉至下一個單詞的詞首;

b:跳轉至當前或前一個單詞的詞首

e:跳轉至當前或下一個單詞的詞尾;

#[wbe]:跳轉指定的#單詞;

行首行尾跳轉:

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

0:零;跳轉至行首,絕對行首(包括空白字符)

$:跳轉至行尾,絕對行尾,包括空白字符

行間跳轉:

#G:跳轉指定的#行

1G:跳轉至第一行

G:跳轉至最後一行;

gg:跳轉至第一行

句間跳轉:

):跳轉至下一句(右括號)

(:跳轉至前一句(左括號)

#[()]:跳轉至第#句

段間跳轉:

}:跳轉至下一段落

{:跳轉至上一段落

#[{}]:跳轉至第#段落


7.2、翻屏操作:

ctrl+f:向文件尾部翻一屏;

ctrl+b:向文件首部翻一屏;

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

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

enter:按行向後翻


7.3、編輯模式下的命令

有如下:字符編輯、替換操作、刪除操作、粘貼操作、復制操作、改變操作等命令

字符編輯命令:

x:刪除光標所在處的字符

#x:刪除光標所在處及其後的指定個數#的字符

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

替換命令:replace

r:替換光標所在處的字符,r後跟要替換的單個字符

刪除命令:d

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

[#]d[hjklweb]:結合光標跳轉字符操作

dd:刪除光標所在的行

#dd:刪除光標所在處及其後的共#行;

粘貼命令:p

p:小寫p;緩沖區中的內容如果為整行,則粘貼在當前光標所在處的下行,如果不為整行,則粘貼至當前光標所在處的後方;

P:大寫P;緩沖區中的內容如果為整行,則粘貼在當前光標所在處的上方,如果不為整行,則粘貼至當前光標所在處的前方;


復制命令:yank,y

y:復制,工作行為相似於“d”命令

yy:復制一整行

#yy:復制共#行

y[^$0web]

改變命令:c

改變命令c和刪除命令d一樣,只是比d命令多了模式切換。從編輯模式切換到輸入模式。

c:

#cc


撤銷命令:

u:撤銷此前的操作,默認最多可撤銷前50次操作

#u:撤銷此前的#次操作


撤銷此前的撤銷命令:

ctrl+r :恢復此前的撤銷操作。


重復執行前一次編輯操作:. (點號)

.


可視化模式:支持上下左右鍵框選。

v:小寫v;按字符選定

V:大寫V;按行選定;


vim自帶的練習教程:vimtutor



8、末行模式操作:

末行模式是內建的命令行接口。

他包括以下:地址界定、查找、查找替換等操作。


8.1、地址界定:可同編輯命令一同使用,實現編輯操作,如:d,y,c,w,r;註意編輯操作直接跟在界定後面,不用再加空格

地址界定格式:

:start_pos[,end_pos] //開始位置[,結束位置]

:# : 第#行;

如::5 表示第5行,

:#,N :指定範圍,左側為起始行,右側為結束行

如::9,100 :表示從第9行到第100行

:#,+# :指定行範圍,左側為起始行絕對編號,右側為相對左側的偏移量;

如::3,+7 :表示從第三行到第10行

:. :點好表示當前行。

:$ :最後一行

如::.,$ :表示當前行到最後一行

:% :表示全文

相當於:1,$

:/pattern/ :從光標所在處開始,第一次被模式所匹配的行

如: :/fstab/ :表示查找第一次匹配到的fstab。

:/fstab/,$ :表示從光標所在處第一次匹配到的fstab到末行之間的行。

:/pattern1/,/pattern2/ :第一次被模式1匹配到的和第一次被模式二之間匹配到額行,很少用。


地址界定後跟編輯操作:

:5w /path/to/somefile:把第5行內容寫到特定文件中

:5r /path/from/somefile:在第五行後追加其他文件的內容

:w /path/to/somefile :將範圍內的文本保存到指定的文件中

:r /path/from/somefile :將指定文件中的文本讀取並插入指定位置;


8.2、查找

:/pattern :從當前光標所在處向文件尾部查找,能夠被當前模式匹配到的所有字符串;註意和地址界定中的:/pattern/ 的區別。

:?pattern :從當前光標所在處向文件首部查找,能夠被當前模式匹配到的所有字符串;


註意: /pattern和?pattern可以配合n和N進行定位,n和命令方向相同,N和命令方向相反;


8.3、查找並替換: s

格式::s/要查找的內容/替換為的內容/[修飾符]


要查找的內容:可使用正則表達式

替換為的內容:不能使用正則表達式,但是可以引用。

註意:如果“要查找的內容”部分在模式中使用分組符號,在替換為的內容中使用後項引用; 直接引用查找模式匹配到的全部文本,要使用 & 符號。

修飾符:

i:查找時忽略大小寫

g:全局替換。默認為替換每行中的第一個匹配項

註意:如果分隔符與查找的或替換的內容有沖突,可以將分隔符“/”替換成其他的非常用字符,如@、#

:s@要查找的內容@替換為的內容@[修飾符]

:s#要查找的內容#替換為的內容#[修飾符]

如::%s@\<t\([[:alpher:]]\+\)\>@T\1@g //匹配到t開頭的單詞,然後換成T開頭的單詞

:%s@\<t[[:alpher:]]\+\)@&er@g //匹配到t開頭的單詞,在其後加上er

:%s@#@@ //將#號開頭的行替換成空


練習1:復制/etc/grub2.cfg文件至/tmp目錄中,用查找替換命令刪除/tmp/grub2.cfg文件中以空白字符開頭的行的行首空白字符

[root@localhost ~]# cp /etc/grub2.cfg /tmp/

:%s/^[[:space:]]\+//


練習2:復制/etc/rc.d/init.d/functions文件至tmp中,用查找替換命令為/tmp/functions文件中的每個以空白字符開頭的行的行首加上“#”

[root@localhost tmp]# cp /etc/rc.d/init.d/functions /tmp/functions

:%s/^[[:space:]]\+/#\1/g


練習3:為/tmp/grub2.cfg文件的前三行的行首加上#

:1,3s/.*/#&/


練習4:將/etc/yum.reposd/centos-base.repo文件中將所有enabled=0替換為enabled=1,所有的gpgcheck=0,替換為gpgcheck=1

[root@localhost tmp]# cp /etc/yum.repos.d/CentOS-Base.repo /tmp/centos-base.repo

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


9、vim多文件功能

vim file1 file2 ... //依次新建、打開多個文件,默認打開的第一個,在新建的文件中進行切換,在末行模式下輸入:next(下一個文件)、prev(上一個文件)、first(第一個文件)、last(最後一個文件)。


退出所有文件,末行模式下輸入:

wqall :保存退出所有文件

wall:保存所有文件

qall:推出所有文件

如:[root@localhost tmp]# vim fstab issue //依次打開fstab、issue文件,如果不存在,則新建。


9.1、vim文件的多窗口功能:

多文件的多窗口顯示:

vim -o file1 file2 //小寫“o”水平分割同時顯示file1和file2

vim -O file1 file2 //大寫“o”垂直分割同時顯示file1和file2

文件窗口之間的切換:按住ctrl+w松開後,用上下左右箭頭選擇需要操作的文本窗口。


單文件的多窗口顯示:

打開文件後,按住ctrl+w松開,按s鍵水平分割;

打開文件後,按住ctrl+w松開,按v鍵垂直分割;

關閉展開的窗口,正常退出操作即可。


10、定制vim的工作特性:

末行模式下的設定,僅對當前vim進程有效;

如果要vim特性永久有效,需要修改配置文件:

全局配置文件:/etc/vimrc

個人配置文件:~/.vimrc //可能需要自己創建此文件。

如:vim /root/.vimrc

set number //顯示行號。


vim特性:(末行模式下設定)

行號:

顯示行號:set number 簡寫為set nu

取消行號:set nonumber 簡寫為set nonu

括號匹配,高亮顯示:

匹配顯示:set showmatch ;set sm

取消顯示:set noshowmatch;set nosm

自動縮進:

啟用縮進:set ai

停用縮進:set noai

高亮搜索結果:

啟用設置:set hlsearch

停用設置:set nohlsearch

語法高亮顯示:

啟用設置:syntax on

停用設置:syntax off

忽略字符大小寫:(查找替換中的修飾符g)

啟用設置:set ic

停用設置:set noic


11、末行模式下的幫助命令:

help

help 關鍵字



12、設置vim編輯器中的tab縮進為四個字符

在.vimrc中添加以下代碼,實現按tab鍵產生4個空格

set ts=4 (註:ts是tabstop的縮寫,設置tab寬4個空格)

set expandtab


























文本編輯工具之vim使用介紹