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

2023-11-16

嵌入式学习笔记—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替换(在编辑模式下操作)
③删除插入:直接用上述表格的删除命令
④复制粘贴:直接用上述表格的复制命令

写在最后

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式学习笔记---VIM常用操作和命令 的相关文章

  • vim 脚本“input()”函数不需要用户按 Enter 键

    我想让用户调用我的函数 然后让该函数请求用户输入 但我不希望用户在输入 input 函数所需的字母后必须输入 enter 例如 用户应该能够键入 h j k l 等单字母命令 并且键入的每个字母都会在我的函数中循环 直到用户键入 x 退出
  • 在 scapy 中通过物理环回发送数据包

    我最近发现了 Scapy 它看起来很棒 我正在尝试查看 NIC 上物理环回模块 存根上的简单流量 但是 Scapy sniff 没有给出任何结果 我正在做的发送数据包是 payload data 10 snf sniff filter ic
  • 使用 ioctl 在 C++ 中以编程方式添加路由

    我编写了简单的 C 函数 添加了新路线 void addRoute int fd socket PF INET SOCK DGRAM IPPROTO IP struct rtentry route memset route 0 sizeof
  • 如何连接行并添加分隔符?

    命令J连接线 命令gJ连接线删除空格 是否还有连接行的命令 在行之间添加分隔符 Example Input text other text more text text 我想做的事 选择这4行 如果开始和 或 EOL 处有空格 请将其删除
  • 使用 systemctl 获取 systemd 进程的正常运行时间或停机时间?

    喜欢使用systemctl is active
  • 为什么此 NASM 代码会打印我的环境变量?

    本学期我刚刚完成计算机体系结构课程 除其他外 我们一直在涉足 MIPS 汇编并在 MARS 模拟器中运行它 今天 出于好奇 我开始在我的 Ubuntu 机器上摆弄 NASM 基本上只是将教程中的内容拼凑起来 并感受一下 NASM 与 MIP
  • BASH:输入期间按 Ctrl+C 会中断当前终端

    我的 Bash 版本是 GNU bash version 4 3 11 1 release x86 64 pc linux gnu 我有一段这样的代码 while true do echo n Set password read s pas
  • 在 x86 汇编语言中获取文件大小的简单方法

    假设我已经在汇编中打开了一个文件 并且在寄存器 eax 中有该文件的文件句柄 我将如何获取文件的大小 以便为其分配足够的缓冲区空间 我在这里研究了另一个讨论 建议使用sys fstat 28 系统调用来获取文件统计信息但无法实现它 My a
  • vim 中的 python 2 支持

    我正在尝试设置 YouCompleteMe 一个 vim 代码完成插件 当我运行 vim 时 它给我这个错误消息 YouCompleteMe unavailable 需要 python 2 x 我的 ubuntu 机器上安装了正确版本的 p
  • VIM:使用 :normal 命令退出插入模式

    当我使用 normal 命令进入插入模式时 normal i 例如 如何退出插入模式 如果我按 或 VIM 会退出命令模式 并且我无法运行 normal 命令 I put imap
  • awk 在循环中使用时不打印任何内容[重复]

    这个问题在这里已经有答案了 我有一堆使用 file 1 a 1 txt 格式的文件 如下所示 A 1 B 2 C 3 D 4 并使用以下命令添加包含每个文件名称的新列 awk print FILENAME NF t 0 file 1 a 1
  • vmsplice() 和 TCP

    在原来的vmsplice 执行 有人建议 http lwn net Articles 181169 如果您的用户态缓冲区是管道中可容纳的最大页面数的 2 倍 则缓冲区后半部分成功的 vmsplice 将保证内核使用缓冲区的前半部分完成 但事
  • 批量删除文件名中包含 BASH 中特殊字符的子字符串

    我的目录中有一个文件列表 opencv calib3d so2410 so opencv contrib so2410 so opencv core so2410 so opencv features2d so2410 so opencv
  • 在内核代码中查找函数的最佳方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始浏览内核代码 遇到的一件事是如何跟踪函数调用 结构定义等 有没有一种好的方法可以快速跳转到函数定义并退出 我尝试过 Source N
  • 找不到包“gdk-pixbuf-2.0”

    我正在尝试在 Amazon Linux 发行版实例上构建 librsvg 我已经通过 yum 安装了大部分依赖项 其中一些在实例上启用的默认 yum 存储库中不可用 因此必须从头开始构建它们 我已经走了很远 但还停留在最后一点 跑步时sud
  • 如何从 vim 命令行交互运行 vim 脚本?

    有没有办法从以下位置运行这些脚本 命令行只需敲几下键 在过去的几个月里 我构建了一系列充满 vim 命令的文件 为我的项目自动生成样板代码 它让我工作得更快 但是 我知道如何运行这些脚本的唯一方法是将它们分配给 vimrc 我只能重新映射这
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 C 中使用单个消息队列是否可以实现双向通信

    我希望服务器向客户端发送一些消息 并让客户端确认它 我被分配了这个任务 我可以在 C linux 中使用单个消息队列来完成它还是我需要创建两个 谢谢 是的 可以使用 sysV 消息队列来做到这一点 从您之前的问题来看 您正在使用该队列 您可
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • 改变 vim 'gutter' 颜色

    请参阅下面我如何配置 vim 的屏幕截图 gutter 即出现 和 符号的位置 使用 vim 的这个令人惊叹的 sublime text 端口显示我的 git 状态 https github com airblade vim gitgutt

