新闻详情

新闻详情

首页 / 资讯中心 / 详情

vim全选、全部复制、全部删除:模式与寄存器核心操作详解

发布时间:2026/9/25 7:30:03来源:尧图网络
vim全选、全部复制、全部删除:模式与寄存器核心操作详解
刚接触Linux的人十有八九会在vim里卡住。图形编辑器里CtrlA全选、CtrlC复制、CtrlD删除一套肌肉记忆带进终端结果vim愣是没反应。这个场景我见过太多次有人以为vim坏了有人干脆放弃还有人直接在终端里怒按Esc撞运气。今天这篇就把“vim全选、全部复制、全部删除”这三个最基础也最刚需的操作讲透——这三个操作看着简单背后牵扯的却是vim最核心的模式概念、寄存器机制和范围语法。读完你会明白vim里没有全选快捷键但有比你想的更顺手的全选命令组合。这篇内容适合刚上手Linux、在vim里删东西复制东西不顺手的同学也适合工作几年但一直靠方向键和退格键凑合的同事。1. vim全选的底层逻辑先弄懂模式和“选择”这件事1.1 vim的三种模式为什么CtrlA在vim里没反应vim和记事本最大的不同是它有多套“输入状态”。正常打开文件时你处在普通模式这时候按什么键都不是往里打字而是对文本发出命令。按i进入插入模式才能像记事本一样敲字。按v或V进入可视化模式这才是用来“选中文本”的地方。很多新手犯的错就是在插入模式里按CtrlA结果完全没反应或者更玄乎——你把光标前面的数字悄悄加了1。没错vim里的CtrlA默认是“将光标前的数字加一”不是全选。普通模式下按v进入字符可视模式按V进入行可视模式按CtrlV进入块状可视模式。全选这件事本质是“从文件第一行选中到最后一行”对应行可视模式。理解了这套逻辑你就不会满世界去找“vim全选按钮”了——它根本不存在有的只是命令组合。这也是Linux常用命令里vim老是显得难学的真正原因它不是一套菜单而是一门语法。1.2 全选命令是拼出来的gg V Gvim给人“记不住”的感觉因为它的命令不是孤立快捷键而是像短语一样有词根。全选最简单的方式普通模式下依次按gg、V、G。gg是跳到文件首行V进入行可视模式并选中当前行G跳到文件尾行——三步一组合可视高亮区就从第一行覆盖到最后一行也就是“全选”。另一条全选思路是“范围选择”。vim的语法是“范围命令”%这个符号整体表示“整个文件”所以许多操作可以直接用:%开头。比如:%d就是删除全部:%s/foo/bar/g就是全文件替换。这两套思路建议都记住后面会反复用到。很多网上流传的vim常用命令总结往往直接甩一串快捷键其实不如理解这层语法来得牢。你一旦明白“跳到哪、选什么、执行什么动作”的套路哪怕忘了个别按键也能自己拼出来。2. 实操核心全选、复制、删除、粘贴四组命令2.1 全选ggVG以及如何确认自己全选成功实操顺序是这样的先按两下Esc确保自己处于普通模式。接着依次按gg、V、G。屏幕左侧会出现一个从第一行一直高亮到最后一行的区域这就代表全选成功。如果文件是空的你会发现高亮只有一行因为空文件本来就只有一行。这里有几个细节值得留意。第一大小写不能错V是大写G是大写小写g只是滚屏。第二如果在中文输入法状态下按这些键vim可能根本收不到正确的字符所以操作前先切到英文输入法。第三按得太快也不是不行有些人会麻利地连击ggVG挺爽但前提是你要清楚自己在按什么。我个人建议新手拆开按按一步停一下看清楚屏幕反馈肌肉记忆留给后面那几百次实战。2.2 全部复制ggVGy、y 与寄存器概念选中全部之后按y复制。所以完整的全选复制命令是ggVG再加上y。这里的y是yank抽出、复制的意思。复制完按p粘贴到光标之后按P粘贴到光标之前。这套操作在vim内部是畅通的。但这里有一个经典大坑默认情况下y复制的内容放在vim内部的“未命名寄存器”里只在vim进程内共享不会自动进入系统剪贴板。所以你在vim里复制完切到浏览器CtrlV什么都没发生。想复制到系统剪贴板就要用y先输入英文双引号再输入再按y。这个操作的意思是“把文本yank到加号寄存器”而加号寄存器恰好对应系统剪贴板。完整写出来就是ggVGy看着很长念出来其实就一句全选复制到系统剪贴板。vim的寄存器体系很像一排抽屉默认的抽屉是未命名寄存器还有0到9的数字寄存器存最近删除和复制的历史以及a到z的命名寄存器还有和*这两个跟外界交互的剪贴板通道。搞懂寄存器你的复制粘贴水平会直接上一个档次。后面第3章我会专门讲系统剪贴板的问题。2.3 全部删除ggdG 和 :%d全选再删除的操作是ggVG再按d但更直接的做法是普通模式下输入ggdG。拆解一下gg到首行d是删除动作G是“到文件末尾”。连起来就是把从当前行到末尾的所有内容删掉因为当前行就是首行所以效果等于删光全部内容。另一种更通用的方式是:%d。冒号进入命令行模式%d表示删除所有行。这两种方式有什么区别直观感受是ggdG按键快但:%d更符合“范围命令”的语法习惯也更方便扩展比如:5,20d就是删除第5行到第20行。删除之后想反悔按u撤销一步就能恢复整份文件。如果你只想删除当前行按dd就行想删10行按10dd。这些组合可以一句一句积累起来。如果你手头有个文件要“整份清空但要保留空文件”可以:%d然后:w保存文件就变成一个空文件。注意这里删的是文件内容不是文件本身文件还占着一个inode这在后面讲文件删除时会再次提到。2.4 粘贴、保存退出和撤销操作闭环复制和删除之后通常要落地到文件里。:wq保存并退出:wq!强制保存退出ZZ也是保存退出但不用输冒号。误删了全文件按u撤销多按几次能一步步回滚。vim的撤销是“按操作记录”的一个命令组合算一次操作所以ggdG一个u就能整文件恢复。很多新手老问“vim如何保存退出”其实记住三件事就行半路想退出但不保存用:q!保存退出用:wq顺手保存用ZZ。打开文件一看什么都懂关上文件又什么都忘这是正常的命令不是背的是用出来的。我建议你新建一个测试文件把第2章这几条命令从头到尾敲三遍肌肉记忆基本就形成了。下面这张速查表可以直接收藏功能命令组合说明全选ggVG从第一行选中到最后一行全选复制vim内部ggVGy复制到未命名寄存器只能vim内用全选复制系统剪贴板ggVGy依赖vim的clipboard支持全部删除ggdG 或 :%d两种等价写法粘贴p / Pp光标后P光标前保存退出:wq 或 ZZ保存并退出强制退出不保存:q!放弃修改撤销u撤销上一次操作3. 系统剪贴板交互为什么复制不进系统剪贴板3.1 检查你的vim是否支持系统剪贴板在终端输入vim --version | grep clipboard看结果里是clipboard还是-clipboard。如果是减号说明当前vim编译时没带剪贴板支持这时候你按y根本没反应因为vim根本找不到系统剪贴板。很多Linux发行版默认装的vim-tiny就是这种情况。解决办法是安装功能完整的vim。Debian/Ubuntu系列装vim-gtk3或者vim-noxCentOS/RHEL系列装vim-enhancedmacOS自带vim一般也能用但用MacVim体验更稳。装完再执行一次上面那条检查命令看到clipboard就放心了。这个知识点也可以归入“Linux常用命令大全”里的环境排查项问题往往不是你不懂快捷键而是软件包本身缺胳膊少腿。3.2 让复制粘贴跨越应用边界寄存器和xclipvim的寄存器体系里号寄存器对应系统剪贴板*号寄存器在X11环境下常指鼠标中键的“主剪贴板”。想从vim复制到浏览器进入可视模式选中内容后按y回浏览器CtrlV。反过来在浏览器里复制文本回vim按p粘贴完成。Linux图形终端下还有更直接的招选中内容后在vim插入模式下按鼠标中键直接粘贴当前选区。这是X11的primary selection机制不经过系统剪贴板很多老Linux用户靠这个“选中即复制、中键即粘贴”过活。如果你是纯SSH环境、没有图形界面寄存器可能也不顶用。这时一个可靠方案是在vim里:%d以外的任何内容只要想送出去就可以用命令行的方式执行:w !xclip -selection clipboard把整个文件内容送入xclip再到图形端CtrlV。关于xclip的具体安装不同发行版包管理器略有差异这里不展开但思路是通用的vim负责文本xclip负责和系统剪贴板打交道。3.3 无权限删除场景vim保存与系统文件权限热搜词里有个“你需要来自administrators的权限才能删除”Windows用户很熟Linux下同样有类似的权限问题。比如在vim里打开系统文件/etc/nginx/nginx.conf普通用户保存时很可能提示“E45: readonly option is set”或者“Permission denied”。这不是vim坏了而是你对这个文件只有读权限、没有写权限。处理方式有几种。第一种是sudo vim直接打开文件编辑保存时就有root权限第二种是修改内容后:w!强制写入但前提是当前进程有足够权限第三种是调整文件权限比如chmod、chown但系统配置文件不建议乱改属主用sudo是更稳妥的路子。这里还要区分“删除文件内容”和“删除文件本身”。vim里的“全部删除”删的是内容文件还在磁盘上。真正删除文件是shell的活用rm遇到Permission denied就sudo rm。Linux删除文件夹命令是rm -rf 目录名但这个命令杀伤力极大我见过不止一次有人手滑把整个项目删了所以敲之前务必反复确认路径。想清空文件内容又保留文件本身可以:%d 然后:w也可以在shell里执行cat /dev/null 文件名效果类似。4. vim常见问题与排查技巧实录4.1 复制到Word/网页后格式全乱从vim里复制出来的内容是纯文本没有富文本格式。如果你从vim复制一段代码到Word发现换行、缩进全乱这不是vim的锅是目标软件接管粘贴时自己动了格式。解决思路之一粘贴到终端时先:set paste再粘贴。set paste的意思是临时关闭自动缩进这样外来的文本不会在我的行上叠出新缩进。很多新手遇到“复制过去格式不一样”真正原因往往是粘贴到vim时没有set paste导致每一行都被塞上前一行的缩进整个代码块面目全非。另一个更稳妥的用法是从vim复制到浏览器或文档之前先经过一个纯文本编辑器过渡一遍。比如复制到notepad再复制走格式就干净了。在终端vim里粘贴外部内容除了:set paste还可以直接用终端的“粘贴”快捷键比如CtrlShiftV绕过vim的自动缩进。记住一个原则vim里粘贴外部文本要么:set paste要么用终端快捷键别直接CtrlV。4.2 全选删除大文件卡顿或内存占用高如果vim打开的是一个几百MB的日志文件执行ggdG或:%d都可能卡几秒甚至无响应。原因是vim要一次性处理所有行的高亮、撤销记录和内存结构。我建议处理超大文件时别用vim硬扛确认要清空就直接在shell里用重定向 文件名注意这个命令会瞬间清空文件没有撤销缓冲别乱用。如果只是想快速查看或截取可以用less、head、tail、grep配合。比如tail -f能看到实时日志grep能过滤关键行。vim适合编辑中小型文本100MB往上就该考虑其他工具了。很多人踩过“vim打开大日志然后假死”的坑其实一开始就不该用vim开这种东西。4.3 误操作后恢复文本的几种路子最怕的是复制完没粘贴手一抖按了d全删或者保存时手滑:wq把空文件覆盖了原文件。救法有三条。第一vim里按u撤销如果已经退出vim离开前可以用:undo或者查看swap文件——vim异常退出时会留下同目录下的.swp文件里面存着最近编辑的内容。第二如果文件被空覆盖检查有没有.bak备份很多人配了set backup选项保存时会自动把原文件复制一份。第三重要文件编辑前养成cp一份的好习惯成本非常低。这里补充一句Linux下的“撤销”哲学命令行工具大多数没有撤销rm删了就没了重定向清了就清了。所以重要的事说三遍备份、备份、备份。vim里按u撤销只能救编辑过程的错救不了文件系统的错。4.4 速查对照表全选复制删除相关命令一次带走整理一张比上面更完整的表照着敲就行操作命令说明全选ggVG普通模式下执行复制选中内容到vim内部y配合可视模式使用复制选中内容到系统剪贴板y在选中后执行将系统剪贴板内容粘贴进vimp粘贴到光标后粘贴外部内容并避免缩进错乱:set paste 后粘贴粘贴完:set nopaste全部删除ggdG 或 :%ddG快捷键%d更通用清空并保存:%d 然后 :w文件变成空文件只删除当前行dd最高频小操作删除光标起10行10dd可替换任意数字保存退出:wq 或 ZZ常用不保存退出:q!放弃修改5. 从全选全删扩展到高效编辑5.1 把命令当语法学操作符范围vim为什么强大是因为它组合性极强。全选全删的本质是三个构件跳转命令gg、G、动作命令y、d、模式切换V。理解了它们你可以自由组合yG复制到文件尾dgg删除到文件头10dd删10行:5,20d删除第5到第20行。除了y和d还有c修改、p粘贴、u撤销它们都接受范围和量词。这样你的记忆成本大大降低碰到没见过的需求也能自己推测。用生活类比来说vim命令就像中文句子范围是定语动作是谓语对象是宾语。比如“把第5到20行删掉”就是:5,20d“把当前行复制一份放到下一行”就是yyp。一旦你习惯了这种句法就不需要再“背命令”了而是“组织句子”。5.2 高频场景批量替换、调整缩进、跳转定位比如全选后统一缩进ggVG再按增加缩进或减少缩进。再比如想把文件末尾加一大段内容直接G跳到末尾再p粘贴。批量替换是vim最挣效率的场景比如:%s/8080/9090/g就是把全文件里的8080全部替换成9090和全选复制删除一样都依赖“范围”这个核心概念。建议在.vimrc里配置set number显示行号、set mousea允许鼠标拖选。不过开了mousea之后要注意用鼠标选中文本会直接进入可视模式复制时时选中的是vim内部选区想进入系统剪贴板还得配合y。vi/vim内置的vimtutor命令也值得花半小时走一遍初学阶段越早过越好。5.3 我的个人习惯用vim这些年我其实很少真的“全选整个文件”更多是直接用%范围。改配置文件多数是:%s/旧值/新值/g清空模板文件就ggdG。全选整文件的高频场景基本是“把日志清理掉”“把一段模板内容整体挪走”这两类。无论哪种基本功都是先理解模式、寄存器、范围这三个概念。最后再分享一个小技巧如果你在vim里全选复制完发现系统剪贴板里没有九成是clipboard没开别急着重装系统先跑一下vim --version | grep clipboard。另一个我踩了很多年的坑是在终端里粘贴外部代码时忘了:set paste导致缩进层层叠加后面排查了半天发现是自动缩进在捣鬼。如果你刚起步就从这篇文章里的四组命令开始练顺手之后你会发现所谓的“vim难学”其实只是没人把模式、寄存器、范围这三件事先讲清楚罢了。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Linux开机启动脚本设置:rc.local、cron @reboot与systemd实战选型指南 2026/9/25 8:00:51

