前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >转战 VIM-效率最高化

转战 VIM-效率最高化

作者头像
szhshp
发布2022-08-21 16:05:40
3850
发布2022-08-21 16:05:40
举报

Sublime Text

有些时候确实 VIM 比普通操作要更快,特别是在录制宏并使用的时候。

除此之外其实很多 IDE 可以代替 VIM 的部分功能,甚至可视化页面使得操作更简易。

既然 Sublime Text 可以支持 Vim1,那么完全可以了解一下

让 Sublime Text 支持 Vim

preference - settings - user

将 ignored_packages 设置为空

代码语言:javascript
复制
	{
	    "color_scheme": "Packages/Color Scheme - Default/Monokai Bright.tmTheme",
	    "font_size": 13.0,
	    "ignored_packages":[]
	}

但是这样不支持 Command,需要重新 install 一个 VintageEx 的 package

注意,Sumlime 下很多原生命令和 Vim 的命令冲突,这个可以根据需求进行取舍

Vim

编辑模式

  1. 普通模式下按下 i 进入插入模式:1. 插入模式下按下 Esc 进入普通模式

如果不确认在哪个模式就按两下 Esc 回到普通模式

普通模式

Hints:1. {char} 指任何可输入单个字符

  1. <CR>Enter 按键
  2. <C-{char}> 指按住 Ctrl 然后按下 {char} 对应的按钮

简单命令

命令码

含义

Comment

h j k l

光标左,下,上,右

x

删除一个字符

.

重复上次编辑行为,重复命令码之前执行的所有编辑行为

圆点符号

u

撤销

>

增加缩进

wbe

正向移动到下一单词的开头反向移动到上一单词的开头正向移动到下一单词的结尾

改为大写按钮后则不按照单词移动,按照字串移动

c

修改

从当前字符修改至单词末尾: cw修改整个单词: caw

d

删除光标所在整个单词

删除整个单词: daw删除整个段落: dap

<C-a>

对选中的数字进行加 1 对选中的数字进行减一

对负数也有效

f{char}

在行内查找下一指定字符

继续查找下一个: ;继续查找上一个: ,

/pattern<CR>

在文档中查找下一处匹配项

继续查找下一个: n继续查找上一个: N

?pattern<CR>

在文档中查找上一处匹配项

同上

:s/target/replacement

替换

继续替换下一个: &回退: u替换特定行范围内的文字: {num},{num}s/old/new/

$

行尾

单独使用可以跳到行尾,也可配合其他命令使用

r

替换

可以替换单个字符,如果选中多个字符则会换为相同长度的重复单个字符

%

跳转括号

跳转到对应括号的字符处

a

在光标之后插入文本

在行末插入文本: A

附一张 VIM 键位图2

可惜图片不够清晰

Example

快速选取 1

例如下面这样的文字:

代码语言:javascript
复制
	|  aaa| vaaaa<br>aaaa<br>bbbb  |

如果我们要修改出左边的aaa,则可以直接双击然后修改

而若要修改右边的一团vaaaa<br>aaaa<br>bbbb ,则必须用到鼠标,运动鼠标之后还需要将手放回键盘进行编辑,这样耗费了一定时间,而使用VIM的话只需要几个按键:vt|

  1. v代表开始选择
  2. t代表直到某个特定字符
  3. |就代表这个字符

如此可以快速的选中右边的一团,最重要的是不需要操作鼠标

最重要的,如果有很多很多个这样格式的一团需要进行批量选中修改,那么VIM可以节省很多时间

快速选取 2
代码语言:javascript
复制
	[^2]: [http://www.vimer.cny](http://www.vimer.cn)

例如需要选取大括号内的数据,只需要输入vi[ 即可快速选中括号内所有数据,而不用移动鼠标来进行选取

如果选取是为了修改则可以直接输ci[

之前就听说 Marco Recording 是个很 6 的功能,这次正好来体验一下3

比如有 100 个这样的 item,要从中筛选出 30 个,如果用普通方法我们需要选中每个 item,然后删除,如果使用普通vim,我们可以使用5dd来删除每个 item,但是需要定位到 item 开头的cards标签才能执行,这时候macro是个很不错的 Solution

代码语言:javascript
复制
	cards
		cardNamecardName
		cardDesc-cardDesc
		cardType7cardType
	cards
	cards
		cardNamecardName
		cardDesc-cardDesc
		cardType7cardType
	cards
	cards
		cardNamecardName
		cardDesc-cardDesc
		cardType7cardType
	cards
宏相关命令

命令码

含义

Comment

q{char}

录制宏并保存到{char}这个变量中

q

停止录制

「{char}p

显示{char}变量里录制好的命令细节,会输出到光标所在位置

{num}@{char}

执行{char}里面录制的宏命令

这时候只需要以下几步

  1. qa : 开始录制宏并保存到变量a
  2. ?cards{Enter} : 跳转到前一个 cards 的位置并取消选择
  3. 5ddq : 删除 5 行并停止录制

然后如果想要删除特定 item 就只需要输入@a来调用变量a里面保存的宏命令

参考文献

  1. Vintage 模式
  2. http://www.vimer.cny
  3. http://www.cnblogs.com/ini_always/archive/2011/09/21/2184446.html
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Sublime Text
    • 让 Sublime Text 支持 Vim
    • Vim
      • 编辑模式
        • 普通模式
          • 简单命令
            • Example
              • 快速选取 1
              • 快速选取 2
              • 宏相关命令
          • 参考文献
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档