如dd、>>,gu例外,使用guu,全部小写 三、插入模式 A.在插入模式中可即时更正错误 1.c+h删除前一个字符,c+w删除前一个单词,c+u删除至行首 B.返回普通模式 1.esc、c+[切换到普通模式...:set path设置目录 十、复制与粘贴 A.深入理解Vim寄存器 1.可以使用”{register}来指定寄存器名 2.黑洞寄存大贵,用下划线”_ B.用寄存器中的内容替换高亮选区的文本 1.在可视模式下使用...p命令时,Vim将用我们指定的寄存器内容来替换高亮选区中的文本 十一、宏 A.宏的读取与执行 1.q{register}录制及结束 2.reg {register}可以查看宏 3.使用@{register...}执行指定宏的内容,也可以使用@@来重复最近调用过的宏 B.规范光标位置、直达目标以及中止宏 1.在录制一个宏时,要确保每条命令都可被重复执行 2.规范光标的位置、用可重复的动作命令直达目标、当动作命令失败时...{number}@q D.给宏追加命令 1.使用qA,大写的{register}即可追加 十二、按模式匹配及按原义匹配 A.调整查找模式的大小写敏感性 1.使用元字符\c和\C,可以覆盖Vim缺省的大小写敏感设置
缓冲区编号或者文件名 切换到指定的缓冲区文件处 :bd/:bd3 删除当前的缓冲区/指定缓冲区窗口 “byw 将当前光标到单词结尾处的内容放入寄存器”b中(无”b则放入匿名寄存器””中) “bdw 将当前光标处到单词结尾的内容剪切到寄存器...”b中 “bp 将”b中的内容粘贴 “1p/”2p/”3p 将自动存放的历史删除内容分别粘贴出来,其中”1,”2,”3为寄存器 ctrl +n/p 代码补全,向下查找/向上查找 ctrl+x+i 使用当前工程文件的中的参数进行补全...\X 一个非十六进制数 \D 一个非数字 \W 一个非字母 \S 一个非空白字符 A\|B 匹配A或B \(X\) \(A\|B\)C 将X作为一个组 匹配AC或BC * 重复前一个字符0到多次 \+...到文件最后一行行首,G必须为大写 :n 到指定行,n为目标行数 [n]G 到指定行,n为目标行数 行内定位 按键 功能 w/W 后移一个字(狭义)/后移一个字(广义) b/e,B/E 光标移动到当前字首...:args :argdo cmd 匹配跨文件操作文件 查看跨文件操作文件 执行跨文件操作文件内容的命令cmd qx @x qxq 录制宏到x寄存器中 播放x中录制的宏 清空寄存器x中的内容 :set
: :qx 开始记录宏,并将结果存入寄存器x q 退出记录模式 @x 播放记录在x寄存器中的宏命令 稍微解释一下,当在normal模式下输入:qx后,你对文本的所有编辑动作将会被记录下来...+,所以从系统粘贴板粘贴到vim中的命令为"+p,注意此处的+不表示操作符,二十一个寄存器。...h,j,k,l 左,下,上,右 ctrl-f 上翻一页 ctrl-b 下翻一页 % 跳到与当前括号匹配的括号处,如当前在{,则跳转到与之匹配的}处 w 跳到下一个字首...,按标点或单词分割 W 跳到下一个字首,长跳,如end-of-line被认为是一个字 e 跳到下一个字尾 E 跳到下一个字尾,长跳 b 跳到上一个字 B 跳到上一个字...选中{}中的内容,不含{} 对标记进行动作 > 块右移 < 块左移 y 复制块 d 删除块 ~ 切换块中内容的大小写
高级一些的编辑器,都会包含宏功能,vim当然不能缺少了,在vim中使用宏是非常方便的: :qx 开始记录宏,并将结果存入寄存器x q 退出记录模式 @x 播放记录在x寄存器中的宏命令...+,所以从系统粘贴板粘贴到vim中的命令为”+p,注意此处的+不表示操作符,二十一个寄存器。...h,j,k,l 上,下,左,右 ctrl-f 上翻一页 ctrl-b 下翻一页 % 跳到与当前括号匹配的括号处,如当前在{,则跳转到与之匹配的}处 w 跳到下一个字首...,按标点或单词分割 W 跳到下一个字首,长跳,如end-of-line被认为是一个字 e 跳到下一个字尾 E 跳到下一个字尾,长跳 b 跳到上一个字 B 跳到上一个字...选中{}中的内容,不含{} 对标记进行动作 > 块右移 < 块左移 y 复制块 d 删除块 ~ 切换块中内容的大小写 发布者:全栈程序员栈长,转载请注明出处
:delmarks a b -- 删除标记a和b。 :delmarks a-c -- 删除标记a、b和c。 :delmarks a c-f -- 删除标记a、c、d、e、f。...5.3 寄存器 a-z:都可以用作寄存器名。"ayy把当前行的内容放入a寄存器。 A-Z:用大写字母索引寄存器,可以在寄存器中追加内容。 如"Ayy把当前行的内容追加到a寄存器中。...如:%s/old/new/gc,加上i则忽略大小写(ignore)。...:tabe, tabnew -- 如果加文件名,就在新的标签中打开这个文件, 否则打开一个空缓冲区。 ^w gf -- 在新的标签页里打开光标下路径指定的文件。...gu(U)接范围(如$,或G),可以把从光标当前位置到指定位置之间字母全部 转换成小写或大写。如ggguG,就是把开头到最后一行之间的字母全部变为小 写。
无名寄存器 vim里操作的是寄存器,不是系统剪贴板,默认我们使用d删除或者y复制的内容都是放到了“无名寄存器”。...深入寄存器(register) 通过"{register}前缀可以指定寄存器,不指定默认无名寄存器 "ayy: 表示复制当前行到a寄存器,然后"ap,可以把寄存器a的内容粘贴到指定位置 "bdd: 表示删除当前行到...b寄存器,然后"bp,可以把寄存器b的内容粘贴到指定位置 "+: 表示复制到系统剪贴板,需要查看vim是否支持,通过:echo has('clipboard')查看,输出1表明支持;然后去到其它文本就可以...normal模式下使用q来录制,同时也是使用q来结束录制 使用q{register}选择要保存的寄存器,录制的命令保存在寄存器,然后q结束录制 使用@{register}进行宏回放 例子:需要在如下文本...直接保存 inoremap w :w noremap w :w " 切换buffer nnoremap [b :bprevious nnoremap [n :bnext " use ctrl+h/
" Move half page faster " (上下翻页) nnoremap d d> nnoremap u " 快速进入vim模式...normal模式下 qr 带表给r标记宏 然后vim操作。...如:%s/old/new/gc,加上i则忽略大小写(ignore)。..." 于range的规定为: " 果不指定range,则表示当前行。 " ,n: 从m行到n行。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
在gdb中表示寄存器名时前面要加个$,例如p $esp可以打印esp寄存器的值,如esp寄存器的值是0xbff1c3f4,所以x/20 $esp命令查看内存中从0xbff1c3f4地址开始的20个32位数...5. p 命令内存输出格式: • d: ⼗十进制 • u: ⼗十进制⽆无符号 • x: ⼗十六进制 • o: ⼋八进制 • t: ⼆二进制 • c: 字符 如 p/x var 6. set...删除断点可以使用 clear和d(delete的简写) clear删除断点, 使用方法和b命令类似 d [breakpoints] breakpoints 为设置的断点的标号 10. ...• u: 内存单位 (b: 1字节; h: 2字节; w: 4字节; g: 8字节)。...x/8w 0x0804843b # 按四字节(w)显示 8组内存数据 x/8i 0x0804843b # 显示8 行汇编指令 13.
- 移动到下个单词开头 W - 移动到下个单词开头(单词含标点) e - 移动到下个单词结尾 E - 移动到下个单词结尾(单词含标点) b - 移动到上个单词开头 B - 移动到上个单词开头(单词含标点...和 B 可视化模式命令 > - 向右缩进 < - 向左缩进 y - 复制 d - 剪切 ~ - 大小写切换 u - 将选中文本转换为小写 U - 将选中文本转换为大写 剪切, 复制, 粘贴 yy...(例如 :tabdo q 关闭所有标签) 寄存器 :reg[isters] - 显示寄存器内容 "xy - 复制内容到寄存器 x "xp - 粘贴寄存器 x 中的内容 "+y - 复制内容到系统剪贴板寄存器..."+p - 粘贴系统剪贴板寄存器的内容 注:寄存器被存储在 ~/.viminfo 中, 在下次重启vim时仍会加载 特殊寄存器 0 - 上次复制 " - 未命名寄存器,上次复制或删除 % -...使用单引号会跳转至该标记所在行行首(首个非空白字符) 宏 qa - 录制宏 a q - 停止录制宏 @a - 执行宏 a @@ - 重新执行上次执行的宏 Diff zf - 定义折叠修饰符 zd -
ab:一块(包含在圆括号中的)。 y, d, c, v都可以跟文本对象。 6.3 寄存器 a-z:都可以用作寄存器名。”ayy把当前行的内容放入a寄存器。...A-Z:用大写字母索引寄存器,可以在寄存器中追加内容。 如”Ayy把当前行的内容追加到a寄存器中。 :reg 显示所有寄存器的内容。 “”:不加寄存器索引时,默认使用的寄存器。...如:%s/old/new/gc,加上i则忽略大小写(ignore)。...gu(U)接范围(如$,或G),可以把从光标当前位置到指定位置之间字母全部 转换成小写或大写。如ggguG,就是把开头到最后一行之间的字母全部变为小 写。...C-x C-d – 补全宏定义。 C-x C-n – 按缓冲区中出现过的关键字补全。 直接按C-n或C-p即可。
宏定义 `define 用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为: `define 标识符(宏名) 字符串(宏内容) 如:`define signal string 它的作用是指定用标识符...如例1中,先定义WORDSIZE代表常量8,这时寄存器data是一个8位的寄存器。如果需要改变寄存器的大小,只需把该命令行改为:`define WORDSIZE 16。...如: 例2: module test; reg a, b, c, d, e, out; `define expression a+b+c+d; assign out =...这样经过取整操作,存在参数d中的延迟时间实际是16ns(即1.6×10ns),这意味着在仿真时刻为16ns时寄存器set被赋值0,在仿真时刻为32ns时寄存器set被赋值1。...3) EDA工具预定在仿真时刻为16ns的时候给寄存器set赋值0 (即语句 #d set=0;执行时刻),在仿真时刻为32ns的时候给 寄存器set赋值1(即语句 #d set=1;执行时刻), 注意
b)在Windows下,寄存器 + 和 * 都代表系统剪贴板,可以互换使用,选一个顺手的即可。例如”+yy命令组合可将当前行复制到系统剪贴板。ci”*命令组合则将系统剪贴板的内容替换字符串的内部文本。...(在Vim中,复制内容与录制宏共享同一套寄存器,因此我习惯把字母寄存器留给宏使用)d) 普通模式下小写p把寄存器内容复制到当前位置之后,大写P把寄存器内容复制到当前位置之前。...按在普通模式下 q 即可开始把后续按键序列录制到指定寄存器中(寄存器参考前面第7条)。录制完毕进入普通模式再按q键即可停止录制。之后用 @ 即可重放。...一些在目前版本已知没有实现的一些常用Vim功能(如果对Vim不熟悉可以跳过这节)a)let命令 (没有let命令就无法导出/导入寄存器内容,也就是无法导入宏)b):g命令 (在文本处理中很有用的一个命令...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
b)在Windows下,寄存器 + 和 * 都代表系统剪贴板,可以互换使用,选一个顺手的即可。 例如 “+yy 命令组合可将当前行复制到系统剪贴板。...(在Vim中,复制内容与录制宏共享同一套寄存器,因此我习惯把字母寄存器留给宏使用) d) 普通模式下小写p把寄存器内容复制到当前位置之后,大写P把寄存器内容复制到当前位置之前。...e) 使用 :regs 命令可以列出当前所有寄存器的内容 8.一些插入模式下的常用快捷键 Ctrl+h - 删除光标左边字符 Ctrl+w - 删除光标左边的单词 Ctrl+y - 复制上方的一个字符...按在普通模式下 q寄存器名称> 即可开始把后续按键序列录制到指定寄存器中(寄存器参考前面第7条)。录制完毕进入普通模式再按q键即可停止录制。 之后用 @寄存器名称> 即可重放。...一些在目前版本已知没有实现的一些常用Vim功能 (如果对Vim不熟悉可以跳过这节) a)let命令 (没有let命令就无法导出/导入寄存器内容,也就是无法导入宏) b):g命令 (在文本处理中很有用的一个命令
using m用于选择不同的工作寄存器组。m的取值范围为0~3,分别对应与低128字节内部RAM区中的四组寄存器。 该项为可选项。...如果在中断函数中调用了其它函数,则被调用函数所使用的寄存器组必须与中断函数相同。否则会产生不正确的结果。...如中断函数加using m修饰符,则在开始将PSW入栈后还要修改PSW中的工作寄存器组选择位。...包含了这个头文件后,就可以在程序中使用这些特殊功能寄存器及其位, P0 = 0x01; :该文件中定义了几个宏,以确定各存储空间的绝对地址。...算术运算符及其规则 C51最基本的算术运算符有五种: A、 + B、 - C、 * D、 / E、 % 2.
如果没有指定scale 而指定了index,则scale 的缺省值为1。...“l”表示长整数(32 位),“w”表示字(16 位),“b”表示字节(8 位)。...数字前加前缀“%“,如%1,%2 等表示使用寄存器的样板操作数。可以使用的操作数总数取决于具体CPU 中通用寄存器的数量,如Intel 可以有8 个。...,第2 个宏是恢复标志寄存器的值。...第1 个宏中的pushfl指令是把标志寄存器的值压栈。而popl 是把栈顶的值(刚压入栈的flags)弹出到x 变量中,这个变量可以存放在一个寄存器或内存中。这样,你可以很容易地读懂第2 个宏。
; } data d1 = { a:2 }; data * dp1 = &d1; d1.a = 3; dp1->a = 5; (*dp1).a = 6; 宏定义与内联函数 c++中可以在文件头使用...b){ return a+b; } 因为宏定义会对文本替换,一般用于定义常量等,为了避免重复宏定义,c++提供了#ifndef(if not define缩写)命令来判断当前是否进行了某个名称的宏定义...,可以根据结果进行处理 如: #ifndef eetal //code #endif 同时还有用于判断宏定义的#if #define a 5 #if a>5 ......(int &a,int &b); 此时调用如 int a,b; swap01(a,b); //普通调用,先匹配显示声明 double c,d; swap01(c,d); //显示声明不匹配类型...const限制的成员,比如 const struct data{ int a = 1; mutable int b = 0; } data * d = new data(); d->b
这一章节其实就是来更加深入的认识和理解汇编代码 现在我们更多接触的都是一些高级语言,如JAVA,GO,Python,其实用这些语言的时候,更大程度上,已经屏蔽了一些程序的细节,即机器级的实现。...,了解不同线程是如何共享程序数据或保持数据私有的,以及准确知道如何在哪里访问共享数据,这些在机器代码都是可见的 二、历史 Inter的处理器系统俗称x86,第一代处理器是8086,一个单芯片,16位微处理器...GCC命令调用了一整套的程序,将源代码转换为可执行代码: C预处理器扩展源代码,插入所有用#include 命令指定的文件,并扩展所有用#define声明制定的宏。...反汇编器使用指令命令规则与GCC生成的汇编代码使用的有些区别,在上面的示例中,它省略了很多指令结尾的q,这些后缀是大小指示符,可以省略 四、数据格式 由于是从16位体系结构扩展成32位的,字(word...b,w,l,q分别是1、2、4和8字节 ? 源操作数指定的值是一个立即数,存储在寄存器中或者内存中,目的操作数指定一个位置,要么是一个内存地址。
实际上,数据类型可以理解为固定大小内存块的别名,给变量指定类型就是告诉编译器给该变量分配多大的内存空间,而变量相当于是内存块的门牌号。...65 A 97 a 2 STX 34 " 66 B 98 b 3 ETX 35 # 67 C 99 c 4 EOT 36 $ 68 D 100 d 5 ENQ 37 % 69 E 101 e 6 ACK...我们知道,定义数组时要指定数组大小,以便于编译器分配内存。在C语言中编译不通过也就证明了const定义的依然是变量,而不是常量。...//此时为VAL分配内存,后面不再分配内存 int b = NUM; //预编译期间进行宏替换,分配内存 int c = VAL; //不会分配内存 int d = NUM; //宏替换,还会分配内存...这时候,虽然我们程序中并没有去修改寄存器的值,但是寄存器值却因为外界因素而发生了改变。
data-address:i2c寄存器地址 value 要写入的值 mode:指定读取的大小,b字节,w字,s是SMBus块,i是i2c块 设置i2c-1上0x20器件的0x77...mode:指定读取的大小,b字节,w字,s是SMBus块,i是i2c块 读取i2c-1上0x20器件的0x77寄存器值 ....) c (consecutive byte) Append p for SMBus PEC r:指定寄存器范围,只能扫描从 first 到 last 区域 f:...强制访问设备 y:关闭人机交互模式 i2cbus:总线编号 address:指定设备地址 mode:指定读取的大小,b字节,w字,s是SMBus块,i是i2c块 读取i2c1...备注: i2c-tools 是通过操作 /dev 路径 i2c-× 设备文件完成,因此你的 kernel 必须开启 CONFIG_I2C_CHARDEV 宏控,否者会报找不到节点。
怎么能够知道程序执行的每一步计算机各个寄存器中的数据是否如我们预期呢? 别急,本节我们就来详细解答。 2....datasize 大小的值设置到变量 val 中 writemem — 内存转储 crc addr1 addr2 — 显示物理内存范围 addr1 到 addr2 的 CRC32 4.4.1....参数取值 上述操作中,参数 /nuf 是可选的,其中 n 表示显示多少个单位,默认为 1,u 表示单位大小,默认为字节,f 表示打印格式,默认为16进制方式打印。 4.4.2....单位大小取值 u 可以取值: b — 字节单位 h — 半字单位(2 字节) w — 字单位(4 字节) g — 巨字单位(8 字节) 4.4.3....,如果没有差异,则显示 - dump D [range] [length] dump 内存范围,如 d c000:0010 enter E address [list] 将数据或指令(作为机器代码)直接输入到内存位置
领取专属 10元无门槛券
手把手带您无忧上云