飞凌嵌入式ElfBoard-Vim编辑器之Vim常用操作命令

系统终端常用的相关命令

1.创建打开文件

命令:vim filename

我们可以通过以上命令创建一个新文件或者是打开已有文件进行编辑。已打开hello.c文件为例

|-----------------------------------------------|
| elf@ubuntu:~/work/example/hello$ vim hello.c |

如果需要打开文件,并指定到某一行,可以用"vim filename +行号"直接进入到文件的

|--------------------------------------------------|
| elf@ubuntu:~/work/example/hello$ vim hello.c +4 |

使用vim打开文件后,默认为一般模式。

2.文件对比

Vim中的vimdiff对比工具可以很容易实现文件对比的功能,用法举例如下:我们修改一个hello.c文件中的一个字母命名为另一个hello1.c文件,我们可以通过以下指令对比出两个文件差异的地方。

|------------------------------------------------------------|
| elf@ubuntu:~/work/example/hello$ vimdiff hello.c hello1.c |

Vim一般模式常用命令

Vim打开文件默认为一般模式,如果不是,需要按ESC键进入一般模式。

1.移动光标

Vim编辑器的编辑过程使用键盘来完成的。在命令模式可以通过k、j、h、l(小写的L)来完成光标的移动。

|--------|-----------|
| 指令 | 作用 |
| k或↑ | 将光标上移一行 |
| j或↓ | 将光标下移一行 |
| h或← | 将光标左移一个字母 |
| l或→ | 将光标右移一个字母 |

如果你想通过一个命令上移或下移多行,或者左移、右移多个字母,可以使用数字和字母结合使用。

例如向下移动3行,可以执行3j。当前光标位置如下:

执行3j后光标位置:

2.屏幕翻页

|-------------------|--------|
| 指令 | 作用 |
| Ctrl+f 或Page Down | 向下翻页 |
| Ctrl+b或Page Up | 向上翻页 |

3.删除文本

|--------|-------------------------------------------|
| 指令 | 作用 |
| dd | 删除光标所在的整行内容; dd前增加数字,比如2dd可以删除从光标所在行开始的两行 |
| d$ | 删除本行光标所在位置及以后的所有字符 |
| d^ | 删除本行光标之前的所有字符 |
| dw | 删除从光标所在位置直到下一个字符开始的所有内容 |

4.复制与粘贴

Vim提供了很多简单快捷的复制方法,将光标移动到将要粘贴的地方,按p就可以完成文本粘贴;在命令行模式下连按yy即可复制光标所在行的内容,连按yny即可复制从光标所在行开始的n行。

|--------|----------------------|
| 指令 | 作用 |
| yy | 复制当前行,在yy前添加数字可以复制多行 |
| p | 在光标之后粘贴复制行 |
| P | 在光标之前粘贴复制行 |

5.编辑文件

从"一般模式"进入"编辑模式",可以使用以下指令:

|--------|----------------------|
| 指令 | 作用 |
| i | 在光标所在行的位置插入内容,进入编辑模式 |
| I | 在光标所在行的行首插入内容,进入编辑模式 |
| a | 在当前光标之后插入内容,进入编辑模式 |
| A | 在光标所在行的行尾插入内容,进入编辑模式 |
| o | 在当前光标所在行下方添加一行 |
| O | 在当前光标所在行上方添加一行 |

进入"编辑模式"后,如下图:

从"编辑模式"按ESC会再次进入"一般模式"。

6.撤销操作

在"一般模式"下可以使用以下指令:

|--------|-------------|
| 指令 | 作用 |
| u | 撤销最近的一次编辑操作 |

Vim命令模式常用命令

我们首先需要按ESC键进入一般模式,然后再进行操作。

1.退出vim

根据不同的需要使用以下命令退出vim。

|--------|--------|
| 指令 | 作用 |
| :q | 未修改退出 |
| :q! | 不保存退出 |
| :wq! | 保存退出 |

示例:

未修改退出:

不保存退出:

保存退出:

2.行号的显示和隐藏

|-----------|--------|
| 指令 | 作用 |
| :set nu | 显示行号 |
| :set nonu | 隐藏行号 |

显示行号:

隐藏行号:

3.查找和替换

|--------------|------------------|
| 指令 | 作用 |
| /p1 | 查找p1 |
| :%s/p1/p2/g | 文件中的p2替换p1 |
| :%s/p1/p2/gc | 文件中的p2替换p1,并需要确认 |

在一般模式下,使用"/字符"可以用于在文本中查找指定字符,搜索过程中,使用n向下查找,N向上查找。

示例:

打开文件,光标在第1行,查找Hello时,输入/Hello后按回车,从光标所在位置向下查找到第4行:

此时按下n,会继续向下查找到第5行,继续按n,会继续向下查找。

如上图时按下N,会向上查找到第4行。

使用"hello"替换"Hello",且不需要确认,执行:%s/Hello/hello/g。

使用"world"替换"World",且需要确认,执行:%s/World/world/gc。

此时输入y确认替换,输入n取消替换,输入时不会显示。以下为输入y的结果。

相关推荐
wdfk_prog11 小时前
[Linux]学习笔记系列 -- 底层CPU与体系结构宏
linux·笔记·学习
啊湘11 小时前
VSCODE英文界面切换为中文(适用CURSOR等使用)
ide·vscode·编辑器·bug·cursor
行走的bug...11 小时前
cmake总结
linux·运维·服务器
zfxwasaboy11 小时前
DRM KMS 子系统(3)CRTC
linux·c语言
凌波粒11 小时前
Linux 面试题篇
linux·运维·服务器
Joren的学习记录11 小时前
【Linux运维疑难杂症】k8s集群创建calico网络失败
linux·运维·kubernetes
虾..12 小时前
Linux 线程控制
linux·运维·服务器
镜中人★12 小时前
408操作系统考纲知识点
linux·运维·服务器
liulilittle12 小时前
rinetd 端口转发工具技术原理
linux·服务器·网络·c++·端口·通信·转发
fy zs12 小时前
应用层自定义协议和序列化
linux·网络·c++