Linux开发工具(二)

文章目录

vim的使用

命令模式

光标移动

  1. 与光标移动相关的命令
  2. 一旦退出文件编辑,就无法进行进行撤销操作了,但是只是保存,没有q退出,是可以进行撤销的
cpp 复制代码
gg:快速定位到第一行
yy:复制
p:粘贴
n+yy,n+p
dd:剪切当前行,或者以行为单位进行删除
n+dd
x:删除光标所在的字符,从右向左删除,左侧光标不动,右侧删除
shift+x:光标右侧不动,左侧删除,从左向右删除
shift+g:快速定位到最后一行
u:撤销历史操作
ctrl+r:撤销u操作
ctrl+r和u互为对方的撤销
r:替换为光标所在字符,r + 替换字符
n+r
shift+~:进行大小写切换
h:左
j:下
k:上
l:右
n+h,j,k,l表示可以向上左下右移动n个单位
w:以单词为单位向后移动
b:以单词为单位向前移动
n+w,b:w,b也可以加n

视图模式和替换模式

  1. shift+r:进入替换模式 ,可以进行批量化的替换
  2. ctrl+v:进入视图模式,hjkl可以进行区域的选择,shift+i可以进入到插入模式
  3. 首先在视图模式下进行区域的选择,按shift+i,进入到插入模式,进行注释一行,再按esc进入到命令模式,就可以进行刚才的区域的注释
    6.进行全部的注释:ctrl + v -> gg -> shift + g:全部的区域选择 -> shift + i -> // + esc
  4. gg:向上进行区域选择,shift+g:进行全部的区域选择
  5. n + shift + g:可以进行指定的区域选择,只能从当前行向下选择区域
  6. 保存退出后还有之前注释的行,不能用u进行撤销了,可以进入视图模式,进行区域选择,然后用d进行删除注释10. 视图模式不仅可以进行批量化注释,还可以进行批量化补充代码,和第6点差不多的步骤
  • shift+3 = #,选中单词,高量出来,可以进行查找,n:逆向查找

  • i,o,a都可以进入插入模式,i保证光标在原来的行,o光标换行新起一行,a光标定位到下一个字符的位置

底行模式

  • 底行模式下:shift+zz退出,wq!,保存并强制退出,set nu:设置行好,set nonu:撤销行号


  1. :!命令,可以在底行模式下进行命令的输入并且执行命令
  2. :%s/dst/src:可以将dst的字符串替换为src
  1. vim进入底行模式,vim 文件名 -> wq会保存并退出,生成一个空文件,如果不保存的话,不会生成文件
  2. 在底行模式下,vs (新或旧)文件名:会分屏操作
    光标在哪个窗口下,操作哪个窗口
    必须在命令模式下,光标在两个窗口之间切换:ctrl+ww
  1. vim + 文件名 + +20:光标会定位到20行
cpp 复制代码
vim code.c +20
  1. !v 会搜索最近的以v开头的历史命令并执行这个命令

vim的配置

  1. 进入 ~/.vimrc文件中,set number保存并退出可以永久设置行号
  • 双引号可以注释配置的命令
  • vim etc/vimrc:可以进行全局的配置,影响的是所有的用户,.vimrc自己的配置只影响当前的用户
  • 显示版本信息
  • 一键化vim配置
    centos下载链接
    ubuntu可以使用vimplus(插件),如果下不了,也可以到github上搜vimplus
    ubuntu下载链接
  • vim .vimrc进入配置文件,/2搜索回车的缩进,将回车的缩进的2改成4,回车就会缩进4个字符

gcc/g++

背景知识

  1. gcc 形成可执行文件,./可执行文件:运行程序
  1. 形成可执行程序 mycode


  • 预处理
    头文件展开
    去注释
    宏定义替换
    条件编译
cpp 复制代码
gcc -E code.c -o code.i
cpp 复制代码
gcc code.i -o exe
可以直接生成可执行程序
  • 编译(生成汇编)
cpp 复制代码
gcc -S code.i -o code.s
  • 汇编(生成机器可识别代码)
cpp 复制代码
gcc -c code.s -o code.o
生成.obj
  • 连接(形成可执行文件或库文件)
cpp 复制代码
gcc code.o -o code
  1. 记忆:ESc 预处理,编译,汇编形成的选项,.iso分别是形成的文件后缀,iso是镜像文件
  • 将所有的目标文件形成一个可执行程序

  1. 可执行程序code需要链接C标准库才能执行程序
  • ldd code:查看可执行程序依赖哪些库

    库的分类:
    1.动态库:Linux(.so),windows(.dll)
    2.静态库:Linux(.a),windows(.lib)
相关推荐
樱桃花下的小猫17 小时前
腐蚀Rust-服务器插件模组教程
服务器·新手友好·云鸢互联·零门槛一键开服·腐蚀rust
青梅橘子皮18 小时前
Linux---开发工具(2)(makefile、进度条、git、gdb)
linux·运维·服务器
Ether IC Verifier18 小时前
TCP/IP协议握手原理详解——结合以太网连接过程
服务器·网络·数据库·网络协议·tcp/ip
剑神一笑18 小时前
Linux less 命令深度解析:从源码看分页器的设计智慧
linux·运维·less
爱吃柠檬鸭18 小时前
跨境电商创业的效率法则:用“500块+3天”原则实现低成本快速试错
大数据·服务器
IT大白鼠18 小时前
Dirty Frag漏洞深度分析:Linux内核页缓存污染漏洞的技术原理与安全防护
linux·安全·dirty frag漏洞
李白你好18 小时前
Linux 本地提权工具支持Linux 内核和 Polkit 漏洞
linux·运维·服务器
陳103018 小时前
Linux:System V IPC
linux·运维·服务器
米高梅狮子18 小时前
01.mysql的备份与恢复
运维·数据库·mysql·docker·容器·kubernetes·github
aFakeProgramer18 小时前
在Ubuntu系统格式化SD卡,单分区/双分区
linux·运维·ubuntu