【LInux】基础开发工具

CSDN 2024-07-25 11:37:03 阅读 54

文章目录

vim命令模式插入模式底行模式vim配置基本配置外观配置键映射插件管理

Linux编译器gcc函数库

总结

在这里插入图片描述

vim

命令模式

在 Vim 中,有三个主要的模式:命令模式、插入模式和可视模式。命令模式是默认的模式,用于执行命令和移动光标。

具体命令:

移动光标操作:

vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、

「l」,分别控制光标左、下、上、右移一格

按「G」:移动到文章的最后

按「 $ 」:移动到光标所在行的“行尾”

按「^」:移动到光标所在行的“行首”

按「w」:光标跳到下个字的开头

按「e」:光标跳到下个字的字尾

按「b」:光标回到上个字的开头

按「#l」:光标移到该行的第#个位置,如:5l,56l

按[gg]:进入到文本开始

按[shift+g]:进入文本末端

按「ctrl」+「b」:屏幕往“后”移动一页

按「ctrl」+「f」:屏幕往“前”移动一页

按「ctrl」+「u」:屏幕往“后”移动半页

按「ctrl」+「d」:屏幕往“前”移动半页

删除文字:

「x」:每按一次,删除光标所在位置的一个字符

「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符

「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符

「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符

「dd」:删除光标所在行

「#dd」:从光标所在行开始删除#行

复制:

「yw」:将光标所在之处到字尾的字符复制到缓冲区中。

「#yw」:复制#个字到缓冲区

「yy」:复制光标所在行到缓冲区。

「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。

「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完

成复制与粘贴功能。

替换:

「r」:替换光标所在处的字符。

撤销上一次操作:

「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。

「ctrl + r」: 撤销的恢复

更改:

「cw」:更改光标所在处的字到字尾处

「c#w」:例如,「c3w」表示更改3个字

跳至指定的行:

「ctrl」+「g」列出光标所在行的行号。

「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

插入模式

进入插入模式的方式有三种:

i:直接进入插入模式a进入插入模式之后向后跳一格o进入插入模式向下跳一行。

底行模式

列出行号:

「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号。

跳到文件中的某一行:

「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,

再回车,就会跳到文章的第15行。

查找字符:

「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按

「n」会往后寻找到您要的关键字为止。

「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直

按「n」会往前寻找到您要的关键字为止。

问题:/ 和 ?查找有和区别?操作实验一下

保存文件:

「w」: 在冒号输入字母「w」就可以将文件保存起来

离开vim:

「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim。

「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。

离开vim还有一种方法:shift+zz可以直接退出vim

在底行模式中还可以进行多文件编译:

vs+文件名可以打开多个文件:

在这里插入图片描述

进入之后可以对左右两个文件进行编译,如果还有其他文件还可以加进来。

如何判断我们当期在对哪个文件进行编译呢?光标所在处就是我们编译的文件

如何切换编译的文件呢?shift+ww

vim配置

在vim中,配置文件通常是.vimrc文件,位于用户的主目录中。你可以通过在命令行中输入以下命令来编辑这个文件:

<code>vim ~/.vimrc

下面是一些常见的 vim 配置选项和命令,可以添加到 .vimrc 文件中以定制你的 vim 编辑器体验:

基本配置

" 显示行号

set number

" 启用语法高亮

syntax on

" 设置缩进

set tabstop=4 " 制表符宽度

set shiftwidth=4 " 自动缩进宽度

set expandtab " 将制表符转换为空格

" 启用智能缩进

set smartindent

" 启用行号相对显示

set relativenumber

" 显示匹配的括号

set showmatch

" 启用行高亮

set cursorline

" 启用搜索高亮

set hlsearch

" 启用增量搜索

set incsearch

" 忽略搜索大小写

set ignorecase

set smartcase

" 启用鼠标

set mouse=a

" 设置显示的命令行高度

set cmdheight=2

" 禁用备份文件

set nobackup

set noswapfile

" 启用持久撤销

set undofile

" 设置剪切板共享

set clipboard=unnamedplus

外观配置

" 设置配色方案

colorscheme desert

" 显示状态栏

set laststatus=2

" 启用自动换行

set wrap

" 设置滚动偏移

set scrolloff=8

" 启用折叠

set foldmethod=syntax

set foldlevel=99

键映射

" 将jj映射为退出插入模式

inoremap jj <Esc>

" 快速保存

nnoremap <C-s> :w<CR>

inoremap <C-s> <Esc>:w<CR>a

" 快速退出

nnoremap <C-q> :q<CR>

inoremap <C-q> <Esc>:q<CR>

