嵌入式学习笔记—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替换(在编辑模式下操作)
③删除插入:直接用上述表格的删除命令
④复制粘贴:直接用上述表格的复制命令
写在最后
现在是一名刚刚起步嵌入式的小白,如果大家有疑问或者指正请积极提出,共勉!