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

相关推荐
迷路爸爸1803 小时前
源码编译安装最新 tmux 教程(含 Debian/Ubuntu/CentOS/Arch/macOS 等系统)
linux·ubuntu·macos·centos·debian·tmux·archlinux
励志不掉头发的内向程序员3 小时前
【Linux系列】掌控 Linux 的脉搏:深入理解进程控制
linux·运维·服务器·开发语言·学习
東雪蓮☆3 小时前
K8s Ingress 详解与部署实战
linux·运维·kubernetes
望获linux3 小时前
【实时Linux实战系列】实时 Linux 在边缘计算网关中的应用
java·linux·服务器·前端·数据库·操作系统
聆风吟º4 小时前
无需 VNC / 公网 IP!用 Docker-Webtop+cpolar,在手机浏览器远程操控 Linux
linux·运维·docker
deng-c-f4 小时前
Linux C/C++ 学习日记(22):Reactor模式(二):实现简易的webserver(响应http请求)
linux·c语言·网络编程·reactor·http_server
BTU_YC4 小时前
CentOS 7 虚拟IP配置指南:使用传统network-scripts实现高可用
linux·tcp/ip·centos
陌路204 小时前
LINUX14 进程间的通信 - 管道
linux·网络
大聪明-PLUS5 小时前
从头开始为 ARM 创建 Ubuntu 映像
linux·嵌入式·arm·smarc