插件管理

如果你使用vim-plug作为插件管理器,可以在.vimrc中添加以下内容来管理插件:

安装vim-plug:

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \

https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

在.vimrc中添加插件配置:

" 初始化插件管理器

call plug#begin('~/.vim/plugged')

" 示例插件

Plug 'preservim/nerdtree' " 文件浏览器

Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } " 模糊查找

Plug 'tpope/vim-fugitive' " Git 集成

Plug 'airblade/vim-gitgutter' " Git 差异显示

Plug 'dense-analysis/ale' " 语法检查

Plug 'vim-airline/vim-airline' " 状态栏美化

Plug 'vim-airline/vim-airline-themes' " 状态栏配色方案

" 结束插件管理器

call plug#end()

重新启动vim,然后运行:PlugInstall来安装插件。

" 自动读取外部修改的文件

set autoread

" 设置文件编码

set encoding=utf-8

" 启用自动补全

set completeopt=menuone,noinsert,noselect

" 启用命令补全

set wildmenu

" 设置分屏

set splitbelow

set splitright

这些配置可以根据你的需求进行调整和扩展。保存 .vimrc 文件后,重新启动 vim 或执行 :source ~/.vimrc 以应用更改。

Linux编译器gcc

首先我们先对C语言的这几个生成可执行程序的这几个过程进行了解:

在这里插入图片描述

预处理

在这里插入图片描述

可以看见,生成了一个.i的文件:

在这里插入图片描述

编译

在这里插入图片描述

可以看见,生成了一个.s的文件:

在这里插入图片描述

汇编(将汇编语言转换成机器码)

在这里插入图片描述

形成:

在这里插入图片描述

连接

在这里插入图片描述

形成:

在这里插入图片描述

这就是我们的可执行程序:

在这里插入图片描述

可以看见是可以运行的。

函数库

函数库分为静态和动态函数库。

概念:一组预先编写的函数和程序模块的集合,用于提供特定的功能或服务,从而简化开发过程。函数库通过封装常见的操作和功能,使得开发者能够重用已有的代码,减少重复劳动,提高开发效率。

在Linux中:系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函数“printf”了,而这也就是链接的作用。

如何查看当前可执行程序依赖哪些库:

<code>ldd 可执行程序

在这里插入图片描述

在这些库当中<code>libbc.so.6就是一个动态库。

如何查看当前可执行文件是动态链接还是静态链接:

file 可执行程序

在这里插入图片描述

可以看见,上面的code就是一个动态链接。

动态链接的优点和缺点:

在这里插入图片描述

如何形成静态链接:

在这里插入图片描述

用gcc编译的时候默认是动态链接,只需要在后面加上一个选项就会变成静态链接,但是我们使用的有些是远程服务器是默认没有静态库的,所以需要下载,只需要用下面指令进行下载即可:

<code>sudo dnf install glibc-static

下载好之后,就不会报错了,可以看见我们形成了一个文件,我们来查看一下这个文件的属性。

在这里插入图片描述

可以看见,则合格文件的属性是静态链接。

静态链接的优点和缺点:

在这里插入图片描述

动态链接和静态链接大小的比较:

在这里插入图片描述

可以很明显的发现,静态链接出来的可执行程序大的多,浪费的资源大得多。

总结

在这篇博客中,我们探讨了两款 Linux 开发工具:vim 和 gcc。作为开发者,掌握这些工具不仅能够提升我们的开发效率,还能使我们在编程过程中更加得心应手。

vim 是一款强大的文本编辑器,以其灵活的操作和广泛的插件支持著称。通过掌握 vim 的基本操作和高级功能,我们可以在编写代码时更加高效,并能够定制出符合自己需求的开发环境。虽然 vim 的学习曲线可能较陡,但一旦熟练掌握,其高效的编辑能力将成为我们不可或缺的利器。

gcc 是 GNU Compiler Collection 的缩写,是 Linux 平台上最常用的编译器之一。它支持多种编程语言,并提供了强大的编译选项和优化功能。通过使用 gcc,我们能够将源代码编译成高效的可执行文件,并对程序进行调试和优化。了解 gcc 的基本用法和编译选项,将帮助我们更好地管理和构建我们的项目。

总之,vim 和 gcc 是 Linux 环境下进行开发的基础工具。掌握它们不仅能够提高我们的生产力,还能为我们的开发工作提供坚实的支持。希望通过这篇博客,能够帮助大家更好地了解和使用这些工具,为后续的开发工作打下良好的基础。继续探索和学习,相信你会发现更多工具和技巧,让你的开发之路更加顺畅。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。