目录
一、vim
1.1 插入模式
1.2 底行模式
1)set nu
2)set nonu
3) /XXX + n
4)!command
5)vs other
1.3 补充
1) 批量化操作
2)批量化替换 :
3)快速定位:
4)!
5)查询Linux有几种模式:
1.4 扩展 - vim配置
二、编译器gcc/g++
2.1 gcc 编译选项
2.2 预处理
2.3 编译
2.4 汇编
2.5 链接
Linux开发工具【上】-CSDN博客
学会在 vim下写代码 , 很重要 , 因为以后我们避免不了会需要改一些配置文件 , 或者编写一些基础文件 。熟悉了就不会觉得很难了 , 一句话 , 菜就多练 。
一、vim
1.1 插入模式
【插入模式】 -> 【命令模式】
按 Esc 键
1.2 底行模式
1)set nu
set nu : 调出行号
2)set nonu
set nonu : 退出行号
3) /XXX + n
/XXX: 搜索具有 XXX 字符的命令 , n (next ) 表示下一个
4)!command
!command : 在不退出命令行模式下,执行命令
5)vs other
vs other : 文件级别分屏
如果你分屏的文件并不存在,系统会自动生成,最后不要忘记保存并且退出!
那如何区别是那一个文件呢?
在整个终端重 , 只有一个光标,可以看一下,光标在哪里 , 就在哪一个文件。
如何进行光标切换:
在【命令模式】下:Ctrl + ww
1.3 补充
1) 批量化操作
这里我借 批量化注释和 批量化去注释为引子 。
ctrl + v --> hjkl --> shift + i ---> // ---> ESc
ctrl + v ---> hjkl ---> d
这里我们 ctrl + v : 进入的是视图模式
2)批量化替换 :
在底行模式下:
%s /print / printf / g
1)g : 表示全部有关于print 的替换 , 如果没有 , 仅仅替换每行的首个print
2) 把后者的 printf 替换给者 printf
3)快速定位:
vim xxxx(文件名字) + n (行号)
一般用于编译的时候,代码报错,并且告诉你具体的错误是在某行的范围,使用这个指令便于快速定位 。
4)!
!g : 快速定位历史命令以 g 为开头的命令
! 后面接历史命令的起始字母 , 能快速执行历史命令。
5)查询Linux有几种模式:
底行模式下查询:
help vim-modes
1.4 扩展 - vim配置
其实vim 还可以配置一下缩进,高亮等(见一见,但是不建议常用)。
vim 配置的原理:
1)首先先过渡一下,以后你在编写命令的时候,不要在root 账号下编写了,需要在 普通用户下编写:
adduser XXX //添加用户
passwd XXX //为新添加的用户设置密码,密码不回显
2)创建配置文件 ( .vimrc) ---> 如果没有
那么随后我们就可以在我们的这一个配置文件进行配置!
3)配置
touch test.c //创建一个文件
vim test.c //编写基础代码,此时是没有行号的
touch .vimrc //ls -al 时候,如果没有该文件则创建,有则不需要
vim .vimrc //在配置文件下配置 ,例如set nu(设置行号)
vim test.c //此时再打开test.c 已经是有行号的了
打开 test.c
1. 我们每一个普通用户 , 在自己的家目录里做一些配置项 , 对其他用户是不奏效的 , 因为在Linux 多用户下 , 文件之间是隔离的!!!
2 . 其实在系统中也有公共的 vim 配置文件 , 对所有文件都起效:
/etc/vimrc
但是 , 你别动人家root 里面的配置项 , 别动!!!别动!!!别动!!!你管好自己普通用户下的配置文件就好了 , root 不用你操心 。
3. 但是,我不知道有什么配置项怎么办?
1)大语言模型走起 : deepseek 、 文心一言 、......
2)或者还可以去 其他地方里直接找 ....(脚本)
" 关闭 vi 兼容模式(必须放在配置最开头)
set nocompatible
" 显示行号
set number
" 高亮当前行
set cursorline
" 语法高亮
syntax enable
" 自动缩进
set autoindent
set smartindent
" Tab 转换为 4 个空格
set tabstop=4
set shiftwidth=4
set expandtab
" 显示输入命令
set showcmd
" 实时搜索高亮
set incsearch
" 搜索忽略大小写(输入大写时自动关闭)
set ignorecase
set smartcase
" 启用鼠标支持(normal/visual/insert 模式)
set mouse=a
" 显示状态栏(0=不显示,1=多窗口时显示,2=总是显示)
set laststatus=2
" 显示标尺(右下角行列号)
set ruler
" 折行显示(不自动换行)
set nowrap
" 代码折叠(manual-手动,indent-缩进,syntax-语法)
set foldmethod=indent
" 打开文件时默认不折叠
set nofoldenable
" 滚动时保留上下边距
set scrolloff=5
" 显示匹配的括号
set showmatch
这里我们只要知道有这么个东西,但是不建议日常码字的时候在配置了的 vim 下编写 。
二、编译器gcc/g++
我们知道,一个源文件生成可执行文件 会经过
1) 预处理(进行宏替换 / 去编译 / 条件编译 / 头文件展开等 )
2) 编译(生成汇编)
3) 汇编(生成机器可识别代码)
4) 链接 (生成可执行文件或库文件)
2.1 gcc 编译选项
格式: gcc [选项] 要编译的文件 [选项] 目标文件
2.2 预处理
头文件的展开,就相当于一个拷贝的过程 , 是递归展开的 (如果头文件中还有头文件 ) 。
问 : 预处理完后 , 我们的代码还是 c 语言吗?
是 , 只不过 .i 文件时经过预处理后的一个干净的c 语言 , 与头文件、宏等都没关系了。
2.3 编译
编译:把c 语言 , 变成汇编语言 。在这个阶段中, gcc 首先要检查代码的规范性、是否有语法错误等 , 以确定代码的实际要做的工作 , 在检查无误后,gcc 把代码翻译成汇编语言。
2.4 汇编
汇编语言 ---> 二进制(生成机器可识别代码)
2.5 链接
记忆技巧: