Linux下使用vim编辑C程序

这几天在系统能力班自学linux,加上最近大数据课上开始使用linux,我在这里总结一下,linux下使用vim编辑c程序的一些问题。

大数据课上是直接使用micro来编辑的,我这里只是简单的说明一下vim的一些基本使用方法,毕竟我也是刚开始接触。

主要内容来自系统能力班老师们准备的资料,图片是我自己实验的截图。by from  deepin 13.

vi/vim使用

1.1 vi/vim简介

vi/vim是Linux、Unix字符界面下常用的编辑工具,也是系统管理员常用的一种编辑工具。很多Linux发行版都默认安装了vi/vim。vim是vi的升级版,和vi的基本操作相同,其相对于vi的优点主要在于可以根据文件类型高亮显示某些关键字,如C语言关键字,便于编程

vi/vim有两种状态:命令状态和编辑状态。

1)命令状态:可以输入相关命令,如文件保存、退出、字符搜索、剪切等操作;vi/vim启动时,默认进入命令状态。在编辑状态下,按ESC键,即可进入命令状态;

2)编辑状态:在该状态下进行字符编辑。在命令状态下,按i/a/I/A/O/o等键即可进入编辑状态。

1.2 vim安装

如果Linux主机中没有安装vim,请执行以下命令(在Linux主机能访问互联网的情况下):

sudo apt-get install vim

Linux下使用vim编辑C程序

按照提示安装即可。(按Y)

稍等一会直到提示安装完成。

Linux下使用vim编辑C程序

1.3 vi/vim常用命令

表1 vi/vim常用命令(命令状态下使用)

命令

功能说明

插入字符、行,执行下面操作后,进入编辑状态

a

进入插入模式,在光标所在处后面添加文本

i

进入插入模式,在光标所在处前面添加文本

A

进入插入模式,在光标所在行末尾添加文本

I

进入插入模式,在光标所在行行首添加文本(非空字符前)

o

进入插入模式,在光标所在行下新建一行

O

进入插入模式,在光标所在行上新建一行

R

进入替换模式,覆盖光标所在处文本

剪切、粘贴、恢复操作

dd

剪切光标所在行

Ndd

N代表一个数字,剪切从光标所在行开始的连续N行

yy

拷贝光标所在行

Nyy

N代表一个数字,复制从光标所在行开始的连续N行

yw

复制从光标开始到行末的字符

Nyw

N代表一个数字,复制从光标开始到行末的N个单词

y^

复制从光标开始到行首的字符

y$

复制从光标开始到行末的字符

p

粘贴剪切板的内容在光标后(或所在行的下一行,针对整行复制)

P

粘贴剪切板的内容在光标前(或所在行的上一行,针对整行复制)

u

撤销上一步所做的操作

保存、退出、打开多个文件

:q!

强制退出,不保存

:w

保存文件,使用:w file,将当前文件保存为file

:wq

保存退出

:new

在当前窗口新建一个文本,使用:new file,打开file文件,使用Ctrl+ww在多个窗口间切换

设置行号,跳转

:set nu

显示行号,使用:set nu!或:set nonu可以取消显示行号

n+

向下跳n行

n-

向上跳n行

nG

跳到行号为n的行

G

跳到最后一行

H

跳到第一行

查找、替换

