飞凌嵌入式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的结果。

相关推荐
邪修king6 分钟前
Re:Linux 系统篇(十五):进程篇(四):进程切换深度解析 —— CPU 寄存器、进程上下文与切换全流程万字详解
linux·运维·服务器
高亦真34 分钟前
今天是学习嵌入式的第33天
linux·学习·算法
cuijiecheng201844 分钟前
Rocky Linux 安装 libltc、ltc-tools 和 ltcdump
linux
BlueAsia_Lab44 分钟前
BQB 认证执行标准是什么?核心条款通俗解读
linux·运维·网络
小小、码农1 小时前
【网络】套接字(Socket)编程——TCP版
linux·服务器·网络·c++·网络协议·tcp/ip
邪修king1 小时前
Re:Linux 系统篇(十六):进程篇(五):O (1) 调度算法深度解析 —— 优先级数组、位图优化与活跃 / 过期双队列
linux·运维·算法
苏三福1 小时前
ubuntu 在文件管理系统中用sftp打开远程文件空白的问题解决
linux·运维·ubuntu
邪修king1 小时前
Re:Linux 系统篇(十四):进程篇(三):进程退出与特殊进程 —— 僵尸 Z 状态、孤儿进程深度解析
linux·运维·服务器
lingran__1 小时前
Git 完全指南(一):本地仓库基础操作
linux·git·开发工具·devops·版本控制
snow@li1 小时前
服务器运维:Alibaba Cloud Linux 4 LTS・Vue前端 Java 后端 K3S 部署 CICD 目录规范清单
linux·前端·vue.js