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. centos6.5 nginx开机启动

    /etc/init.d/下添加nginxd文件,内容如下: #!/bin/bash # #chkconfig: - #description: Nginx is a World Wide Web se ...

  2. FastReport调用Delphi中的人民币大写转换自定义函数

    FastReport调用Delphi中的人民币大写转换自定义函数   FastReport调用Delphi中的人民币大写转换自定义函数 function TJzpzEdit1.MoneyCn(mmje ...

  3. 理解和解决MySQL乱码问题【转】

    本文来自:http://www.cnblogs.com/cenalulu/p/4325693.html 要了解为什么会出现乱码,我们就先要了解从客户端发起请求,到MySQL存储数据,再到下次从表取回客 ...

  4. orace 取昨天凌晨的日期

    sysdate 为现在时间sysdate-1为昨天trunc(sysdate-1)为昨天凌晨0:00trunc(sysdate-1)+20/24 为昨天晚上8点select trunc(sysdate ...

  5. @RequestMapping详解

    简介: @RequestMapping RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径. RequestM ...

  6. 项目差异class文件提取-->上线用

    package fileReader; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStre ...

  7. 瓦片地图与geoserver发布

    本文主要包括以下内容 TileMill生成Tile影像金字塔(.mbtiles压缩文件) Mbutil(https://github.com/mapbox/mbutil)解压缩 Apache HTTP ...

  8. AlwaysOn的认识与相关理解

    AlwaysOn技术的简要说明: SQL Server2012所支持的AlwaysOn技术集中了故障转移群集.数据库镜像和日志传送三者的优点,但又不相同.故障转移群集的单位是SQL实例,数据库镜像和日 ...

  9. haproxy 安装 各个参数的测试

    ---------------------------------------------------------------------------------------------------- ...

  10. Android4.4 以太网和DHCP启动过程介绍

    转自:http://blog.csdn.net/wlwl0071986/article/details/51451843 Android4.4已经加入了以太网的支持.现在对以太网的初始化流程.网络策略 ...