surround 插件可以快速编辑围绕在内容两端的字符(pairs of things surrounding things),比如成对出现的括号、引号,甚至HTML/XML标签等。

安装配置

推荐您使用vim-plug或Vundle等插件管理器,来安装GitHub上的surround插件。

以下将利用实例来介绍surround插件的主要功能,请注意:

  • 在“原始文本”列中,高亮文字表示光标所在位置;
  • 在“命令”列中,为顺序执行的命令序列。
  • 在“更改效果”列中,为命令执行之后的结果。请参考实例文件并自行测试。

新增环绕字符

在常规模式、插入模式和可视化模式下,可以分别使用ysS命令来新增环绕字符:

请注意:

  • 插入模式下的操作:

    • 首先同时按下CTRL-g键;
    • 然后松开CTRL键;
    • 最后点击sS键,并输入环绕字符或标签。
  • 可视化模式下的操作:
    • 首先使用快捷键进入不同类型的可视化模式。
      比如在Windows下,使用CTRL-Q键进入块视化模式;
    • 然后使用j等移动命令来选中文本;
    • 最后点击S键,并输入环绕字符或标签。

修改环绕字符

使用cs命令可以修改环绕字符:

删除环绕字符

使用ds命令可以删除环绕字符:

surround插件主要提供以下命令:

  • ys添加环绕字符
  • yS添加环绕字符并拆分新行
  • yss为整行添加环绕字符
  • ySS为整行添加环绕字符并拆分新行
  • cs修改环绕字符
  • cS修改环绕字符并拆分新行
  • ds删除环绕字符

surround插件可以识别并处理以下目标实体:

  • ( )
  • { }
  • [ ]
  • < >
  • `
  • "
  • '
  • t(标签)
  • w(单词)

自定义快捷键

如果查看surround插件的源码,将会发现快捷键逐一定义在surround.vim文件中:

也就是说,我们可以直接在vimrc配置文件中,重置或取消插件预定义的快捷键:

" 不定义任何快捷键
let g:surround_no_mappings = 1
" 从plugin/surround.vim复制快捷键定义
” 并按需要进行修改
nmap ds <Plug>Dsurround
nmap cs <Plug>Csurround
nmap cS <Plug>CSurround
nmap ys <Plug>Ysurround
nmap yS <Plug>YSurround
nmap yss <Plug>Yssurround
nmap ySs <Plug>YSsurround
nmap ySS <Plug>YSsurround
" 取消不需要的快捷键
"xmap S   <Plug>VSurround
"xmap gS  <Plug>VgSurround
"imap   <C-S> <Plug>Isurround
imap    <C-G>s <Plug>Isurround
imap    <C-G>S <Plug>ISurround

假设需要输入以下包含多个环绕字符的文本:

{{ nginx_root }}

由于surround插件并不支持.重复命令,如果想要新增多个成对字符,那么需要安装额外的repeat.vim插件。而死板繁琐的替代方案是,自定义快捷键来重复执行命令:

nmap <C-J> ysiw}lysiw{

使用以下命令,可以查看插件的帮助文件:

:help surround

使用感受

一,舍本逐末。为了输入环绕字符的小需求,而发明碾压一切的大轮子。颇有些杀鸡用牛刀的意味。而且平白多出来的快捷键和命令,不但冗长而且别扭,操作起来总有种有苦难言的感觉。

二,盛名之下,其实难副。对于一个被不断被提及的知名插件,从功能和体验上都差强人意,着实让人失望。也许,这就是见面不如闻名吧。

以上,皆为一家之言,还请自行斟酌。

Ver: 2.0 | YYQ<上一篇 | 目录 | 下一篇>

vim 快捷键_VIM学习笔记 环绕字符编辑(surround)相关推荐

  1. vim 快捷键_VIM学习笔记 自动补全详解(Auto-Completion Detail)

    在插入模式下,利用自动补全(Insertion-Completion)功能,vim能够根据正在输入的字符,查找匹配的关键字并显示在弹出菜单(popup menu)中.通过选择匹配项,可以补全输入的部分 ...

  2. vim 离线安装_VIM学习笔记 插件列表(Plugin)

    由于zhihu的垃圾编辑器不支持表格,请查看以下完整格式: http://yyq123.github.io/learn-vim/learn-vim-plugin.html 说明: 本列表完全基于作者的 ...

  3. 正则表达式学习笔记005--脱字符和美元符的认识与应用

    正则表达式学习笔记005--脱字符和美元符的认识与应用 以前写的课程都没有附上源码,很抱歉! 交流群1:251572072 交流群2:170933152 也可以自己下载: 正则表达式学习笔记005-- ...

  4. 正则表达式学习笔记004--连字符和范围描述符的认识与应用

    正则表达式学习笔记004--连字符和范围描述符的认识与应用 以前写的课程都没有附上源码,很抱歉! 交流群1:251572072 交流群2:170933152 也可以自己下载: 正则表达式学习笔记004 ...

  5. vim 寄存器 操作_VIM学习笔记 寄存器 (Registers)

    将寄存器与各种删除.复制.粘贴命令组合使用,能够大大提高编辑文本的效率. 指定寄存器 在复制或删除文本时,可以使用"register命令将文本放入指定的寄存器中.例如以下命令,将复制的文本放 ...

  6. vim查找关键字_VIM学习笔记 对话框(Dialog)

    查找对话框 使用以下命令,将会打开一个查找对话框: :promptfind [string] 如果在命令中指定了[string]值,那么就会查找该字符串:如果没有指定[string]值,那么将会查找上 ...

  7. linux2.6驱动学习笔记之字符驱动

    1.字符驱动组成 1.1字符驱动的模块加载与卸载 //设备结构体模板 struct xxx_dev_t { struct cdev cdev; ...... }xxx_dev; 在字符驱动模块加载函数 ...

  8. vi(vim)编辑器 学习笔记

    vi是非图形化的编辑器 vim是vi的加强版. 三种使用模式 一般模式用户可以进行光标的移动,删除字符以及复制 编辑模式下,用户可以插入或者删除字符 命令模式下,可以保存文件或者退出编辑器 移动操作 ...

  9. 18离线帮助文档_VIM学习笔记 Zeavim离线文档查看器

    Zeal是开源的跨平台软件,用于离线浏览各种开发文档.Zeal使用Dash提供的文档集(Docsets),涵盖近200种开发语言. Zeavim插件,可以在Vim中调用Zeal来查看离线文档. 安装配 ...

最新文章

  1. g标签 怎么设置svg_SVG(可缩放矢量图形)图片添加、高斯模糊、渐变与g标签
  2. js的时间函数实现一个电子表
  3. 给thinkphp加个分页样式
  4. svm 图片加标签_基于半监督的SVM多标签图数据分类算法研究
  5. Chapter7-5_Multilingual BERT
  6. 四川大学锦城学院计算机考试题,四川大学锦城学院期考试试题(B卷)_15889.doc
  7. 变身吧,无人机:多种姿势可以选择,你喜欢X还是O?
  8. 抽象类继承 java_java继承抽象类
  9. OFFICE拼写语法检查:全部忽略、全部更正的功能
  10. ArcMap下停靠栏的设计与实现
  11. mysql 修改 character_set_database_如何将character_set_database latin1 改为 gbk(转)
  12. OpenNI和Kinect安装中文教程
  13. 程序员跳槽和面试,猎头不会告诉你的那些事儿
  14. 透过数字化转型再谈数据中台(三):一文遍历大数据架构变迁史
  15. Linux的进程空间管理
  16. 爱创课堂每日一题第二十三天- Expires和Cache-Control?
  17. APP被Rejected 的各种原因翻译(转)
  18. v.douyin.com生成制作抖音缩短口令网址php接口方法
  19. android逆向知乎,Android逆向之路---为什么从后台切换回app又显示广告了
  20. 电赛公开课整理(一),电路基础,截图+模电知识【15000字】【原创】

热门文章

  1. .NET开发框架 ABP
  2. Prettier 是 javascript 代码灵活美化工具
  3. 《Mining Text Data》阅读笔记---第1章 An Introduction to Text Mining
  4. 关于在自己的程序中使用其它窗口的菜单
  5. Keras中RNN、LSTM、GRU等输入形状batch_input_shape=(batch_size,time_steps,input_dim)及TimeseriesGenerator详解
  6. php后缀名隐藏,php隐藏后缀名的方法是什么
  7. hadoop的同类技术_Hadoop和Spark的区别是什么?现在都流行用哪种技术?
  8. java 导出密钥_java-如何从密钥库中导出.key和.crt
  9. amp sqlserver中 什么意思_股票术语中的做空到底是什么意思?
  10. 请求过程中,需要证书认证,这种情况下如何处理