嵌入式学习笔记—VIM常用操作和命令

写在前面

这里我使用的开发环境是Windows下的Cygwin软件,如果不想下载虚拟机什么的,用这个日常开发完全够,具体的下载安装教程网上一大把,可以参考其他博主。

一些配置文件

1. 定义:

Cygwin是一个运行在Windows下的仿真Linux的软件

2. .bashrc

可以理解为bash run configuration(运行配置),位于home目录下(~/.bashrc),里面可以保存一些个性化设置,比如别名(alias),路径等。
具体操作:vim ~/.bashrc
个性化指令:alias ll=“ls -lha”(注意:设置别名的时候=左右不要有空格哦!)
设定环境路径:PATH=$PATH:路径
export PATH
提示符设置:PS1=“[\u: \w] $”

3. .bash_profile

常用于配置环境变量和用户一些自定义别名等,只表示当前用户的设置

4. .vimrc

VIM的配置文件,可以根据自己的习惯进行配置
系统vim配置文件/etc/vimrc
用户vim配置文件~/.vimrc
优先级:用户>系统

5.alias

别名,简化复杂的命令,例如alias la=‘ls -A’
检查是否是别名:which la
删除别名:unalias la

6.grep

主要用于查找文件中符合条件的字符串,统计相对应的行和行数
常用的参数:

参数选项 解释说明
-v(–invert-match) 排除符合的结果,显示其余部分
-n(–line-number) 显示符合的行和行号
-i(–ignore-case) 不区分大小写
-c(–count) 只统计符合的行数
-E(–extended-regexp) 使用egrep命令
–color = auto 为grep过滤结果添加颜色
-w(–word-regexp) 只匹配符合条件的单词
-o(–only-matching) 只输出符合条件的内容

补充知识

①在Linux平台下, 所有文件的结尾都有一个$符,cat -A可以查看、

②一些符号和含义

符号 含义
^ 表示开始
$ 表示结束
. 表示任意一个字符,有且只有一个,不包括空行
& 代表匹配的内容
* 表示找出前一个字符0次或一次以上
1~2 表示从第一行开始,每隔两行进行相应操作
1,2 表示对1到2行进行操作
! 表示取反

以上标识可以任意组合,比如:
^$ 表示空行;
.* 表示所以内容,包括空行
^.t 表示以任意内容开头, 直到t结束
(,.
)表示逗号后的所在内容

③[ ]表示匹配中括号中任意一个字符, 字符之间是或的关系,只要满足其中一个字符就行。

7.sed

sed遍历文件内容,读到符合条件的行就根据相应指令做操作,不符合条件就跳过。

命令 含义
a(追加append) 在符合条件的后面插入内容
i(插入insert) 在符合条件的前面插入内容
c(更改change) 更改匹配行的内容
d(删除delete) 删除匹配的内容
s(替换substitute) 替换掉匹配的内容
p(打印print) 打印出匹配的内容,通常与-n选项和用
= 用来打印被匹配的行的行号
n(nextline) 读取下一行,遇到n时会自动跳入下一行
r(read),w(write) 读和写编辑命令

操作之间用分号隔开,比如:

sed 's/^#.*//;/^$/d' main.c

表示 先替换main.c文件中所有注释的空行为空行,然后删除空行

举例说明:
①追加 ------a

sed -i '3ahello' main.c

表示向第三行后面添加hello,-i是保存,不加的话就是预览模式

sed -i '/22/achina' main.c

表示批量添加,向内容22后面添加china,如果文件中有多行包 括22,则每一行后面都会添加

②插入 ------i

sed '3igood' main.c 

表示在第三行之前插入good

sed '/china/inice' main.c 

表示在包含china之前的行插入数据,如果含多个,则都会插入

③更改 ------c

sed '7cworld' main.c  

表示将第7行的替换为world

sed '/22/cgoto' main.c    

表示将包含22的全部替换为goto

④删除 ------d

sed '7d' main.c    

表示删除第7行的数据

sed '/china/,$d' main.c   

表示删除从匹配到china的行到最后一行

sed '1,5{/china/d}' main.c  

表示删除1~5行中,匹配内容china的行

⑤替换 ------s

sed 's/love/爱/' main.c  

表示将love替换成爱,默认只替换每行第一个love

sed 's/love/爱/g' main.c  

表示g可将所有love替换成爱

sed 's/love/爱/2' main.c  

表示2可将每行第二个匹配到的love替换成爱

⑥打印 ------p

sed -n '4p' main.c   	  

表示打印文件中的第4行内容

sed -n '/love/p' main.c    

表示逐行读取文件,打印匹配love的行

⑦行号 ------=

sed -n "$=" main.c      

表示打印文件最后一行的行号

sed -n '/error/=' main.c  

表示打印匹配error的行的行号

⑧读取 ------r

sed 'r 2.txt' 1.txt   

表示将文件2.txt中的内容,读入1.txt中,会在1.txt中的每一行后都读入2.txt 的内容

sed '3r 2.txt' 1.txt   

表示在1.txt第三行之后插入文件2.txt的内容

⑨写入 ------w

sed -n 'w 2.txt' 1.txt  

表示将1.txt文件的内容写入2.txt文件,如果2.txt文件不存在 则创建,如果2.txt存在则覆盖之前的内容

熟悉VIM常用命令,快捷键,操作

1.VIM常用命令
①插入命令:在命令模式下输入i a o 三个其中一个字母即可进入编辑模式

以下命令都是在命令模式下面操作,如果在编辑模式下,按Esc键即可退出,切换到命令模式。

②定位命令:

命令 作用
:set nu 设置行号
:set nonu 取消行号
gg 到第一行
G 到最后一行
nG 或 :n 到第n行
$ 移至行尾 (我一般用键盘上面的End键)
0 移至行首 (我一般用键盘上面的Home键)

③删除命令:

命令 作用
x 删除光标所在的字符
nx 删除光标所在处后n个字符
dd 删除光标所在行,ndd删除n行
dG 删除光标所在行到文件末尾的内容
D 删除光标所在处到行尾的内容
:n1,n2d 删除指定范围的行

④复制和剪切命令:

命令 作用
yy 复制当前行
nyy 复制当前行以下n行
dd 剪切当前行(这个和删除不冲突,实测确实可以剪切)
ndd 剪切当前行以下n行
P或者p 粘贴在当前光标下

⑤保存和退出命令:

命令 作用
:w 保存修改
:w new_filename 另寻为指定文件
:wq 保存修改并退出
ZZ 快捷键,保存修改并退出
:q! 不保存修改退出
:wq! 保存修改并退出(文件所有者及root可使用)

2.VIM操作
①查找:

快捷键 功能
/abc 从光标所在位置向前查找字符串abc
/^abc 查找以abc为行首的行
/abc$ 查找以abc为行尾的行
?abc 从光标所在为主向后查找字符串 abc
n 向同一方向重复上次的查找指令
N 向相反方向重复上次的查找指令

②替换:
r:替换光标所在位置的字符
R:从光标所在位置开始替换字符,其输入内容会覆盖掉后面等长的文本内容,按 “Esc”可以结束
:s/a1/a2/g:将当前光标所在行中的所有a1用a2替换(在编辑模式下操作)
③删除插入:直接用上述表格的删除命令
④复制粘贴:直接用上述表格的复制命令

写在最后

现在是一名刚刚起步嵌入式的小白,如果大家有疑问或者指正请积极提出,共勉!

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