摘要:在命令模式下,即可进入该模式。其后缀名一般为。本质就是将相关库中的代码,拷贝到自己的可执行程序里,不依赖三方库独立运行。动态库一般后缀名为在编译时默认使用动态库。
我们先来一张vim的高清cheatsheet感受一下
vim是多模式编辑器,兼容性好,因为可以在x window、mac os、windows上皆可运行,用熟了vim是很有必要的,现在仍然还有很多公司都是在vim环境下编写和测试代码,因为大批量换新机成本太高了。
这几种模式可以相互切换,但是注意 插入模式和低行模式之间是不能直接切换的 ,需要按「Esc」回到命令模式后再切换到底行模式
插入模式和低行模式之间是不能直接切换的
顾名思义,只有在插入模式下才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入insert mode下,或者到last line mode
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。
要查看你的所有模式:打开vim,底行模式直接输入 help vim-modes 这里一共有12种模式
help vim-modes
由于历史原因以前的设计是根据电报键盘设计的,而那时候的电报键盘是没有上下左右按键的,我们在vim中分别用HJKL来代替左,下,上,右
光标的首位锚点:
shift + ^ , 指向此行的最前面 shift + $ , 指向此行的最后面
shift + g , 直接切换到最后一行 快速按 gg,直接切换到最上面一行
(give a num you wanna swap) + shirt + g ,切换到任意行
yy , 复制一行 数字 + yy ,从此行开始向下复制n行
p,粘贴之前复制的一行 数字 + p,粘贴n次
比如复制前两行,并粘贴1000次,shift + g去到页底查看
数字 + dd,支持n行剪切或删除 我们2000 + dd,既可删除2000行
shirt + ~ ,切换大写/小写
我们如果想删除当前光标后面的内容用 x , num+x 删除n个字符 反响删除用 shift + x
x
num+x
shift + x
命令模式下,用 u 撤回 那如何想撤回刚才的撤回呢? answer: ctrl + r
u
ctrl + r
总结一下command下的模式:
a :光标向后移动一个字符 i :当前字符进行插入 o : 新起一行
%s/old/new/g,将所有old关键字换成new,g代表全部替换
! ,可以切到terminal界面,便于查看 !man 3 printf,不退出情况下查看printf的使用方法 ./test ,不退出的情况下执行程序
?, 对关键词进行搜索,如下图搜索new关键字
在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效 vim .vimrc 在里面可设置: 语法高亮 syntax on 显示行号: set nu 设置缩进的空格数为4: set shiftwidth=4
函数库一般分为静态库和动态库
静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a”。 (本质就是将相关库中的代码,拷贝到自己的可执行程序里,不依赖三方库独立运行。动态往往体积比较小,但是也有弊端,就是依赖第三方库)
动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时 链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”, gcc 在编译时默认使用动态库。
gcc默认生成的二进制程序,是动态链接 ,这点可以通过file命令验证
gcc默认生成的二进制程序,是动态链接
下图我们可以看到此test可执行程序为动态库
程序的发布分两种,debug模式和release模式,一般Linux gcc/g++出来的二进制程序默认是release模式,如果要使用gdb调试,就必须在源代码生成二进制程式时,加上 -g 选项,如
-g
gcc test.c -o test -g
可以通过 readelf 读取可执行信息
readelf
list + 行号,显示test源码,每次列10行 list + 函数名,列出某个函数源代码 b + 9,给第九行打断点 info b,查看断点信息 delete breakpoints + num:删除第n个断点 r或者run,debug开始调试 单步执行,回车或者按 n s或者step,进入函数调用 print(variable name):打印表达式的值,通过表达式可以修改变量的值或者调用函数 查看当前信息 :p + variable name 取地址信息: p + &(variable name) display + 变量名,等于插个眼,当变量发生改变会显示出来 undisplay:取消对先前设置的那些变量的跟踪 c,直接跳到下个断点处 d + 对应的断点号进行删除 bt,查看调用的堆栈 finish,只接把当前的函数跑完并返回 until X行号:跳至X行 quit:退出gdb
n
创作不易,如果文章对你帮助的话,点赞三连哦:)
阅读 3176 · 2021-11-25 09:43
阅读 3314 · 2021-11-24 09:39
阅读 541 · 2021-09-03 10:42
阅读 1188 · 2019-08-30 15:56
阅读 1173 · 2019-08-29 17:27
阅读 676 · 2019-08-29 15:25
阅读 433 · 2019-08-27 11:04
阅读 2833 · 2019-08-26 18:27