Linux utiliser éditeur vim au titre du programme C

. 1  utilisation VI / Vim

1.1  vi / vim Profil

vi / vim outils d' édition sont couramment utilisés sous Linux, l' interface de caractères Unix, l'administrateur du système est également utilisé des outils d' édition. De nombreuses distributions Linux installées par défaut vi / vim. vim vi est une version améliorée et le fonctionnement de base est le même que vi, en ce qui concerne le principal avantage qu'il peut afficher vi certains mots - clés, tels que les mots clés du langage C mis en surbrillance en fonction du type de fichier, pour faciliter la programmation .

vi / vim a deux états: la commande de l'Etat et l'édition.

1) état de la commande: Vous pouvez entrer les commandes pertinentes, telles que l'enregistrement d'un fichier, quittez, recherche de caractères, couper et d'autres opérations, quand vi / vim commencer, entrez le statut de commande par défaut. En mode édition, appuyez sur la touche ESC, entrer dans l'état de commande;

2) état d'édition: éditeur de caractère dans cet état. Dans l'état de commande, appuyez sur la i / a / E / A / S / o pour entrer dans le mode d'édition et autres.

1.2  vim installé

S'il n'y a pas vim installé hôte Linux, exécutez la commande suivante (dans le cas peut accéder à Internet dans l'hôte Linux):

Sudo apt-get install vim

Suivez les instructions pour installer. (Appuyez sur Y)

Attendez un peu jusqu'à ce que vous êtes invité à terminer l'installation.

1.3  vi / vim commandes couramment utilisées

Tableau 1 vi / vim commandes communes (commandes utilisent state)

commandement

fonction

Insérer un caractère, la ligne, après avoir effectué l'opération suivante, entrez le mode d'édition

une

Entrer en mode insertion, le texte est ajouté à l'arrière du curseur

je

Entrer en mode insertion, le texte ajouté devant le curseur

UNE

Entrer en mode insertion, le texte est ajouté à la fin de la ligne du curseur

je

Entrez le mode d'insertion, le curseur premier texte d'ajout de trekking (avant les caractères non nuls)

la

Entrer en mode insertion, une nouvelle ligne dans la ligne du curseur

la

Entrer en mode insertion, la nouvelle ligne dans la ligne du curseur

R

Dans le mode de remplacement, le texte à la couverture du curseur

Couper et coller, l'opération de récupération

dd

Couper la ligne du curseur

ndd

N représente un nombre, N lignes de coupe successives à partir de la ligne de curseur 

yy

Copier la ligne du curseur

nyy

N représente un nombre, N rangées successives copié à partir de la ligne de curseur de début 

est

Copiez les caractères du curseur au début de la fin de la ligne

nyw

N représente un nombre, le curseur est copié depuis le début jusqu'à la fin de la ligne de mot N

et ^

Copiez les caractères commençant du curseur au début de la ligne

et $

Copiez les caractères du curseur au début de la fin de la ligne

p

Coller le contenu du presse-papiers après le curseur (ou la ligne suivante dans la rangée, qui copient la ligne entière)

P

Coller le contenu du presse-papiers avant le curseur (ou la ligne de rangée, pour l'ensemble de copie de ligne)

en

Annuler l'opération effectuée par l'étape précédente

Enregistrer, sortie, ouvrez plusieurs fichiers

: Q!

Contraint de quitter sans enregistrer

: w

Enregistrez le fichier, utilisez: fichier w, enregistrez le fichier en tant que fichier en cours

: wq

Enregistrer et sortie

:Nouveau 

Créer un texte dans la fenêtre actuelle, utilisez: nouveau fichier, ouvrez le fichier de fichier, utilisez Ctrl + ww basculer entre plusieurs fenêtres

Réglez le numéro de ligne, saut

: Non définie

les numéros de ligne d'affichage, utilisez: set nu ou :! Set Nonu peut annuler les numéros de ligne d'affichage 

n +

N sauter en bas de la ligne

n-

N saut ligne vers le haut

ng

Passer le numéro de ligne n de lignes

g

Aller à la dernière ligne

H

Aller à la première ligne

Rechercher et remplacer

/ ***

Et mettre en surbrillance *** chaîne, tels que / abc 

: s

: S / ancien / nouveau //, ancienne ligne à remplacer par une nouvelle première occurrence de

: S / ancien / nouveau / g, avec toute la nouvelle ligne à remplacer ancienne

: N, m s / ancien / nouveau / g, remplacées par de nouvelles lignes de n à m tout nouveau

:% S / ancien / nouveau / g, remplacer le fichier en cours avec tous les nouveaux vieux

1,4  VI / Vim utilise des exemples

Pour modifier le répertoire courant nommé  HelloWorld.c  fichier:

Etape 1: Entrée vim HelloWorld.c , vous pouvez entrer dans la fenêtre de vim, comme HelloWorld.c n'existe pas, le nouveau fichier, ou ouvrir le fichier. vim par défaut à l'état de commande.

Etape 2: Appuyez sur i, entrez le mode d'édition.

Etape 3: modifier le code.

Etape 4: appuyez sur la touche Echap , revenir à l' état de commande.

Etape 5: Entrée  : WQ , sauvegarder et quitter.

1.5 VIM配置

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

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

sudo vim /etc/vim/vimrc

 

 

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

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");
    return 0;
}

复制代码

step2:编译hello.c

gcc -o hello hello.c

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

step3:执行hello

./hello

在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()
{
    int sum =0, i;
    for(i = 0; i < 10; i ++)
    {
        sum += i;
    }
    return sum;
}
int main()
{
    int result = 0;
    result = add();
    printf(“the result is %d \n”, result);
    return 0;
}

复制代码

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

gcc -g  -o tst_gdb tst_gdb.c

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

 

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

 

发布了23 篇原创文章 · 获赞 2 · 访问量 1万+

Je suppose que tu aimes

Origine blog.csdn.net/wenson0705/article/details/104815475
conseillé
Classement