Linux 文本编辑器 Vim

Ø  简介

本文主要记录 Linux 中文本编辑器 Vim 的使用,包括以下内容:

1.   Vim/Vi 简介

2.   Vim/Vi 工作模式

3.   其他命令

4.   应用实例

 

1.   Vim/Vi 简介

Vim/Vi 是一个功能强大的全屏幕文本编辑器,是 Linux/UNIX 上最常用的文本编辑器。它的作用是建立、编辑、显示文本文件。

 

注意事项:

1)   Vim/Vi 没有菜单,只有命令;

2)   在多用户编辑同一个文件时,最后一个用户保存时,如果文件已经被改变的话,会给出提示;

3)   Vi 文本编辑器有很多的功能,但没必要都去学习,只需学习常用的文本编辑就可以了。

 

2.   Vim/Vi 工作模式

1)   命令模式

命令模式是 vi 编辑进入的默认模式。

1.   定位命令

h(左键)

左移一个字符

l(右键)

右移一个字符

k(上键)

上移一行

j(下键)

下移一行

0

移至行首

$

移至行尾

Enter

移至下行行首

 

 

H

移至屏幕上端

M

移至屏幕中央

L

移至屏幕下端

 

 

gg

定位到第一行

G

定位到最后一行

:n ngg nG

定位到第n

 

2.   删除命令

x

删除光标后的字符

X

删除光标前的字符

nx

删除光标后的n个字符

 

 

dd

删除光标所在行

ndd

删除光标后的n

dG

删除光标处到文件末尾的内容

D

删除从光标所在处到行尾

:n1,n2d

删除指定范围的行

 

 

 

3.   复制和剪切命令

yyY

复制当前行

nyynY

复制当前行以下n

dd

剪切当前行

ndd

剪切当前行以下n

pP

粘贴在当前光标所在行下或行上

 

 

 

4.   替换和取消命令

r

取代光标所在处字符

R

从光标所在处开始替换字符,按 Esc 结束

s

删除光标所在字符,并进入插入模式

S

删除光标所在行,并进入插入模式

u

取消上一步操作(可以取消到文件打开时的状态)

ctrl + r

取消后再撤回取消

U

取消当前行的所有操作

 

 

 

5.   搜索和替换命令

/string

向前搜索指定字符串。

搜索时忽略大小写 :set ic

搜索时匹配大小写 :set noic

n

搜索指定字符串的下一个出现的位置,N 搜索上一个出现的位置

:%s/old/new/g

全文替换指定字符串,/g表示不确认;/c可以替换前确认

:n1,n2s/old/new/g

在一定范围内替换指定字符串,/g表示不确认;/c可以替换前确认

说明:替换为空字符可以使用::%s/old//g

 

6.   替换

r

 

取代光标所在处字符

R

从光标所在处开始替换字符,按 Esc 结束

 

2)   插入模式

插入模式用于编辑文件,使用 I 键进入插入模式,此时会在下方出现" -- INSERT -- "的提示;返回命令模式使用 ESC 键。

1.   插入命令

i

在光标前插入文本

I

在本行开始插入文本

a

在光标后附加文本

A

在本行行末附加文本

o

在光标下插入新行

O

在光标上插入新行

 

3)   编辑模式

使用":"键进入编辑模式,编辑模式的常用命令:

1.   :set number

设置显示行号,或者 :set nu

2.   :set nonumber

取消显示行号,或者 :set nonu

3.   :q

退出,或 :q! 强制退出

4.   :w

保存,或 :w! 强制保存。也可以另存为,例如::w /tmp/file1

注意:单独执行 w 命令后后,会创建一个于文件同名的隐藏文件,例如:.plantask

5.   :wq

保存并退出(或者使用快捷键ZZ;强制保存退出使用 :wq!,但是只能是文件的所有者,或者管理员 root

注意:执行 :wq 无论文件是否改变,都会更新文件的修改时间。

6.   :x

写入文件并退出,与 :wq 唯一不同的是,只有当文件真的被修改了,才更新文件的修改时间,否不会更新。

7.   :e!

放弃所有修改,从上次保存文件开始重新编辑。

8.   :!

在编辑模式下执行任何命令。例如:

:!ifconfig      #在编辑模式下查看IP地址

 

3.   其他命令

ctrl + f / b        #向下/向上翻页

ctrl + e / y        #向下/向上翻滚

 

4.   应用实例

1)   导入文件内容

:r /etc/issue       #导入 issue 文件中的内容到当前文件中(命令模式下)

 

2)   同时打开多个文件

vi -o file1 file2   #同时打开两个文件(以垂直方向上下显示)

vi -O file1 file2   #同时打开两个文件(以水平方向左右显示,但是不行?)

说明:使用 ctrl + ww 切换编辑的文件。

 

3)   Vi 中执行命令,格式::!命令,示例:

:!ls -l /learn/services     # vi 中执行命令

:r !date            #导入命令执行结果

 

4)   定义快捷键,格式::map 快捷键 触发命令,示例:

:map ^P I#<ESC>     #定义快捷键 Ctrl + p 在行首添加注释(#)

:map ^B 0x          #定义快捷键 Ctrl + b 删除行首的第一个字符(可以用于取消注释)

:map ^E iabeam@mdingdang.com    #定义快捷键 Ctrl + e 在光标处插入邮箱

注意:定义快捷键(如:^P)使用 Ctrl + v + p 来完成输入。

 

5)   连续行注释

:7,11s/^/#/g       #7~11行的行首添加注释(#)

:7,11s/#//g        #7~11行中替换所有的#

:7,11s/^#//g       #7~11行中取消注释

:1,5s/^////g     #1~5行中添加 // 的注释,使用""转义符

 

6)   替换

:ab mymail abeam@mdingdang.com  #输入 mymail + (空格或回车),自动替换为 abeam@mdingdang.com

:unab mymail    #取消 mymail 替换

 

7)   配置 vi 配置文件 .vimrc

配置 .vimrc 文件后 vi 配置适用于所有文件;

该文件位于每个用户的 home 目录下,默认是不存在的,需要单独创建。

[root@localhost ~]# vi /root/.vimrc

编辑配置内容,例如:

set nu

map ^P I#<ESC>

map ^B 0x

ab mymail abeam@mdingdang.com

原文地址:https://www.cnblogs.com/abeam/p/15415593.html