Linux开机启动脚本设置:rc.local、cron @reboot与systemd实战选型指南

1. 开机启动脚本:不是“配完就完事”,而是系统稳定性的第一道防线在Linux运维现场干了十多年,我见过太多因为开机启动配置翻车的案例:数据库服务没等MySQL初始化完就强行启动,结果主从同步直接断裂;监控脚本…

阅读更多 →
DeepSeek与Codex集成上下文长度实战调优指南 2026/9/25 8:00:51

DeepSeek与Codex集成上下文长度实战调优指南

1. 这不是调参,是重新定义模型“呼吸空间”的实战你有没有遇到过这样的情况:在 Codex 环境里调用 DeepSeek 模型时,刚写到第3278个 token,系统突然返回context window exceeded;或者更隐蔽的——明明提示“响应生成成功…

阅读更多 →
pip不是内部或外部命令?一文搞定pip安装、换源与报错排查 2026/9/25 8:00:44

pip不是内部或外部命令?一文搞定pip安装、换源与报错排查

说实话,Python新手最容易卡住的第一个点,大概率就是那句刺眼的“pip不是内部或外部命令”。第一次看到它,很多人会下意识觉得自己Python没装好,甚至想卸载重装。其实pip没那么神秘,它就是Python自带的包管理工具&#…

