Linux操作--vim与gcc编译器

目录

1 vim

1.1 vim简单介绍

1.2 vim的三种模式

1.3 vim基本操作

1.3.1命令模式下的操作

保存退出

代码格式化

光标移动

删除命令

撤销和反撤销命令

复制粘贴

可视模式

替换操作

查找命令

1.3.2 切换到文本输入模式

从命令模式切换到文本输入模式只需输入如下命令:

1.3.3 末行模式下的操作

保存退出

替换操作

快速翻屏

在末行模式下执行shell命令

分屏操作

从末行模式切换回命令模式

1.3.4 vim的配置文件

用户级别配置文件

系统级别配置文件

2 gcc编译器

2.1 gcc的工作流程

2.2 gcc常用参数


1 vim

1.1 vim简单介绍

vi是”visual interface”的简称, 它在Linux上的地位就仿佛Windows中的记事本一样. 它可以执行编辑、删除、查找、替换、块操作等众多文本操作, 而且用户可以根据自己的需要对其进行定制. vi是一个文本编辑程序, 没有菜单, 只有命令.

vim更高级一些, 可以理解是vi的高级版本.

         vim需要自行安装, 在shell中输入vimtutor命令可以查看相关的帮助文档.

1.2 vim的三种模式

Vi有三种基本工作模式: 命令模式、文本输入模式、末行模式。

三种工作模式的切换如图所示, 从下图中可以看出编辑模式和末行模式之间不能相互切换, 必须经过命令模式.

 

vi编辑器的工作模式

1.3 vim基本操作

1.3.1命令模式下的操作

用户按下esc键, 就可以使vi进入命令模式下; 当使用vi打开一个新文件开始也是进入命令模式下.

保存退出

快捷键

操作

ZZ

保存退出

代码格式化

快捷键

操作

gg=G

代码的格式化

光标移动

快捷键

操作

h

光标左移

j

光标下移

k

光标上移

l

光标右移

w

移动一个单词

gg

光标移动到文件开头

G

光标移动到文件末尾

0

光标移到到行首

$

光标移到到行尾

nG

行跳转, 例12G, 跳到12行处

删除命令

快捷键

操作

x

删除光标后一个字符,相当于 Del

X

删除光标前一个字符,相当于 Backspace

dw

删除光标开始位置的字,包含光标所在字符

d0

删除光标前本行所有内容,不包含光标所在字符

D[d$]

删除光标后本行所有内容,包含光标所在字符

dd

删除光标所在行(本质其实是剪切)

ndd

从光标当前行向下删除指定的行数, 15dd

v/ctrl+v

使用h、j、k、l移动选择内容, 然后按d删除其中ctrl+v是列模式, v为非列模式

撤销和反撤销命令

快捷键

操作

u

一步一步撤销, 相当于word文档的ctrl+z

ctrl-r

反撤销, 相当于word文档的ctrl+y

复制粘贴

快捷键

操作

yy

复制当前行

nyy

复制n行, 如10yy

p

在光标所在位置向下新开辟一行, 粘贴

P

在光标所在位置向下新开辟一行, 粘贴

剪切

操作

dd或者ndd删除, 将删除的行保存到剪贴板中, 然后按p/P就可以粘贴了

可视模式

快捷键

操作

v/ctrl+v

使用hjkl移动选择内容;

使用d删除

使用y复制

使用p粘贴到光标的后面

使用P粘贴到光标的前面

替换操作

快捷键

操作

r

替换当前字符

R

替换当前行光标后的字符

查找命令

快捷键

操作

/

/xxxx, 从光标所在的位置开始搜索, 按n向下搜索, 按N向上搜索

?

?xxxx, 从光标所在的位置开始搜索, 按n向上搜索, 按N向下搜索

#

将光标移动到待搜索的字符串上, 然后按n向上搜索,但N向下搜索

shift+k

在待搜索的字符串上按shift+k或者K, 可以查看相关的帮助文档

1.3.2 切换到文本输入模式

从命令模式切换到文本输入模式只需输入如下命令:

快捷键

操作

i

在光标前插入

a

在光标后插入

I

在光标所在行的行首插入

A

在光标所在行的行尾插入

o

在光标所在的行的下面新创建一行, 行首插入

O

在光标所在的行的上面新创建一行, 行首插入

s

删除光标后边的字符, 从光标当前位置插入

S

删除光标所在当前行, 从行首插入

