news 2026/4/23 20:19:13

Vim实用技巧不装插件也能高效

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vim实用技巧不装插件也能高效

服务器上改配置文件,只有vim能用。

很多人的vim使用方式:打开文件 → 疯狂按i → 改完按Esc → 试各种方式退出 → :wq!

其实vim用好了效率很高。这篇分享一些实用技巧,都是原生功能,不用装插件。

先把基础搞对

模式

vim有几种模式:

  • Normal模式:默认模式,用来移动和操作
  • Insert模式:输入文字,按i进入
  • Visual模式:选择文本,按v进入
  • Command模式:执行命令,按:进入

核心思想:Normal模式才是常态,大部分时间在这个模式下。

移动

方向键能用,但hjkl更快(手不用离开主键盘区):

h - 左 j - 下 k - 上 l - 右

更高效的移动:

w - 下一个单词开头 b - 上一个单词开头 e - 当前单词结尾 0 - 行首 ^ - 行首第一个非空字符 $ - 行尾 gg - 文件开头 G - 文件结尾 30G - 跳到第30行 Ctrl+f - 向下翻页 Ctrl+b - 向上翻页 % - 跳到匹配的括号

进入Insert模式

别只会按i:

i - 在光标前插入 a - 在光标后插入 I - 在行首插入 A - 在行尾插入 o - 在下方新开一行 O - 在上方新开一行

比如想在行尾加内容,按A比按$li少一个键。

保存退出

:w - 保存 :q - 退出 :wq - 保存退出 :q! - 不保存退出 :x - 保存退出(同:wq) ZZ - 保存退出(Normal模式下) ZQ - 不保存退出

编辑操作

vim的编辑操作遵循一个模式:操作符 + 动作

操作符:

  • d - 删除
  • c - 修改(删除并进入Insert模式)
  • y - 复制
  • v - 选择