随机推荐

  • 第十一届蓝桥杯——矩阵(应试做法---卡特兰数)

    前言 直接把它当做一道规律题来做 矩阵 问题描述 把 1 2020 放在 2 1010 的矩阵里 要求同一行中右边的比左边大 同一列中下边的比上边的大 一共有多少种方案 答案很大 你只需要给出方案数除以 2020 的余数即可 答案提交 这是
  • [Pyecharts]数据可视化 大屏展示

    Pyecharts 大屏展示 练习 前言 1 条件 2 代码及展示 时间序列曲线图 时间轮播 24小时轮播 1 2 3 拥堵路段词云图 拥堵榜 通畅榜 水球图 标题 交通流量预测可视化大屏 合并 调整 3 总结 前言 参考 pyechart
  • NumPy通用函数、利用NumPy数组进行数据处理

    文章目录 一 NumPy通用函数 1 什么是通用函数 2 常见的一元通用函数如下 3 常见的二元通用函数如下表 二 利用NumPy数组进行数据处理 1 将条件逻辑转为数组运算 2 数组统计运算 3 数组排序 sort 方法没有返回值 4 检
  • Qt信号接收不到

    问题 emit signal 语句执行后 相应的对象控件接收不到信号 方法 创建了多个对象 一个对象发送信号 但是另一个不同的控件接收不到
  • 【团体程序设计天梯赛-练习集】L2-009 抢红包(25分)

    团体程序设计天梯赛 练习集 L2 009 抢红包 25分 题目 题目链接 L2 009 抢红包 25 分 没有人没抢过红包吧 这里给出N个人之间互相发红包 抢红包的记录 请你统计一下他们抢红包的收获 输入格式 输入第一行给出一个正整数N 1
  • Go语言模拟实现简单的区块链

    一 创建项目 按照Go语言最佳实践的思路 在工作空间下的src目录下创建 github com hangzhou huxin blokcchain目录作为我们的项目目录 然后用GoLand工具选中这个项目并打开 二 项目源码 先在项目目录下
  • Android弹簧动画 Rebound实战

    转载请注明出处 http blog csdn net ym4189 article details 77099881 前言 之前需要做一个弹簧效果的动画 网上一看 大家都用Rebound框架 这里简单写一下 rebound是facebook
  • 前端 Leader 如何做好团队规划?阿里内部培训总结公开

    行成于思 毁于随 韩愈 在阿里从一线前端工程师到技术 TL Team Leader 也三年有余了 最重要最难的就是做规划 你可能会遇到如下几个问题 业务压力巨大 前端是瓶颈 如何做合适的规划 如何提高规划的成功率 规划的雷区是什么 如何寻找
  • NUC980开源项目33-自动分配设备号和设备节点

    上面是我的微信和QQ群 欢迎新朋友的加入 本来是为点灯准备的驱动 不过现在还没正常操作IO口 就是分配节点和设备号 驱动代码 include
  • 关于c++的批量注释快捷键使用及调整

    在接触c 编译的时候 想大批量的给一些代码注释 但一行一行注释又显得麻烦 在vs中是支持批量注释的 我用的是vs2013 下面是vs批量注释的方法 两个组合的按键方法 批量注释 Ctrl K Ctrl C 取消注释 Ctrl K Ctrl
  • 企业架构

    一 架构能力建设和架构治理 为确保架构功能在企业中能够被成功运用 企业需要通过建立适当的组织结构 流程 角色 责任和技能来实现其自身的企业架构能力 这正是TOGAF的架构能力框架 Architecture Capability Framew
  • 基于数据驱动的电动车电池数据分析(一)

    基于数据驱动的电动车电池数据分析 一 欢迎关注笔者的微信公众号 笔者过去一年多的时间都在国内一家头部新能源企业实习 主要参与一些数据分析和平台研发的工作 在工作中积累了一些数据分析的经验 其中新能源领域比较多的是一些化工生产 智能制造方面的
  • CMAKE——set()函数及常用变量名

    set 将一个 CMAKE 变量设置为给定值 set
  • PAT乙级 1029旧键盘 python

    题目 思路 将输入与输出逐位对比 将不相等的记录下来即可 代码 input input print input bad key 记录坏掉的键盘 upper 将所有小写字符转为大写 lower 将所有大写转为小写 print position
  • wait notify正确使用方式

    wait notify正确使用方式 假设 当线程 Thread03 在1 100中找出77并输出后 Thread01 输出所有1 100中的奇数 当线程 Thread03 在1 100中找出88并输出后 Thread02 输出所有1 100
  • 使用expect实现scp远程复制文件

    expect安装 yum install y expect expect基本命令了解 spawn 交互程序开始后面跟命令或者指定程序 expect 获取匹配信息匹配成功则执行expect后面的程序动作 send exp send 用于发送指
  • 水仙花数的求解

    话不多说 直接给各位上小菜 package com znzz JavaTest public class FlowerTest 思路 水仙花数 指一个 n gt 3 n位正整数 其每位的数值的n次方之和等于本身 例如 153 1 3 5 3
  • 如何治理 Electron 版本淘宝直播应用崩溃?

    经过几个月的努力 基于Electron框架开发的新版淘宝直播推流软件终于上线了 随之而来的就是线上用户反馈的各种问题 其中最影响用户体验的当属应用崩溃问题了 当应用程序出现未 catch 的异常时就会发生崩溃 本文介绍了客户端应用崩溃的处理
  • UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xd7 in position 2: invalid continuation byte问题

    报错提示如下 self disease wds i strip for i in open self disease path encoding UTF 8 if i strip File C Users luckyli anaconda3
  • 嵌入式学习笔记---VIM常用操作和命令

    嵌入式学习笔记 VIM常用操作和命令 写在前面 这里我使用的开发环境是Windows下的Cygwin软件 如果不想下载虚拟机什么的 用这个日常开发完全够 具体的下载安装教程网上一大把 可以参考其他博主 一些配置文件 1 定义 Cygwin是