/***

查找并高亮显示***的字符串,如/abc

:s

:s/old/new//,用new替换行中首次出现的old

:s/old/new/g,用new替换行中所有的old

:n,m s/old/new/g,用new替换从n到m行中所有new

:%s/old/new/g,用new替换当前文件中所有old

1.4 vi/vim使用示例

如要编辑当前目录下名为 helloworld.c 的文件:

step1:输入vim helloworld.c,即可进入vim窗口,如helloworld.c不存在,则新建该文件,否则是打开该文件。vim默认处于命令状态。

step2:按i,进入编辑状态。

step3:编辑代码。

step4:按Esc,回到命令状态。

step5:输入 :wq,保存并退出。

Linux下使用vim编辑C程序

1.5 VIM配置

在我们的环境中,为了使VIM更好使用,建议更改vim配置文件:/etc/vim/vimrc文件。

修改时,请使用如下命令:

sudo vim /etc/vim/vimrc

Linux下使用vim编辑C程序

注:请大家对应上面的修改,修改自身机器的配置。(上面红字是为了解释而增加的,大家不要把这些红色汉字也写入)

1.6  vi/vim常见问题及解决方法

问题1:按Ctrl+s键(Windows下的保存快捷键)后,发现vim对后续按键不再反应。原因是Ctrl+s命令在linux下是取消回显命令,所键入字符不显示在屏幕上,按Ctrl+q即可恢复回显。

问题2:在启动vim时,没有键入文件名。vim默认会创建一个新的文件,编辑完成后,进入命令状态,键入:w filename,将其保存为filename。

问题3:vim非正常退出后,再次编辑该文件时,会出现“swap file .helloworld.c.swp already exists!”的提示(假设helloworld.c是vim非正常退出时编辑的文件名),使用rm .helloworld.c.swp删除该文件,重新编辑即可。

Linux下C程序开发

C语言的编译器被简称为cc,不同厂商的类UNIX系统所带的C语言编译器均包含不同的功能和选项。Linux系统中,通常使用GNU C编译器,简称为gcc,下面以HelloWorld为例,简单介绍Linux下C语言开发过程。

注:本实验环境需要gcc版本为4.8以上。(可使用gcc -v查看gcc版本)

2.1 简要C语言开发过程

step1:使用vim编辑hello.c

#include <stdio.h>
#include <stdlib.h>
int main()
{
    printf("Hello World \n");
    ;
}

step2:编译hello.c

gcc -o hello hello.c

gcc命令将hello.c编译成可执行文件hello,如不加-o选项,编译器会把编译后的可执行文件命名为a.out。

step3:执行hello

./hello

Linux下使用vim编辑C程序

在hello前面添加./,是让shell在当前目录下寻找可执行文件,如不添加./,shell会在PATH环境变量设置的目录中去寻找该可执行文件,但这些目录中通常不会包含当前目录。

:对于复杂的大型程序,一般编写makefile文件来进行编译链接,makefile文件的编写请参考相关资料。

1.1 gcc常用选项

gcc选项很多,下表列出gcc常用的一些选项。

表2 gcc常用选项

选项

说明

-c

只做预处理、编译和汇编,不作链接,常用于不含main的子程序

-S

只进行预处理和编译,生成.s汇编文件

-o

指定输出的目标文件名

-Idir

头文件搜索路径中添加目录dir

-Ldir

库文件搜索路径中添加目录dir

-lname

链接libname.so库来编译程序

-g

编译器编译时加入debug信息,供gdb使用

-O[0~3]

编译器优化,数字越大,优化级别越高,0表示不优化

使用gdb调试C程序

gdb是Unix/Linux下的一个功能强大的程序调试工具。当程序出现段错误(segment fault)或者逻辑错误时,可以使用gdb进行调试。

gdb主要有四大功能:

1、启动程序,可以按照自定义要求随心所欲的运行程序;

2、可让被调试程序在所指定的调置断点处停住(断点可以是条件表达式);

3、当程序被停住时,可以检查程序中所发生的事;

4、动态改变程序的执行环境。

2.1 gdb常用调试命令

可以使用#gdb program启动目标代码进行调试,但目标代码编译时,必须使用-g选项编译。进入调试界面后,可以输入相关gdb命令控制目标代码的运行。下表为gdb常用的调试命令。

表3 gdb常用调试命令

命令

说明

list(或l)

列出源代码,接着上次位置往下列,每次列10行

list 行号

从给定行号开始列出源代码

list 函数名

列出某个函数的源代码

break(或b)行号

在给定行号出设置断点,gdb会给出一个断点号

break 函数名

在给定函数开头设置断点

delete breakpoint 断点号

删除给定的断点

start

开始执行程序,停在main函数第一句前面等待命令

run(或r)

开始执行程序,直到遇到断点

next(或n)

执行下一条语句

step(或s)

执行下一条语句,如是函数调用,则进入函数中

continue(或c)

继续执行程序,直到遇到断点

finish

连续运行到当前函数返回,然后停下来等待命令

print(或p)

打印表达式的值

display 变量名

跟踪查看某个变量的值,每次停下来都显示该变量的值

undisplay 跟踪显示号

取消对变量的跟踪查看

set var

修改变量的值

quit

退出gdb

2.2 gdb调试示例

下面以一个例子简要说明使用gdb的调试过程。

step1:编辑源代码tst_gdb.c

#include <stdio.h>
int add()
{
    , i;
    ; i < ; i ++)
    {
        sum += i;
    }
    return sum;
}
int main()
{
    ;
    result = add();
    printf(“the result is %d \n”, result);
    ;
}

step2:编译链接源代码,形成目标代码,注意使用-g编译选项

gcc -g  -o tst_gdb tst_gdb.c

step3:使用gdb进行跟踪调试,如下图所示。

Linux下使用vim编辑C程序

Linux下使用vim编辑C程序

这里再给出一张图片作为说明。

Linux下使用vim编辑C程序

上一篇:Linux下使用mail命令发送邮件


下一篇:linux下使用vim创建编辑文件