Linux基础开发工具(三):Vim高级配置、Swap恢复机制与Sudo权限白名单详解

发布时间:2026/7/30 8:48:45
Linux基础开发工具(三):Vim高级配置、Swap恢复机制与Sudo权限白名单详解 目录前言一、Vim异常退出与Swap文件恢复机制二、Linux用户权限管理与Sudo配置2.1 普通用户的Sudo权限问题2.2 配置Sudoers白名单三、Vim配置原理与一键化环境搭建3.1 Vim很挫那是因为你没配置3.1.1 为什么现在不细讲手动配置了3.2 Vim 配置的核心原理3.2.1 用户隔离机制最佳实践3.2.2 基础配置项详解3.3 进阶一键化插件配置方案 (VimForCpp)3.3.1 项目获取与安装3.3.2 安装过程解析3.3.3 效果验证3.3.3.1 关于缩进的特别说明Tab vs Space结语 云泽Q个人主页 专栏传送入口: 《C语言》《数据结构》《C》《Linux》《蓝桥杯系列》《笔试算法》《AI赋能》《STM32》⛺️遇见安然遇见你不负代码不负卿~前言大家好啊我是云泽Q欢迎阅读我的文章一名热爱计算机技术的在校大学生喜欢在课余时间做一些计算机技术的总结性文章希望我的文章能为你解答困惑~一、Vim异常退出与Swap文件恢复机制在使用Vim的过程中新手最容易遇到的恐慌时刻就是突然断电、网络断开SSH掉线或者不小心关闭了终端窗口导致正在编辑的文件没有保存。当你再次尝试打开该文件时可能会看到一堆红色的警告信息。【问题现象】当你再次执行vim code.c时屏幕可能会出现如下提示E325: ATTENTIONFound a swap file by the name “.code.c.swp”owned by: root dated: Wed Jul 29 15:17:02 2026…Swap file “.code.c.swp” already exists![O]pen Read-Only, (E)dit anyway, ®ecover, (D)elete it, (Q)uit, (A)bort:这是因为Vim在编辑文件时为了防止数据丢失会在当前目录下生成一个隐藏的交换文件Swap File文件名通常为.原文件名.swp例如.code.c.swp。当Vim非正常退出时这个文件会被保留下来。【解决方案与操作步骤】面对这个提示我们需要根据情况选择对应的选项恢复数据推荐如果你是因为崩溃导致未保存请选择®ecover。Vim会尝试从.swp文件中恢复你上次编辑的内容。恢复完成后检查内容是否完整。确认无误后正常保存退出:wq。关键一步恢复并保存后那个.swp文件就变成了垃圾文件。你需要手动删除它否则下次打开还会提示。可以使用命令rm.code.c.swp或者在Vim内部使用:!rm .code.c.swp。直接删除Swap文件如果你确定之前的修改都不想要了或者已经通过其他方式恢复了可以选择(D)elete it。这会直接删除交换文件让你干净地打开原文件。查看隐藏文件平时我们在目录下ls是看不到.swp文件的因为它是隐藏文件。如果你想确认它的存在需要使用-a参数ls-al这样就能看到类似-rw-r--r-- 1 root root 12288 Jul 29 15:17 .code.c.swp的文件了。正常退出Vim:q或:wq时Vim会自动清理掉这个.swp文件。只有在异常退出的情况下它才会留下来作为“后悔药”。所以遇到这个提示不要慌这是Vim在保护你的数据。二、Linux用户权限管理与Sudo配置讲完了Vim的技巧我们最后来聊一个在Linux系统中非常核心的话题权限管理。特别是关于sudo命令的使用和配置。2.1 普通用户的Sudo权限问题在Linux系统中root用户拥有至高无上的权力可以执行任何操作。但是出于安全考虑我们通常不建议直接使用root进行日常开发而是创建一个普通用户例如yunze或zhangsan118。【常见问题】当你使用普通用户登录系统试图执行一些需要管理员权限的命令如安装软件、修改系统配置时通常会加上sudo前缀。例如[yunzeiZuf6bvbodyqq8qxjtf7l6Z ~]$sudols[sudo]passwordforyunze: yunze is notinthe sudoers file. This incident will be reported.你会收到一个报错“用户不在 sudoers 文件中”。这意味着当前的普通用户没有被授权使用sudo提权。2.2 配置Sudoers白名单要解决这个问题我们需要切换到root用户将普通用户添加到/etc/sudoers配置文件的白名单中。【操作步骤详解】切换至Root用户首先确保你是以root身份登录或者通过su -切换到 root。编辑配置文件使用Vim打开/etc/sudoers文件vim/etc/sudoers定位与复制配置在文件中你会看到类似这样的注释和配置## Allow root to run any commands anywhere root ALL(ALL) ALL这行配置的意思是允许root用户在任何主机上以任何用户身份执行任何命令。我们要做的就是给普通用户也加上这一行。为了方便我们可以利用Vim的复制粘贴功能将光标移动到root ALL(ALL) ALL这一行。按下yy复制该行。按下p在下方粘贴。修改用户名将粘贴出来的那一行中的root修改为你的普通用户名例如yunze或zhangsan118yunze ALL(ALL) ALL强制保存关键点当你尝试保存这个文件时输入:wVim可能会再次报错提示这是一个只读文件Read-only即使你是root用户也可能被拦截。这是因为/etc/sudoers文件的权限设置非常严格通常是440旨在防止误操作。此时你需要使用强制写入命令:w!或者在退出的同时强制保存:wq!这里的感叹号!代表强制执行告诉Vim“我知道这个文件很重要但我确定要修改它请帮我写进去。”验证生效保存退出后配置是即时生效的不需要重启系统。现在你可以退出 root切换回普通用户yunze再次尝试执行sudo ls。这次系统只会要求你输入当前用户的密码而不会再报错了。三、Vim配置原理与一键化环境搭建3.1 Vim很挫那是因为你没配置刚接触 vim 有没有觉得原始的 Vim 用起来特别“挫”这玩意儿连个语法高亮都没有连代码缩进都不齐写起代码来简直是一种折磨。但我想告诉大家的是Vim 的强大在于它的可配置性。目前的“裸奔”状态是因为它没有经过配置而 Vim 必须经过配置才能更好地使用3.1.1 为什么现在不细讲手动配置了如果把时光倒流回五年前、十年前那时候我们可能得花大把时间来一行一行地写配置文件。但在现阶段手动配置 Vim 已经不是重点了。这篇文章我们的核心目标是搞懂原理大概知道 Vim 的配置是怎么一回事儿心里有个底。掌握方案我会直接提供一套在 CentOS 7 下的一键化配置方案。以后大家拿到新环境直接运行脚本一键搞定别再搞那些繁琐的手动配置了听明白了吗好那我们就进入最后一个话题——Vim 配置。3.2 Vim 配置的核心原理3.2.1 用户隔离机制最佳实践首先我们要明确一个概念Vim 是支持多用户的。配置文件位置Vim 的个性化配置是写在当前用户的家目录下的隐藏文件.vimrc中。路径示例/home/zs/.vimrc或/home/yunze/.vimrc各配各的.vimrc属于单个用户。张三的配置只影响张三李四的配置只影响李四。这是 Linux 权限管理的体现也是我们的最佳实践。千万不要去改系统级的全局配置。我们可以看下终端里的实际操作演示# 查看当前用户家目录下的文件[zsbite-alicloud ~]$ ll total0-rw-r--r--1root root0Nov1220:27 test.c# 编辑 .vimrc 文件如果不存在会自动创建[zsbite-alicloud ~]$vim.vimrc# 查看配置文件内容[zsbite-alicloud ~]$cat.vimrcsetnu# 确认当前所在路径[zsbite-alicloud ~]$pwd/home/zs# 确认 Vim 程序的位置所有用户共享同一个程序[zsbite-alicloud ~]$ls/usr/bin/vim /usr/bin/vim原理解析虽然系统中只有一个/usr/bin/vim程序但当用户启动它时它会先去扫描当前用户家目录下的.vimrc加载里面的配置项。这就是为什么每个人打开 Vim 的样子可能都不一样。3.2.2 基础配置项详解刚才我们说原始 Vim 比较“糙”没有语法提醒缩进也很乱。我们可以通过修改.vimrc来解决。这里有一份我用 AI 生成的推荐的基础配置清单如果就是想自己配置可以参考或直接添加到自己的.vimrc文件中配置命令功能说明set encodingutf-8设置编码为 UTF-8避免中文乱码set fileencodingsutf-8,ucs-bom,cp936设置文件编码检测顺序set nu显示行号 (number)set cursorline高亮当前行方便定位set ruler显示光标位置右下角标尺set showcmd在底部显示输入的命令set incsearch搜索时逐字符匹配增量搜索set hlsearch高亮搜索结果set ignorecase搜索时忽略大小写set smartcase智能大小写输入大写则区分全小写则忽略set tabstop4Tab 键宽度设为 4 个空格set shiftwidth4自动缩进时使用 4 个空格set expandtab将 Tab 转换为空格推荐set autoindent开启自动缩进set smartindent开启智能缩进set softtabstop4删除 Tab 时的退格长度set backspaceindent,eol,start允许 Backspace 键删除缩进、换行和行首syntax on开启语法高亮像这样直接把要配置的功能使用 vim 写入到.vimrc中即可3.3 进阶一键化插件配置方案 (VimForCpp)光有基础配置还不够我们还需要语法补全、函数跳转、语法诊断等高级功能。这些都需要通过插件来实现。为了方便因为插件配置是非常麻烦的我给大家推荐一个开源的一键配置项目VimForCpp。它能帮你把 Vim 打造成一个轻量级的 C IDE。3.3.1 项目获取与安装这个项目托管在 Gitee 上作者是HGtz2222。CentOS下开源的一键配置项目搜索项目在 Gitee 搜索vimforcpp找到HGtz2222/VimForCpp。支持环境目前该脚本主要支持CentOS 7 x86_64。注意如果你是 Ubuntu 用户也有一个开源的一键配置项目不过没有上面CentOS的功能强大Ubuntu下开源的一键配置项目执行安装命令以CentOS为例请在你的普通用户非 root终端下执行以下命令curl-sLfhttps://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh-o./install.shbash./install.sh安全提示安装过程中需要输入 root 密码以安装依赖包如 git、cmake 等。请放心脚本只是借用 root 权限装软件不会上传你的密码。强烈不推荐直接在 root 用户下执行此脚本。3.3.2 安装过程解析执行脚本后你会看到类似以下的输出流程下载数据会下载大约 200MB 的数据请保持网络通畅。安装依赖脚本会自动检查并安装git、perl、libffi等必要依赖。克隆插件从 GitHub/Gitee 拉取各种 Vim 插件如 YouCompleteMe, NERDTree 等。编译插件部分插件如 YCM需要本地编译这一步会比较耗时请耐心等待。安装完成后你可以检查一下家目录的变化[yunzeiZuf6bvbodyq8qxjtf7l6Z ~]$ls-aldrwx------8yunze yunze4096Jul2922:09.drwxr-xr-x.3root root4096Jul2921:27..-rw-------1yunze yunze396Jul2921:55 .bash_history... drwxrwxr-x2yunze yunze4096Jul2921:40 code lrwxrwxrwx1yunze yunze50Jul2921:54 .cquery -/home/yunze/.VimForCpp/cquery/config/cquery.config -rw-r--r--1yunze yunze827Jul2921:53 install.sh drwx------3yunze yunze4096Jul2921:55 .VimForCpp-- 插件主目录 lrwxrwxrwx1yunze yunze35Jul2921:54 .vim -/home/yunze/.VimForCpp/vim -rw-------1yunze yunze695Jul2921:54 .vimrc -/home/yunze/.VimForCpp/vim/init.vim可以看到脚本在你的家目录下创建了.VimForCpp目录并建立了.vimrc的软链接指向项目内的配置文件。3.3.3 效果验证安装完成后我们随便打开一个 C 文件测试一下vimtest.c此时你会发现界面变了左侧出现了文件目录树NERDTree。颜色变了代码有了漂亮的语法高亮。功能强了输入代码时会有自动补全提示错误会有波浪线提示。这就完成了我们从“原始粗糙 Vim”到“现代化 IDE”的蜕变。至此关于文本编辑器 Vim 的所有话题就全部讲完了。大家下去之后如果是 CentOS 系统赶紧把这个VimForCpp装上如果是其他系统可以参考我之前发的文章进行系统重装也可以3.3.3.1 关于缩进的特别说明Tab vs Space大家在使用上面的方法配置好之后使用 vim 可能会发现代码的缩进默认是 2 个空格历史原因早期的阿里巴巴 Java 开发规范习惯用 2 个空格缩进该开源项目的作者是阿里巴巴的一位工程师所以就是缩进两格。如何修改在你的配置好后的.vimrc中找到以下几行通常在 50-52 行左右set tabstop2 set softtabstop2 set shiftwidth2如果你习惯了 4 个空格直接把这三个数字改成4即可set tabstop4 set softtabstop4 set shiftwidth4保存退出后重新打开文件写代码你会发现回车自动缩进变成了 4 个字符宽度。结语