动作:

  • w - 到下一个单词
  • $ - 到行尾
  • 0 - 到行首
  • G - 到文件尾
  • gg - 到文件头
  • iw - 当前单词
  • i" - 引号内
  • i( - 括号内

组合起来:

dw - 删除一个单词 d$ - 删除到行尾 d0 - 删除到行首 dd - 删除整行 3dd - 删除3行 dG - 删除到文件尾 cw - 修改一个单词 c$ - 修改到行尾 cc - 修改整行 yy - 复制整行 3yy - 复制3行 yw - 复制一个单词 p - 粘贴到光标后 P - 粘贴到光标前

文本对象

这是vim最强大的地方:

diw - 删除当前单词(不含空格) daw - 删除当前单词(含空格) di" - 删除引号内的内容 da" - 删除引号及其内容 di( - 删除括号内的内容 di{ - 删除大括号内的内容 dit - 删除标签内的内容(HTML) ci" - 修改引号内的内容 ci( - 修改括号内的内容

比如有这样的代码:

print("Hello, World!")

光标在引号内任意位置,按ci"可以直接修改引号里的内容。

撤销重做

u - 撤销 Ctrl+r - 重做 . - 重复上次操作

点号是神器。比如删除了一行(dd),然后移到其他地方按.,又删除一行。

查找替换

查找

/pattern - 向下查找 ?pattern - 向上查找 n - 下一个匹配 N - 上一个匹配 * - 查找光标下的单词 # - 反向查找光标下的单词

替换

:s/old/new/ - 替换当前行第一个 :s/old/new/g - 替换当前行所有 :%s/old/new/g - 替换全文所有 :%s/old/new/gc - 替换全文,每次确认 :10,20s/old/new/g - 替换10-20行

实用场景

删除所有空行:

:g/^$/d

删除所有包含某字符串的行:

:g/pattern/d

在所有行末尾加分号:

:%s/$/;/

删除行尾空格:

:%s/\s\+$//

多文件操作

打开多个文件

vimfile1 file2 file3

在vim里切换:

:n - 下一个文件 :N - 上一个文件 :e file - 打开另一个文件 :ls - 列出所有打开的文件 :b2 - 切换到第2个文件

分屏

:sp file - 水平分屏 :vsp file - 垂直分屏 Ctrl+w w - 切换窗口 Ctrl+w h/j/k/l - 切换到指定方向的窗口 Ctrl+w = - 让所有窗口一样大 :only - 只保留当前窗口

标签页

:tabnew file - 新标签页打开文件 gt - 下一个标签页 gT - 上一个标签页 :tabclose - 关闭标签页

实用配置

在服务器上编辑~/.vimrc:

" 显示行号 set number " 相对行号(跳转方便) set relativenumber " 语法高亮 syntax on " 搜索高亮 set hlsearch " 搜索时即时匹配 set incsearch " 忽略大小写(搜索时) set ignorecase set smartcase " Tab设置 set tabstop=4 set shiftwidth=4 set expandtab " 显示匹配的括号 set showmatch " 自动缩进 set autoindent " 显示光标位置 set ruler " 允许backspace删除 set backspace=indent,eol,start " 显示当前模式 set showmode " 编码 set encoding=utf-8 " 不产生swap文件 set noswapfile " 搜索到文件末尾自动回到开头 set wrapscan

复制到服务器上一次,以后都能用。

命令行技巧

执行shell命令

:!ls - 执行ls :r !date - 把date命令的输出插入到文件 :w !sudo tee % - 以root权限保存(忘记sudo vim时)

录制一系列操作,然后重复执行:

qa - 开始录制到寄存器a ... - 执行操作 q - 停止录制 @a - 执行宏a 10@a - 执行宏a 10次

比如需要给20行都加上引号:

qa - 开始录制 I" - 在行首加引号 <Esc>A" - 在行尾加引号 <Esc>j - 移到下一行 q - 停止录制 19@a - 对剩下19行执行

寄存器

vim有多个剪贴板(寄存器):

"ayy - 复制当前行到寄存器a "ap - 从寄存器a粘贴 "+yy - 复制到系统剪贴板 "+p - 从系统剪贴板粘贴

标记

在文件里打标记,方便跳转:

ma - 在当前位置打标记a 'a - 跳到标记a '' - 跳回上次位置

快速参考卡片

# 移动 h/j/k/l 方向 w/b 单词 0/$ 行首/行尾 gg/G 文件头/尾 Ctrl+f/b 翻页 # 编辑 i/a 插入 o/O 新行 x 删字符 dd 删行 yy 复制行 p 粘贴 u 撤销 . 重复 # 文本对象 diw 删词 ci" 改引号内 di( 删括号内 # 查找 /pattern 查找 n/N 下/上一个 :%s/a/b/g 全局替换 # 文件 :w 保存 :q 退出 :e file 打开 :sp/:vsp 分屏

vim的学习曲线确实陡,但值得。

不用一下子全学会,先把基础移动和编辑搞熟,其他的用到再查。

用几次就记住了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 16:54:12

ggplot2数据可视化:5个实用技巧快速提升你的图表专业度

ggplot2数据可视化&#xff1a;5个实用技巧快速提升你的图表专业度 【免费下载链接】ggplot2 项目地址: https://gitcode.com/gh_mirrors/ggp/ggplot2 想要让你的数据图表从平庸变得专业吗&#xff1f;ggplot2作为R语言中最强大的可视化工具&#xff0c;通过图形语法理…

作者头像 李华
网站建设 2026/4/18 7:45:36

基于Docker的PyTorch-CUDA-v2.7镜像部署方法与优化技巧

基于Docker的PyTorch-CUDA-v2.7镜像部署方法与优化技巧 在深度学习项目中&#xff0c;最令人头疼的往往不是模型设计本身&#xff0c;而是“为什么代码在我机器上能跑&#xff0c;在你那里就报错&#xff1f;”——这种经典的环境不一致问题几乎困扰着每一个AI团队。尤其当项目…

作者头像 李华
网站建设 2026/4/23 8:21:06

绝了!860KB 窗口信息工具,揪出流氓弹窗老巢

测 WhoAreYou 的时候&#xff0c;我突然想起另一款压箱底的神器 ——窗口信息小工具&#xff0c;简直是流氓弹窗的 “克星”。 下载地址&#xff1a;https://pan.quark.cn/s/685bb13c5b89 备用地址&#xff1a;https://pan.baidu.com/s/1t7O3KblsQuZSOOU0xVEdAw?pwdydf5 本体…

作者头像 李华
网站建设 2026/4/23 16:58:28

DeepSpeed物流运输路径优化:突破传统瓶颈的智能调度实战

DeepSpeed物流运输路径优化&#xff1a;突破传统瓶颈的智能调度实战 【免费下载链接】DeepSpeed DeepSpeed is a deep learning optimization library that makes distributed training and inference easy, efficient, and effective. 项目地址: https://gitcode.com/GitHub…

作者头像 李华
网站建设 2026/4/22 2:24:47

Jumpserver 堡垒机连接 Windows 服务器的 VNC 解决方案全解析

Jumpserver 堡垒机连接 Windows 服务器的 VNC 解决方案全解析 【免费下载链接】JumpServer 广受欢迎的开源堡垒机 项目地址: https://gitcode.com/feizhiyun/jumpserver 作为一款广受欢迎的开源堡垒机系统&#xff0c;Jumpserver 提供了多种远程连接方式来管理不同类型的…

作者头像 李华