1

VIM学习笔记 环绕字符编辑(surround)

 2 years ago
source link: http://yyq123.blogspot.com/2020/07/vim-plugin-surround.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

安装配置

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

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

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

新增环绕字符

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

模式目标
范围新增
内容原始文本命令更改效果 常规模式单词字符Hello Worldysiw*Hello *World* 单词标签Hello Worldysiwt<strong>Hello <strong>World</strong> 单词括号print var1, var2ys3w)print (var1, var2) 行尾括号print var1, var2ys$)print (var1, var2) 查找标签William Shakespeare said,
"Brevity is the soul of wit."ysf"t<em>William Shakespeare said,
<em>"Brevity is the soul of wit."</em> 整行字符Hello Worldyss""Hello World" 整行标签Hello Worldysst<p><p>Hello World</p> 整行新行Hello WorldySS""
Hello World
" 插入模式引号<CTRL-g>s""" 标签<CTRL-g>S<html><html>

</html> 字符可视化模式选中的文本括号print var1, var2veeS)print (var1, var2) 行可视化模式选中的文本标签The passion to save humanity is a
cover for the desire to rule it.VjS<p><p>The passion to save humanity is a
cover for the desire to rule it.</p> 块可视化模式选中的文本标签Item 1
Item 2
Item 3<Ctrl-Q>$jjS<li><li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
  1. 插入模式下的操作:
    • 首先同时按下CTRL-g键;
    • 然后松开CTRL键;
    • 最后点击s或S键,并输入环绕字符或标签。
  2. 可视化模式下的操作:
    • 首先使用快捷键进入不同类型的可视化模式。
      比如在Windows下,使用CTRL-Q键进入块视化模式;
    • 然后使用j等移动命令来选中文本;
    • 最后点击S键,并输入环绕字符或标签。

修改环绕字符

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

目标范围替换内容原始文本命令更改效果 单词引号"Hello World"cs"''Hello World' 单词标签及新行'Hello World'cS'<p><p>
Hello World
</p> 单词标签<p>Hello World</p>cst<h1><h1>Hello World</h1> 单词引号Hello World!csw'Hello 'World'! 单词及标点引号Hello World!csW'Hello 'World!' 单词括号(1,2,3)cs)][1,2,3] 单词括号及空格(1,2,3)cs)[[ 1,2,3 ]

删除环绕字符

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

目标范围新增内容原始文本命令更改效果 单词引号'Hello World'ds'Hello World 单词括号(123+4*56)/2ds(123+4*56/2 单词标签<div>Hello</div>dstHello

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<上一篇 | 目录 下一篇>


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK