当前位置: 首页 > news >正文

vim 全局替换_推荐一些VIM操作技巧

VIM 学习成本不低,但是习惯了爱不释手。熟能生巧(死记硬背),共勉。

34ba8ada9ef1fea9d46f1964301ef560.png

VIM 冒险小游戏 http://vim-adventures.com/

移动

文本

  • w 移动到下一个单词
  • e 移动到单词结尾
  • 一个很长的单行文本光标如何上下移动?jk 已经无法上下移动了,可以使用 gj、gk。

屏幕

  • H 屏幕的第一行
  • M 屏幕的中间一行
  • L 屏幕的最后一行
  • Ctrl-e 向下滚动一行
  • Ctrl-y 向上滚动一行

段落

  • ( 前移至最近的句首
  • ) 后移至最近的句首
  • { 前移至最近的段首
  • } 后移至最近的段首

选择与编辑

  • de 删除一个单词
  • ggVG 选择整个文件
  • ggdG 删除整个文件
  • ~ 切换大小写
  • : /pattern\c 搜索忽略大小写
  • :%s/pattern/replace/g 全局替换
  • v 进入可视化模式,Ctrl+v 进入列选择模式,G 可以移动到最后一行,d 可以删除选中的文本;r 开启替换模式;I 开启插入模式,ESC 之后可以看到批量插入的内容。
  • cw 删除当前单词
  • c$ 删除光标至行尾
  • zo 展开
  • zc 收起,删除函数可用
  • :%s/pattern//gn. 统计字符串出现的次数
  • t, 移动到逗号前的第一个字符, 逗号可以换成其它字符。
  • g; 回到上次修改的位置。
  • u 撤销,Ctrl-r 重做

点命令

点命令:重复上一次操作,这个命令很好用!强烈推荐。

  1. 日常文本搜索和替换

    ciw 删除当前单词后,输入替换文本,在下一个相同单词处按 . 可执行相同的操作效果。

  2. 文本删除

    dd dw 删除文本,再按 . 有时候比 d5w 更习惯一些。

  3. 搜索匹配编辑文本

    比如上述 dw 删除单词后, / 搜索,n. 替换下一处匹配文本。

缓冲区

VIM 是支持 a-z 的命名缓冲区的,例如 "ayy,可以将当前行复制到缓冲区 a,"ap 可以粘贴缓冲区 a 的内容。

不过缓冲区这个功能在 MAC 上有了 Paste 之后已经对我没什么特别大用处了。

可以看我之前推荐的一些 MAC 效率软件:离开这几款MAC软件可能不会工作了

分屏

  • :split 上下分屏
  • :vsplit 左右分屏
  • Ctrl-w 配合 hjkl 可左右在分屏之间移动

宏录制

日常工作中,重复的批量操作特别多,相信大家都用过IDEA的列编辑操作,VIM 一样可以实现类似的效果,来简单对比一下。

  • IDEA 列编辑

    602e614fd98f06caa81f7c4a6f9bd248.gif
    idea_col_edit
  • VIM 宏录制

    c2aa33e9d9dfafe50515a9914ac26541.gif
    vim_macro
    • qa 开始录制宏,保存在寄存器 a 中。
    • 完成操作序列。
    • q 完成宏录制。
    • @a replay 被录制的宏。
    • @@ replay 最新录制的宏。
    • 4@a 重复 replay 4 次宏。

IDEA 列编辑在文本非常大时会比较卡,相比之下 VIM 宏录制的效率很高,强烈推荐学习下,找到自己合适的方式。

相关文章:

  • zookeeper 分布式锁_zookeeper分布式锁最完美实现Curator剖析
  • 南昌
  • 思科wlc产品文档_基于Catalyst 9800 无线控制器的思科OEAP远程办公解决方案
  • 留记
  • ubuntu golang指定glibc版本_Go Lang 开发笔记《使用 Go Lang 搭建一个 Web 服务!》
  • 装机后进不了bios_是生产力也是游戏主力,12.7升A4风冷小钢炮装机体验
  • 差了点什么呢?
  • 黑盒测试和白盒测试_黑盒测试是什么及其测试方法
  • kmem 反编译linux内核_Linux 内核 VS 内存碎片 (上)
  • 总有一些人可以超越死亡——leo荐书(5)
  • 【转】为什么我认为每个程序员都应该用Mac OS X?
  • 用yacc编写的算术运算计算器_Android版科学计算器 Casio business 下载
  • 【转】开发人员为何应该使用 Mac OS X 兼 OS X 小史
  • ps 去掉一个人_电脑没有ps软件?只需要这个网站就能帮你搞定
  • rs多个设备同时传输_华为账号真的能同时登陆多个设备吗?华为官方的介绍来了...
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • ES6系列(二)变量的解构赋值
  • HTML中设置input等文本框为不可操作
  • IP路由与转发
  • js操作时间(持续更新)
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • React的组件模式
  • Spring Boot快速入门(一):Hello Spring Boot
  • 从零开始学习部署
  • 使用 @font-face
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 硬币翻转问题,区间操作
  • 优秀架构师必须掌握的架构思维
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 正则学习笔记
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • #DBA杂记1
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (附源码)php投票系统 毕业设计 121500
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (十六)串口UART
  • (一)Java算法:二分查找
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)shell调试方法
  • (转载)PyTorch代码规范最佳实践和样式指南
  • (转载)从 Java 代码到 Java 堆
  • .bat批处理(九):替换带有等号=的字符串的子串
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [20180224]expdp query 写法问题.txt
  • [4.9福建四校联考]
  • [Android]将私钥(.pk8)和公钥证书(.pem/.crt)合并成一个PKCS#12格式的密钥库文件
  • [APUE]进程关系(下)
  • [C语言][C++][时间复杂度详解分析]二分查找——杨氏矩阵查找数字详解!!!
  • [Google Guava] 1.1-使用和避免null
  • [GPT]Andrej Karpathy微软Build大会GPT演讲(上)--GPT如何训练