前文回顾:【Linux】基础开发工具(1):软件包管理器&&vim编辑器
目录
一 vim编辑器使用补充
1大小写切换
shift+· = ~:大小写切换
2 替换模式
我们上一次学习了三个模式,分别是:命令模式,插入模式,底行模式。今天学习一种新的模式:替换模式。
数字(n)+r:对光标所在的字符进行替换 如果只按r就只替换一个字符
shift + r = R :让vim进入替换模式,当前行光标之后的内容当作没有直接覆盖 输入的新字符会直接覆盖光标位置的旧字符
从从替换模式到命令模式,只需要按Esc就可以,但是现在没有直接的方法使替换模式到插入模式和底行模式。
3 视图模式
视图模式适用于批量化注释或去注释
ctrl + v = 视图模式(由命令模式进入)
可以使用我们上一篇讲的光标的移动去选择区域(hjkl)
shift + i = l :进入插入(例如此时需要插入// ,那么就先打一个//,之后再按Esc那么每一行就都会出现//)
用hjkl进行区域选择,按d即可删除区域
4 底行模式补充
底行模式的本质也是命令的一种
shift+ ; = : 进入底行模式
w:保存
q:退出
!:强制(可以组合使用 w! 表示强制保存)
set nu或 set nonu:调出行号
:! command
bash中执行的命令都可以在底行中执行
这里的command表示的是命令名称,假如说你在底行模式中使用一个命令的时候,想查看一下它的命令手册,那么可以直接在底行中调用该命令查看命令手册,就不需要退出底行模式再查看
vs XXX.x 分屏对比文件
有两个文件需要对比的时候,可以使用该命令来分屏 注意:光标在哪个区域就在哪个区域输入文字
yy复制,p粘贴
ctrl+www : 让光标在多屏之间切换,光标在哪一个屏幕,你就在编辑哪一个文件
:/要搜索的关键词 ---->高亮匹配项目,依次查看匹配项
当我们需要找到某个关键词或字符时,就可以使用这个指令
:%s/被替换/新内容/g ---->用新内容替换指定的项目
当我们需要把一个单词中的字符替换时,总不能一个一个替换,所以可以用这个指令一次性替换
底行中,如果你打开了一个不存在的文件,没有编辑直接退出,该文件不会被创建,但是如果你w保存了,vim会自动给你新建文件
5 两个使用技巧
1 定位到第n行
当我们退出vim中时,光标所在的位置默认就是退出vim所在的那一行
vim code.c +5
vim编辑器的一种启动方式,作用是直接打开code.c文件并定位到第 5 行。
2 重复上一次的命令

如上所示:
它的作用是重复执行上一次以 “v” 开头的命令。
在 Linux 的命令行环境中,! 是用于调用历史命令的特殊符号
6 解决问题
1. vim 异常退出问题
- 现象:vim 异常退出后会生成
.code.c.swp交换文件。
当我们再次打开vim就会出现:

当我们用ls-al查看隐藏文件时,就可以看到这个文件
- 解决:可通过
rm .code.c.swp删除该交换文件,之后即可正常编辑code.c文件。
2. 用户 sudo 权限问题
当我们是普通用户时,是无法进行sudo时,因为普通用户没有添加到白名单中

- 现象:用户
zs_118执行sudo命令时,提示 “is not in the sudoers file. This incident will be reported.”,说明该用户不在sudo授权列表中。 - 解决:
- 切换到 root 用户(如
su root,输入 root 密码)。 - 编辑
sudoers文件:visudo(或vim /etc/sudoers)。
- 切换到 root 用户(如
当我们使用vim/ect/sudodur指令,用户的名字添加到里面即可,此时系统不会让我们添加,我们直接强制添加w!即可
-
- 在文件中添加一行:
zs_118 ALL=(ALL) ALL,保存退出后,该用户即可获得sudo权限。
- 在文件中添加一行:
7 vim总结

vim 是 Linux 中强大的文本编辑器,需通过配置(如.vimrc文件)才能充分发挥其功能。
配置文件(.vimrc)
vim很挫啊!原始的vim需要经过配置拆了嗯更好的使用。
刚刚创建的用户,是没有配置vim,此时就不会出现 .vimrc的文件,所以我们就手动创建一个.vimrc的文件
- 位置:位于当前用户的
/home/XX/目录下(如示例中/home/zs/.vimrc)。- 作用:存储 vim 的个性化配置项,仅对当前用户生效,是单用户配置的最佳实践。
常见配置项示例

可以借助AI生成vim的基本配置命令清单

如何一键化设置好vim呢?
在Centos系统有相关链接:
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
但是一定要在普通用户路径虚啊安装
二 编译器
gcc 是 C 语言编译器,g++ 是 C++ 编译器(本质上 G++ 也能编译 C 代码,相当于将C代码转变为C++代码去进行编译,但习惯上 C 用gcc,C++ 用 g++)
编译的本质:将源文件翻译成可执行二进制文件
1 翻译的过程(重点放在编译选项上)
a 预处理
我们先在code.c中写入代码,文件包含头文件,宏,注释

如果一次性将整个代码编译完,是看不到翻译过程的

预处理指令:gcc -E code.c -o code.i:将翻译过程放到code.i的临时文件中
预处理的工作:头文件展开、去注释、宏替换、条件编译
vim code.i
code.c文件中的去注释、头文件展开、宏替换的效果都是由预处理产生的
头文件展开:就是把头文件相关内容拷贝到源文件!!头源合并的过程!(编译器只需要再预处理时需要头文件)
当我们把code.c翻译为code.i文件时,code.i还是头文件,它是一个非常干净的c语言,里面没有一个注释和宏替换

b 编译
编译:C语言变为汇编语言
编译指令: gcc -S code.i -o code.s

c 汇编
汇编:汇编语言变为目标文件(.o/.obj(可重定位二进制目标文件))

结束汇编时,我们不能正常运行code.o文件,还需要链接
d 链接
需要再链接的时候,把我们的.o和C标准库链接形成可执行!
链接指令: gcc code.o -o code.exe
可以这样记忆:ESc -> iso
2 一般程序的构建过程(.o文件)
gcc -c code.c:直接形成同名.o文件

提高效率:gcc -o code.exe code.o

当有很多的源文件时,先把源文件编译成.o文件,然后再把.o链接

1063

被折叠的 条评论
为什么被折叠?



