#Linux学习(二)#Linux编程基础(上)

vim

vim用法

简明VIM练级攻略

基础命令

要习惯模式转换!

  • i:插入,按ESC回到Normal模式
  • x:删除当前光标所在的一个字符
  • :wq:存盘+退出(:w存盘,:q退出)
  • :w:后可以跟文件名
  • dd:删除当前行,并把删除的行存在剪贴板里
  • p:粘粘剪贴板
进阶命令

:开始的命令,需要输入<enter>回车
例如 ::q要输入 :q<enter>.

1.各种插入模式

  • a:在光标后插入
  • o:在当前行后插入一个新行
  • O:在当前行前插入一个新行
  • cw:替换从光标所在位置后到一个单词结尾的字符

2.简单移动光标

  • 0: 到行头
  • ^ :到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
  • $ :到本行行尾
  • g_ :到本行最后一个不是blank字符的位置。
  • /pattern :搜索 pattern 的字符串

3.拷贝/粘粘

  • p:粘粘在当前位置之后
  • P:粘粘在当前位置之前
  • yy拷贝当前行

4.Undo/Redo

  • u:undo
  • Ctrl-r:redo

5.打开/保存/退出/改变文件(Buffer)

  • :e <path/to/file> :打开一个文件
  • :w :存盘
  • :saveas <path/to/file> :另存为<path/to/file>
  • :x,ZZ:wq : 保存并退出 (:x 表示仅在需要时保存,ZZ不需要输入冒号并回车)
  • :q! : 退出不保存 :qa! 强行退出所有的正在编辑的文件,就算别的文件有更改
  • :bn:bp : 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件
再进阶命令

1.重复

  • . : 重复上一次的命令
  • N<command> : 重复某命令N次

2.光标移动

  • NG : 到第N行
  • gg :到第一行
  • G :到最后一行
  • % : 匹配括号移动,包括 (, {, [。(需要把光标先移到括号上)
  • *# : 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)
  • 按单词移动:
    • w : 到下一个单词的开头
    • e : 到下一个单词的结尾
  • 如果你认为单词是由默认方式,那么就用小写的e和w。默认上来说,一个单词由字母,数字和下划线组成(陈皓注:程序变量)
  • 如果你认为单词是由blank字符分隔符,那么你需要使用大写的E和W。(陈皓注:程序语句)
  • 剩余更多高级命令可参考前面放的链接,简明Vim练级攻略

vim编程

  • 在你放置文档的地方,右键打开终端
  • 输入sudo vim hello.c,创建hello.c文件
  • 进入vim,输入i(不用按回车,左下角出现-- 插入 --表示进入编辑状态)
  • 输入代码:
  • 按Esc推出编辑模式,输入:wq,保存退出

GCC

GCC编译器识别的文件类别

后缀名文件类型
.cC语言源代码文件
.a由目标文件构成的档案库文件
.C, .cc, .cxxC++源代码文件
.h程序所包含的头文件
.i已经预处理过得C源代码文件
.ii已经预处理过得C++源代码文件
.o编译后的目标文件
.s汇编语言源代码文件
.S经过预编译的汇编语言源代码文件

基础用法

最基本格式 gcc [option] infile

  • 将源文件生成可执行文件 gcc -o hello hello.cgcc hello.c -o hello
    • 源文件是hello.c,要生成hello可执行文件
  • 将源文件生成目标文件gcc -c hello.c

GDB

错误分类

  • 编译错误:gcc时出现错误
    • 根据错误提示找
    • 从网上搜索错误提示
    • 总结编译错误解决方法
  • 运行错误:gcc正确,运行时出错
    • 利用GDB
    • 利用printf打印调试

GDB用法

gdb调试的是可执行文件,编译的时候需要-g选项

常用的gdb使用方法
命令意义
help帮助
list列出正在调试程序的源文件内容
break设置断点
run执行程序
print打印变量的值
whatis查看变量类型
continue继续执行下一个断点
next单步调试(不进入函数)
step单步调试(进入函数)
GDB的使用
  • 编写test.c文件
#include<stdio.h>
int main()
{
   int sum = 0, i;
   for(i = 1; i < 100; i++)
      sum += i;
   printf("%d\n", sum);
   return 0;
}
  • 生成可执行文件gcc -g -o test test.c
  • 启动GDB调试工具gdb
  • 读入程序file test.c
  • 列出正在调试程序的源文件内容list
  • 设置断点break 6
  • 利用nextcontinueprint sum不断调试
    在这里插入图片描述
    在这里插入图片描述
  • 退出quit
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值