Linux基础学习笔记之——VIM程序编辑器

VIM程序编辑器

1、vi 的使用

基本上 vi 共分为三种模式,分别是:一般指令模式、编辑模式和指令列命令模式

  • 一般指令模式

    以 vi 打开一个文件就直接进入一般指令模式了(这是默认的模式,也简称为一般模式)。在这个模式,你可以 “上下左右” 移动光标,可以使用 “删除字符” 和 “删除整行” 来处理文件,也可以使用 “复制、粘贴” 来处理你的文件数据

  • 编辑模式

    在一般模式中可以进行删除、复制、粘贴等工作,但是无法编辑文件内容!要等到你按下 “i、I、o、O、a、A、r、R” 等任何一个按键后才会进入编辑模式。

  • 指令列命令模式

    在一般模式当中,输入 “: / ?” 三个中的任何一个按键,就可以将光标移动到最底下那一列在这个模式中,可以提供 “搜寻资料” 的动作,而读取、存盘、大量取代字符、离开 vi、显示行号等工作都是在此模式完成的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JLtID3xx-1596852243831)(E:\学习笔记\Linux\Linux学习\vi模式切换.png)]

1.1、一般指令模式可用的按键说明,光标移动、复制粘贴、搜寻取代等

移动光标的方法
方向键 上下左右
[Page Down/Up] 向下/上翻页
n<space> n 代表数字。按下数字后再按空格,光标会向右移动这一行的 n 个字符
0 或 [Home] 移动到这一行的最前面
$ 或 [End] 移动到这一行的最后面
G 移动到这个文件的最后一行
nG n 为数字。移动到这个文件的第 n 行
gg 移动到这个文件的第一行
n<Enter> n 为数字。光标向下移动 n 行
搜寻与取代
/word 向光标之下寻找一个名称为 word 的字符串
?word 向光标之上寻找一个名称为 word 的字符串
n 重复之前的动作
N 反向重复之前的动作
:n1,n2s/word1/word2/g n1 和 n2 为数字。在第 n1 与 n2 之间寻找 word1 这个字符串,并将该字符取代为 word2 !
:1,$s/word1/word2/g 从第一行到最后一行同上
:1,$s/word1/word2/gc 取代之前提示用户确认(confirm)
删除、复制与粘贴
dd 删除光标所在的那一行
ndd 删除光标所在的向下 n 行
yy 复制光标所在的那一行
nyy 复制光标所在那一行向下的 n 行
p,P 将已复制的数据在光标下一行粘贴,P 为上一行
u 复原前一个动作
[Ctrl]+r 重复前一个动作

1.2、一般指令模式切换到编辑模式的可用按键说明

进入插入或取代的编辑模式
i,I 进入插入模式
i 为 “从目前光标所在处插入”;I 为 “在目前所在行的第一个非空格字符处开始插入”
a,A 进入插入模式
a 为 “从目前光标所在的下一个字符处开始插入”,A 为 “从光标所在行的最后一个字符处开始插入”
o,O 进入插入模式
o 为 “在目前光标所在的下一行处插入新的一行”,O 为 “在目前光标所在处的上一行插入新的一行”
r,R 进入取代模式
r 只会取代光标所在的那一个字符一次,R 会一直取代光标所在的文件,直到按下 ESC 按键

1.3、、一般指令模式切换到指令列模式的可用按键说明

指令列模式的存储、离开等按键说明
:w 将编辑的文件写入硬盘
:w! 若文件属性为 “只读”,强制写入。但最终还是要与文件权限有关
:q 离开 vi
:q! 不保存,强制离开
:wq 保存离开
ZZ 若文件改动,保存离开;若没改动,不保存离开
:w [文件名] 将编辑的文件保存到另一个文件中
:r [文件名] 在编辑的数据中,读入另一个文件的数据。即将文件的内容加到光标所在的行之后
vi 环境的变更
:set nu 显示行号
:set nonu 取消行号

1.4、VIM 的暂存文件、救援回复与开启时的警告信息

[root@li ~]# cd /tmp/testpw/
[root@li testpw]# vim man_db.conf
						#按下 [Ctrl]-z
[1]+  已停止               vim man_db.conf

[root@li testpw]# ls -al
总用量 2024
drwxr-xr-x.  2 root root     140 8月   8 09:35 .
drwxrwxrwt. 19 root root    4096 8月   8 09:35 ..
-rw-------.  1 root root    4096 8月   8 09:35 .man_db.conf.swp	#暂存文件
...

[root@li testpw]# kill -9 %1
						#中断 vim 的工作
[1]+  已停止               vim man_db.conf
[root@li testpw]# ls -al .man_db.conf.swp	
-rw-------. 1 root root 4096 8月   8 09:35 .man_db.conf.swp	#暂存文件还是会存在
[1]+  已杀死               vim man_db.conf

那么此时编辑 man_db.conf 会出现什么情况呢?

[root@li testpw]# vim man_db.conf
E325: 注意
发现交换文件 ".man_db.conf.swp"
            所有者: root    日期: Sat Aug  8 09:35:51 2020
            文件名: /tmp/testpw/man_db.conf
            修改过: 否
            用户名: root      主机名: li.erver
           进程 ID: 15396
正在打开文件 "man_db.conf"

(1) Another program may be editing the same file.  If this is the case,
    be careful not to end up with two different instances of the same
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    如果是这样,请用 ":recover""vim -r man_db.conf"
    恢复修改的内容 (请见 ":help recovery")。
    如果你已经进行了恢复,请删除交换文件 ".man_db.conf.swp"
    以避免再看到此消息。

交换文件 ".man_db.conf.swp" 已存在!
以只读方式打开([O]), 直接编辑((E)), 恢复((R)), 删除交换文件((D)), 退出((Q)), 中止((A)):

上面 vim 提示两点主要的问题与解决方案:

  • 问题 1 :可能有其他人或程序正在同时编辑这个文件,解决方法是:
    1. 找到另一个程序或人员,请他结束 vim 的工作;
    2. 如果你只是要看该文件的内容并不会修改的话,那么你可以选择开启称为只读文件,即上述最后一行的 O。
  • 问题 2:可能不知名的原因导致 vim 中断:
    1. 如果你之前的 vim 动作没有保存,此时按下 R 按键,此时会加载 .man_db.conf.swp 的内容,然后自行决定是否保存。但是这个暂存文件不会自动删除,必须手动删除,不然每次编辑这个文件,都会出现警告信息。
    2. 如果你确定那个暂存文件是没用的,直接按下 D 按键,删除暂存文件。

2、VIM 的额外功能

2.1、区块选择

区块选择的按键说明
v 字符选择
V 行选择
[Ctrl]+v 区块选择,可以用长方形的方式选择资料
y 复制
d 删除
p 粘贴

2.2、多文件编辑

多文件编辑按键
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出目前这个 vim 的开启的所有文件

2.3、多窗口功能

多窗口功能按键
:sp [文件名] 开启一个新窗口,如果加上文件名,表示在新窗口开启一个新文件,否则表示两个窗口为同一个文件(同步显示)
[Ctrl]+w+j
[Ctrl]+w+↓
先按下 [Ctrl] 不放,再按下 w 后放开所有的按键,然后按下 j 或 ↓
[Ctrl]+w+k
[Ctrl]+w+↑
同上
[Ctrl]+w+q 结束当前窗口

[Ctrl]+w+↑ | 同上 |
| [Ctrl]+w+q | 结束当前窗口 |

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_36879493/article/details/107875449
今日推荐