按列模式插入

先按ctrl+v进入列模式, hjkl移动选定某列,I或者shift+i向前插入, 然后插入字符, 最后按两次esc.

1.3.3 末行模式下的操作

从命令模式切换到末行模式, 输入冒号(:)

保存退出

快捷键

操作

q

退出

 q!

强制退出,不保存修改内容

w

保存修改内容, 不退出

wq

保存并退出

x

相当于wq

替换操作

下面表格中old表示原字符串, new表示新字符串

快捷键

操作

:s/old/new/

光标所在行的第一个old替换为new

:s/old/new/g

光标所在行的所有old替换为new

:m, ns/old/new/g

将第m行至第n行之间的old全部替换成new

:%s/old/new/g

当前文件的所有old替换为new

:1,$s/old/new/g

当前文件的所有old替换为new

:%s/old/new/gc

同上,但是每次替换需要用户确认

快速翻屏

   快捷键

操作

ctrl + u

向下翻半屏(up)--光标向上移动

ctrl + d

向上翻半屏(down)--光标向下移动

ctrl + f

向上翻一屏(front)

ctrl + b

向后翻一屏(back)

在末行模式下执行shell命令

        !shell命令

        按下两次esc可以回到命令模式

分屏操作
  1. 在打开文件之后分屏:

快捷键

操作

sp

当前文件水平分屏

vsp

当前文件垂直分屏

sp 文件名

当前文件和另一个文件水平分屏

vsp 文件名

当前文件和另一个文件垂直分屏

ctrl-w-w

在多个窗口切换光标

wall/wqall/xall/qall/qall!

保存/保存退出/保存退出/退出/强制退出分屏窗口

        2.在打开文件之前分屏:

                分屏: vim -on file1 file2 … 

                垂直分屏: vim -On file1 file2… 

                      注意: n可以省略, 有几个文件就分几屏

从末行模式切换回命令模式

        按两次ESC, 退格(backspace)或者回车键

1.3.4 vim的配置文件

用户级别配置文件

        ~/.vimrc, 修改用户级别的配置文件只会影响当前用户, 不会影响其他的用户.        

        例如: 在用户的家目录下的.vimrc文件中添加

        set tabstop=4  ----设置缩进4个空格

        set nu        ----设置行号

        set shiftwidth=4  ---设置gg=G缩进4个空格, 默认是缩进8个空格

系统级别配置文件

        /etc/vim/vimrc, 修改了系统级别的配置文件将影响系统下的所有用户.

        说明: 由于linux是多用户操作系统, 建议只在用户级别的配置文件下进行修改, 不要影响其他用户.

2 gcc编译器

2.1 gcc的工作流程

        gcc编译器将c源文件到生成一个可执行程序,中间一共经历了四个步骤:

    

    

四个步骤并不是gcc独立完成的,而是在内部调用了其他工具,从而完成了整个工作流程, 其中编译最耗时, 因为要逐行检查语法. 

 

下面以test.c为例介绍gcc的四个步骤:

gcc -E test.c -o test.i

gcc -S test.i -o test.s

gcc -c test.s -o test.o

gcc test.o -o test

一步生成最终的可执行程序:

  gcc test.c -o test

2.2 gcc常用参数

  • -v  查看gcc版本号, --version也可以
  • -E  生成预处理文件
  • -S  生成汇编文件
  • -c  只编译, 生成.o文件, 通常称为目标文件
  • -I   指定头文件所在的路径
  • -L   指定库文件所在的路径
  • -l    指定库的名字
  • -o   指定生成的目标文件的名字
  • -g   包含调试信息, 使用gdb调试需要添加-g参数
  • -On n=0∼3 编译优化,n越大优化得越多

例如:下面代码片段

int a = 10;

int b = a;

int c = b;

printf("%d", c);

上面的代码可能会被编译器优化成:

int c = 10;

printf("%d", 10);

  • -Wall 提示更多警告信息

int a;

int b;

int c = 10;

printf(“[%d]\n”, c);

编译如下:

gcc -o test -Wall test.c

warning: unused variable ‘b’ [-Wunused-variable]

warning: unused variable ‘a’ [-Wunused-variable]

  • -D  编译时定义宏

test.c文件中的代码片段:

printf("MAX==[%d]\n", MAX);

         编译:

             gcc -o test test.c -D MAX=10

        gcc -o test test.c -DMAX=10

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值