首頁 > 系統教程 > Linux > 主體

linux基礎指令-文字編輯vim

王林
發布: 2024-02-11 10:39:32
轉載
497 人瀏覽過

本文介紹vim(版本7.4)的一般用法,****vim是功能強大的文字編輯器,是vi的增強版。

使用vim編輯一個檔案最常用的指令是:

vim file 是一個新文件,也可以是原始文件。這樣的指令執行後會開啟編輯器,顯示檔案file的內容。如圖所示:

linux基礎指令-文字編輯vim

如果是新文件,底部左邊會顯示”file” [新文件]的字樣,右邊顯示0,0-1表示當前遊標所在行數和字元數。如果開啟的是一個舊文件,底部左邊顯示”file” 3L, 66C字樣,表示文件名,當前遊標所處行號,文件總字節數。文件中沒有字元的地方會以字元~開頭。

現在還不能進行編輯,vim編輯檔有幾種模式,目前所處模式是普通模式,可以移動遊標、執行複製貼上等指令;另外還有兩種常用模式:插入模式和底行模式。

開始進入的一般都是普通模式,按如下鍵將進入插入模式:

1. a 在光标所在位置下一个字符开始输入
2. A 在光标所在行尾开始输入
2. i 在光标所在位置开始输入
4. I 在光标所在行首开始输入
5. o 在光标所在行下新增一行,并在新增行行首开始输入
6. O 在光标所在行上新增一行,并在新增行行首开始输入
登入後複製

進入插入模式後,底部會出現– 插入 –字樣;這時就可以在遊標位置進行輸入了。從插入模式退回到普通模式按ESC鍵。

在普通模式按如下鍵將進入底行模式:

#
1. : 执行命令
2. / 正向搜索
3. ? 反向搜索
登入後複製

從底行模式退回到普通模式需按兩次ESC鍵

底行模式執行:q(quit)表示退出編輯器,如果對文件內容進行過更改,需要執行:wq(write quit)來保存退出;如果不保存退出則需要執行:q!強制退出;強制保存退出為:wq!。

linux基礎指令-文字編輯vim

以下列出一些在普通模式下可以執行的指令及它們的作用:

#文本本修改:

1. dd  剪切光标所在位置的整行(保存在临时缓冲区)
2. ndd n为数字,表示从当前行开始,从上到下剪切n行
3. p   将缓冲区中的内容放到当前行之下
4. np  n是数字,相当于执行n次p命令
5. P   将缓冲区中的内容放到当前行之上
6. y   从光标处开始复制
6. yy  复制当前行(保存在临时缓冲区)
7. nyy n为数字,表示从当前行开始,从上到下复制n行
8. r   替换光标所在位置的一个字符
9. R   从光标位置开始替换,并进入文本输入模式(ESC退出)
10. u   撤销上一次操作
11. ZZ  保存退出
12. 移动光标:
13. h或左箭头键 光标向左移动一格
14. l或右箭头键 光标向右移动一格
15. j或下箭头键 光标向下移动一格
16. k或上箭头键 光标向上移动一格
17. 0 光标移动到当前行开头
18. ^ 光标移动到当前行非空白字符(如空格、tab键等)的开头
19. $ 光标移动到当前行结尾
20. g_ 光标移动到当前行非空白字符的结尾
21. w  光标移动到下一个单词的开头
22. e  光标移动到下一个单词的结尾
23. *  匹配光标所在单词,移动到下一个相同的单词
24. #  匹配光标所在单词,移动到上一个相同的单词
25. f{ 光标移动到当前行的下一个字符{处,{可以换成其他字符
26. F} 光标移动到当前行的上一个字符}处
27. t, 光标移动到当前行的下一个逗号之前一个字符处
28. T, 光标移动到当前行的上一个逗号之后一个字符处
29. %  移动到成对括号的另一半括号处,包括() {} [].需要先将光标移动到括号上。
30. gg 光标移动到文件第一行行首
31. G  光标移动到文件最后一行行首
32. 回车键 光标移动到下一行行首
登入後複製

這裡只列出一部分,初學者也許覺得太多,記不住。其實只要記住其中幾個,就完全可以使用了;其他的作用大多是使你的操作更簡便快捷。

vim中的各種指令,大多可以組合使用:

#例如要刪除遊標目前所在位置一直到行尾,可以執行d$;

例如要在目前位置插入50個‘word’,只要執行50iword ESC按完ESC鍵之後這50個字就被插入了;

例如要貼上被複製的內容,但希望貼上5次,則執行5p;

例如要再執行上一次指令5次,則執行5.;

熟練使用這些命令將極大提高編寫檔案的速度。

在插入模式下(普通模式按a、i、o等),輸入一個單字的開頭,然後按CTRL-P或CTRL-N就會自動補齊。

底行模式共三個開始字元(:、/、?),其中/和?用來匹配模式搜尋:

如搜尋檔案內字串centos:

/centos
登入後複製

輸入這個字串之後按回車,vim就會將所有符合的字串高亮顯示,按下n鍵,遊標就會跳到下一個符合字串處,按N鍵,遊標就會跳到上一個匹配處。 (想想man查詢)

使用?和/的作用相同,不過是方向相反。

:可以執行許多指令,如前面介紹過的儲存退出指令:wq。

下面介紹部分底行模式指令:

1 :set nu   显示行号
2 :set nonu 隐藏行号
3 :r file   读取文件file内容并写入当前编辑的文件中,内容从光标当前位置下一行开始插入。
4 :w file   将当前编辑的内容写入一个新文件file中。
5 :s /pattern/string/ 将匹配pattern的字符串替换成string
6 :x        作用和:wq相同,保存并退出。
7 :! command 暂时离开vim并执行shell命令command。
8 :help     查看帮助
9 :.=       显示当前行号
10 :=        显示总行数
11 :n        移动光标到第n行行首
登入後複製

這些指令也可以組合如執行shell指令並將結果寫入目前行的下一行:

#r!ls -l

還能組合其他模式下的指令如替換目前行所有符合模式的字串:

s/pattern/string/g # g表示全域

如取代本檔案中所有符合模式的字串:

#%s/pattern/string/g # %表示所有行

如替換指定行的匹配字串:

n,ms/pattern/string/g

這裡n和m都是數字,代表行號。可以用點號.代表目前行

如刪除目前行到第五行的內容:

.,5d

噹噹前行處於第五行以下時,會有反向刪除的提示。

使用/pattern和:s/pattern/string時,pattern是一個正規表示式,用來匹配一個字串的模式。

正規表示式和先前介紹的通配符(基礎指令介紹二)有一些相似的地方,但要注意區分兩者的不同。

通配符主要是用於對檔案名稱的匹配,正規表示式不僅可以用於匹配檔案名,事實上,它可以進行任何字串的匹配。它要比通配符更通用,大多數程式語言和一些工具中(如vim、grep、awk、sed)都有對正規表示式的直接支援。

下面介紹一部分將要用到的正規表示式的概念與用法:

匹配位置:
^ 表示行开头
$ 表示行结尾
 表示单词结尾
匹配字符:
. 表示匹配任意单个字符(相当于通配符中的?)
[...] 表示匹配括号内任意单个字符
[^...] 表示匹配任意一个非列出字符 #参照通配符描述
/a    匹配英文字符,等同于[a-zA-Z]或[[:alpha:]]。
/A    匹配非英文字符,等同于[^a-zA-Z]。
/d    匹配数字,等同于[0-9]或[[:digit:]]。
/D    匹配非数字,等同于[^0-9]。
/x    匹配十六进制数字,等同于[0-9A-Fa-f]或[[:xdigit:]]。
/X    匹配非十六进制数字,等同于[^0-9A-Fa-f]。
/w    匹配单词,等同于[0-9A-Za-z_]。
/W    匹配非单词,等同于[^0-9A-Za-z_]。
/t    匹配TAB字符。
/s    匹配空白字符,等同于[ /t]或[[:blank:]]。
/S    匹配非空白字符,等同于[^ /t]。
/u    匹配大写字母,等同于[A-Z]或[[:upper:]]。
/U    匹配非大写字母。
/n    匹配换行
/r    匹配回车
(...) 匹配并捕获,用/1 /2 /3 ...来引用被捕获的字符串。
|     表示逻辑或
匹配数量:
* 表示匹配前一个字符零到任意多次,相当于{0,}。
+ 表示匹配前一个字符一到任意多次,相当于{1,}。
? 表示匹配前一个字符零到一次,相当于{0,1}。#注意和通配符?的区别
{n,m} 表示匹配前一个字符n到m次。
登入後複製

在使用正则表达式时,有时需要在特殊字符之前加上转义字符”/”来使特殊字符表示它的字面意思而不是它的特殊意义,在特定的工具中使用正则时,也需要这样做来避免特殊字符被工具本身解释。

vim在使用如下正则表达式时需要将特殊字符转义:/、/{n,m}、/(…/)、/?、/+、/|下面结合正则举例说明vim中模式匹配及部分命令用法

匹配字符串world并使光标停留在匹配行后第三行行首:

/world/+3

将第三行到第八行行首添加注释符号//:

3,8s/^//////

注意这里的行首符^和转义符’/’的用法:

%g/^/sxyz/normal dd

此命令作用是全局匹配以空白后接xyz开头的行,并执行普通模式下的命令dd

如匹配6个以上的小写字母:

//a/{6,}

如交换冒号:两侧的字符串:

s//(./):/(./)//2:/1/ #注意这里是如何引用之前匹配的分组的

如将所有tag、tog和tug分别改为hat、hot和hut

%s/t/([aou]/)g/h/1t/g

如匹配hello或world两个单词:

///|/

这里只列出部分vim用到的正则表达式,关于正则的更多内容,以后的文章中还会有描述和举例。

vim编辑器是很强大的,这里只描述了部分初级使用方法。vim还能使用视图模式,编辑多文本,设置键盘映射,多剪贴板,录制宏,使用插件等等。完全可以用vim作为IDE来使用。但相对来说,vim的学习曲线比较陡峭,不同的应用场景,需要记忆的命令和方法数量也是完全不同的。建议在学习中,每次只熟悉几个命令,一段时间后,就能流畅快捷的编辑文本了。

以上是linux基礎指令-文字編輯vim的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:lxlinux.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板