阅读更多 →
Docker 部署 Hermes 智能体:接入 DeepSeek 与工作流编排实战 2026/9/25 8:00:44

Docker 部署 Hermes 智能体:接入 DeepSeek 与工作流编排实战

1. 为什么要在本地用 Docker 跑 Hermes 智能体第一次接触 Hermes 智能体的人,十有八九会卡在同一个地方:官方文档给的是"云端一键部署"或者"桌面版双击安装",但真到自己手里那台常年开着一堆服务的机器上,就发…

阅读更多 →
开源项目G-Star推荐官计划解析与实操指南 2026/9/25 8:00:37

开源项目G-Star推荐官计划解析与实操指南

1. 开源生态中的G-Star推荐官计划解析开源社区的发展离不开优秀项目的持续涌现和开发者的积极参与。AtomGit平台推出的G-Star推荐官计划,为已经获得G-Star认证的项目维护者提供了一个独特的参与机会。这个计划本质上是一个优质开源项目的发现与推荐机制,…

阅读更多 →
自建CRM实战:DeskcommCRM部署、权限管理与数据安全指南 2026/9/25 8:00:37

自建CRM实战:DeskcommCRM部署、权限管理与数据安全指南

做销售管理的朋友,大概率都动过“自己搞一套CRM”的念头,尤其是当你发现市面上的免费CRM越用越别扭,收费CRM又贵得肉疼的时候。我团队之前就卡在这个点上,客户资料散在好几个人的微信和Excel里,月底统计全靠人工对表&a…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