1. 输入以下命令可以启动vi:

     (1) vi:不指定文件名,在保存文件时需要指定文件名。
     (2) vi 文件名:该文件既可以是已存在的,也可以是新建的。
     (3) vi +n 文件名:进入vi,光标停在第n行开始处。
     (4) vi + 文件名:进入vi,光标停在文件最后一行开始处。
     (4) vi +/字符串 文件名:进入vi,光标停在第一个字符串处所在行。
2. vi中保存文件并退出:
     (1) w 文件名:将当前文件的内容保存由"文件名"指定的新文件中,若该文件已存在则产生错误。
     (2) w! 文件名:将当前文件的内容保存由"文件名"指定的新文件中,若该文件已存在则覆盖原文件。
3. 光标的移动:
     (1) nw:右移n个字,n为数字,光标处于第n个字的字首。
     (2) w:右移1个字,光标处于下一个字的字首。
     (3) nb:左移n个字,n为数字,光标处于第n个字的字首。
     (4) b:左移1个字,光标处于下一个字的字首。
     (5) (:移到本句的句首,如果已经处于本句的句首,则移动到前一句的句首。
     (6) ):移动下一句的句首。
     (7) {:移到本段的段首,如果已经处于本段的段首,则移动到前一段的段首。
     (8) 1G:移动到文件首航的行首;G:移动到文件末行的行首;nG:移动到文件第n行的行首。
     (9) <ctrl>+g:报告光标所处的位置。
4. 文本的删除:
     (1) dw:删除光标所在文职的一个字;ndw:删除从光标开始的n个字。
     (2) db:删除光标前的一个字;ndb:删除从光标开始的前n个字。
     (3) d0:删除从光标前一个字符到行首的所有字符。
     (4) d$:删除光标所在字符到行尾的所有字符。
     (5) d(:删除从当前字符开始到句首的所有字符。
     (6) d):删除从当期字符开始到句尾的所有字符。
     (7) d{:删除从当前字符开始到段首的所有字符。
     (8) d}:删除从当前字符开始到短尾的所有字符。
5. 文本查找和替换:
     (1) ?string<Enter>:查找字符串
     (2) :s/old/new:在当前行用new替换old,只替换一次。
     (3) :s/old/new/g:在当前行用new替换old
     (4) :1,10s/old/new/g:在1~10行用new替换old
     (5) :1,$s/old/new/g:整个文件中用new替换old
6. 文本的复制与粘贴
     (1) yw:将光标所在位置到字尾的字符复制到缓冲区中
     (2) nyw:将光标所在位置开始的n个字复制到缓冲区中
     (3) yb:从光标开始向左复制一个字
     (4) nyb:从光标开始向左复制n个字
     (5) y0:复制从光标前一个字符到行首的所有字符
     (6) y$:复制从光标开始到行末的所有字符
     (7) np:在光标所在位置的后面插入复制的文本,共复制n次
     (8) nP:在光标所在位置的前面插入复制的文本,共复制n次。
7. Linux下的变量的命名规则:
     (1) 变量名必须有一定的意义,并且意义准确;
     (2) 不建议大小写混用;
     (3) 在失去意义的情况下,尽量使用较短的变量名。
     (4) 不采用匈牙利命名法表示变量的类型。
     (5) 函数名应该以动词开头,因为函数是一组具有特定功能的语句块;
     (6) 尽量避免使用全局变量
 
8. gcc编译程序时可分为4个阶段:
     (1) 预处理(Pre-Processing)
     预处理阶段,输入的是C语言源文件,通常为*.c,主要处理#ifdef、#include和#define预处理命令。该阶段一般会生成一个中间文件*.i。其命令为:
     gcc -E test.c -o test.i
     (2) 编译(Compling)
     在编译阶段,输入的是中间文件*.i,编译后生成汇编语言文件*.s。其命令为:
     gcc -S test.i -o test.s
     (3) 汇编(Assembling)
     在汇编阶段,将输入的汇编文件*.s转换为二进制机器码*.o,其命令为:
     gcc -c test.s -o test.o
     (4) 链接(Linking)
     在链接阶段将输入的二进制机器代码文件*.s与其他的机器代码文件和库文件汇集成一个可执行的二进制代码文件,其命令为:
     gcc test.o -o test
     最终生成可执行文件test。
     可简化为:gcc test.c -o test
9. gcc编译多个源文件,其命令为:
     gcc -o test testmain.c other1.c other2.c
     该命令将同时编译3个源文件,最后生成一个可执行程序test。
     注意:在生成可执行程序时,一个程序无论是只有一个源文件还是多个源文件,在所有被编译和连接的源文件中必须有且只有一个main函数。
10. gcc的选项:
     (1) -c : 只编译,不链接成可执行文件,编译器只是由输入.c等为后缀的源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。
     (2) -g:产生调试器gdb所必需的符号信息,要对源代码调试,必须在编译程序时加入该选项。
     (3) -O:对程序进行优化编译、链接,产生的可执行文件的执行效率高,但在编译、链接的速度就相应的慢一些。
     (4) -O2:比-O更好地优化编译、链接。
     (5) -Wall:输出所有警告信息
     (6) -w:关闭所有警告,建议不使用
     (7) -Idirname:将名为dirname的目录加入到程序头文件目录列表中
     (8) -Ldirname:将名为dirname的目录加入到程序的库文件搜索目录列表中,它是链接过程中使用的参数。
     (9) -lname:指示编译器,在链接时,装载名为libname.a的函数库,该函数库位于系统预定义的目录或者由-L选项指定的目录。
11. gcc的报错类型及对策
     (1) C语法错误
     (2) 头文件或库文件错误
     (3) 未定义的符号
12. strcpy是不安全的,存在安全漏洞,因此一般应该使用strncpy,strcat与strncat同样如此。
13. strstr是从字符串s1中寻找s2第一次出现的位置,返回指向第一次出现s2位置的指针,如果没有找到,则返回NULL。strchr查找字符串s中首次出现的字符c的位置,返回首次出现字符c指针,如果s中不存在c则返回NULL。

Linux C编程(1) vim及gcc命令的更多相关文章

  1. Linux环境下vi/vim编辑器常用命令

    使用vi文本编辑器 配置文件是Linux系统中的显著特征之一,其作用有点类似于Windows系统中的注册表,只不过注册表是集中管理,而配置文件采用了分散的自由管理方式.那么如何使用Linux字符操作界 ...

  2. linux shell编程学习笔记(二) --- grep命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  3. Linux Shell编程(21)——复杂命令

    更高级的用户命令find-exec COMMAND \;在每一个find 匹配到的文件执行 COMMAND 命令. 命令序列以 ; 结束( ";" 是 转义符 以保证 shell ...

  4. Linux学习笔记之八————vim编辑器常用命令总结

    <1>从命令行模式到插入模式 i  :在光标前插入 a :在光标后插入 I  :在光标所处在的行的行首 A :在光标所处在的行的末尾 o  :在光标所处在的行的下一行 行首 O :在光标所 ...

  5. Linux/UNIX编程:实现简单 tee 命令

    思路很简单,从标准输入文件描述符读入数据,然后同时向标准输出和参数指定的文件写出数据:如果加了 -a 选项,则以追加的方式向文件写出数据.还没了解 getopt() 函数就没判断参数是否合法. #in ...

  6. Linux C编程 GCC的使用

    本篇文章面向一些会linux文件操作与vim基本命令,编程大佬请移步勿喷. gcc是默认安装的,但是其还缺少常用的头文件和库文件,所以还需要build-essential这个包,可以在联网状态下使用如 ...

  7. Linux下Vim工具常用命令

    原文地址: http://www.cnblogs.com/lizhenghn/p/3675011.html 在linux下做开发,甚至是只做管理维护工作,也少不了Vim的使用.作为一个新手,我也是刚刚 ...

  8. 【Linux 操作系统】阿里云服务器 操作实战 部署C语言开发环境(vim配置,gcc) 部署J2EE网站(jdk,tomcat)

    . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18964835 . 博客总结 : 设置SecureCRT ...

  9. Linux下如何退出vim的一些常用命令总结

    1.保存并退出 linux下安装好了vim以及gcc后,我们开始新建一个c文件,例如: vim test.c 之后进入vim的编辑框中,点击i进入插入模式,开始编辑程序,当你编写好自己的程序之后,按E ...

随机推荐

  1. spring + myBatis 常见错误:SQL语法错误

    在程序运行时,有时候会出现如下错误: 这个错误通常是你的sqlmapper.xml中sql语句语法有错误.所以请仔细查看你sql语句是否正确,比如{#id}这样写就会报上述错误,其实应该#{id}这样 ...

  2. php bom \ufeff

    2015年5月29日 16:50:56 星期五 五月的最后一个周五............. 前两天遇到一个问题 PHP 返回json数据, 其他人死活解析不出来 json_last_error(); ...

  3. WP8 双击返回键退出

    bool isExit = false; // 构造函数 public MainPage() { InitializeComponent(); isExit = false; // 用于本地化 App ...

  4. Android实现Banner界面广告图片循环轮播(包括实现手动滑动循环)

    前言:经常会看到有一些app的banner界面可以实现循环播放多个广告图片和手动滑动循环.本以为单纯的ViewPager就可以实现这些功能.但是蛋疼的事情来了,ViewPager并不支持循环翻页.所以 ...

  5. 【leetcode】Sort List (middle)

    Sort a linked list in O(n log n) time using constant space complexity. 思路: 用归并排序.设输入链表为S,则先将其拆分为前半部分 ...

  6. 如何:使用PicturBox实现类似淘宝网站图片的局部放大功能

    转载至http://xuzhihong1987.blog.163.com/blog/static/267315872011822113131823/ 概要: 本文将讲述如何使用PictureBox控件 ...

  7. LeetCode 171 Excel Sheet Column Number

    Problem: Given a column title as appear in an Excel sheet, return its corresponding column number. F ...

  8. .NET后台如何获取前台HMTL控件的值

    很多时候我们需要HTML控件,感觉比服务器控件更加简介,清爽,那么如何获取HMTL控件的值呢,请看下面例子: 前台页面代码: <input id="Text1" type=& ...

  9. 单击双击手势(UITapGestureRecognizer)

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  10. August 24th 2016 Week 35th Wednesday

    Storms make trees take deeper roots. 暴风雨能使大树的根扎得更深. If the trees already have deep roots, then the s ...