文章目录
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文件,位于用户的主目录中。你可以通过在命令行中输入以下命令来编辑这个文件:
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”了,而这也就是链接的作用。
如何查看当前可执行程序依赖哪些库:
ldd 可执行程序
在这些库当中libbc.so.6
就是一个动态库。
如何查看当前可执行文件是动态链接还是静态链接:
file 可执行程序
可以看见,上面的code就是一个动态链接。
动态链接的优点和缺点:
如何形成静态链接:
用gcc编译的时候默认是动态链接,只需要在后面加上一个选项就会变成静态链接,但是我们使用的有些是远程服务器是默认没有静态库的,所以需要下载,只需要用下面指令进行下载即可:
sudo dnf install glibc-static
下载好之后,就不会报错了,可以看见我们形成了一个文件,我们来查看一下这个文件的属性。
可以看见,则合格文件的属性是静态链接。
静态链接的优点和缺点:
动态链接和静态链接大小的比较:
可以很明显的发现,静态链接出来的可执行程序大的多,浪费的资源大得多。
总结
在这篇博客中,我们探讨了两款 Linux 开发工具:vim 和 gcc。作为开发者,掌握这些工具不仅能够提升我们的开发效率,还能使我们在编程过程中更加得心应手。
vim 是一款强大的文本编辑器,以其灵活的操作和广泛的插件支持著称。通过掌握 vim 的基本操作和高级功能,我们可以在编写代码时更加高效,并能够定制出符合自己需求的开发环境。虽然 vim 的学习曲线可能较陡,但一旦熟练掌握,其高效的编辑能力将成为我们不可或缺的利器。
gcc 是 GNU Compiler Collection 的缩写,是 Linux 平台上最常用的编译器之一。它支持多种编程语言,并提供了强大的编译选项和优化功能。通过使用 gcc,我们能够将源代码编译成高效的可执行文件,并对程序进行调试和优化。了解 gcc 的基本用法和编译选项,将帮助我们更好地管理和构建我们的项目。
总之,vim 和 gcc 是 Linux 环境下进行开发的基础工具。掌握它们不仅能够提高我们的生产力,还能为我们的开发工作提供坚实的支持。希望通过这篇博客,能够帮助大家更好地了解和使用这些工具,为后续的开发工作打下良好的基础。继续探索和学习,相信你会发现更多工具和技巧,让你的开发之路更加顺畅。