kbt

-----------updated 2019-1-30------------

近期笔者发现VSCode在vim 模式下CPU占用经常是200%左右,卡顿非常严重,看了官方issue。

关闭easymotion 和 statusbarcolorcontrol 可以解决此问题。

"vim.easymotion": false,

"vim.statusBarColorControl": false

继上篇鱼和熊掌:VSCode+Vim 介绍VSCode Vim使用后差不多有一个月了。陆续遇到了一些操作上的问题,经过不断改进,码字效率得到了一点点的提升。vim是个强大的工具,但同时也引入了不少概念和快捷键需要记,好记性不如烂笔头,整理了这些提高效率的操作以备后续查看。

什么是 text object?

vim 之所以高效一个原因是对文本进行了抽象,如一个单词 一个句子 一个段落,就是文本对象(text-objects )。配合 d(delete) c(change) 可以一次性操作不同大小的文本对象,如 ‘dap’ 可以删除一个函数所有内容, daw 删除光标所在的单词及周围的空格。

另外vim还提供了文本对象操作的范围关键字 a 和 i。

iw: inner word 光标在单词里面任何位置操作单词,如 diw 可以删除光标所在的单词,比dw方便很多。

aw: around word, 它会选中当前单词,同时包含当前单词之后的空格。比如 diw 可以删除当前单词。

快速移动

写代码,除了输入字符之外最常用的操作就是移动光标。vim除了hjkl ctrl+u ctr+f外还有更快捷的移动方式,这里介绍2个插件都是vscode自带的。

1.vim-easymotion

设置"vim.easymotion": true 开启这个模式。

t/T 能够向前/向后快速到达可见范围内的某字符()的位置。

w/b 向前/向后到达可见范围内任何单词的开头。

e/ge 向前/向后到达可见范围内任何单词的结尾。

k/j 向前/向后到达可见范围内任何行的行首。

2.vim-sneak

sneak模式下键入s后,再输入2个字符就可以跳转到目标位置。

s 往前跳转到目标位置。

S 往后跳转到目标位置。

vim-surround

vim-surround 处理环绕文本操作,如引号 ” 括号()方括号[] 花括号{} xml html标签等。

命令

说明

d s

删除两边的指定字符

c s

修改两边的指定字符

y s

修改两边字符

S

visual modes 选中指定字符中间的内容

例子:

"test" 输入 cs"'修改为 'test'

"test" 输入ds" 修改为 test

"test" 输入 cs"t and enter 123>修改为<123>test123>

test 输入 ysaw) 修改为 (test)

代码注释

代码注释vsc使用了类似vim-commentary的操作。

使用方法:

gc - 打开或关闭注释. 输入 gcc 打开或关闭某一行代码注释, gc2j 打开或关闭两行代码注释。

gC - 块代码注释.输入 gCi) 注释 括号()中的代码。

中文输入法切换问题

vim 常用是normal 和 insert 模式。 大部分时候都在两个模式下来回切换,如果在insert 模式下是中文输入,按esc 或者 ctrl+[ 切到了 normal 模式,这个时候问题来了,需要手动切换输入法到英文,否则会弹出中文提示。

还好官方给出了解决方案:

"vim.autoSwitchInputMethod.enable": true,

"vim.autoSwitchInputMethod.defaultIM": "com.apple.keylayout.US",

"vim.autoSwitchInputMethod.obtainIMCmd": "/usr/local/bin/im-select",

"vim.autoSwitchInputMethod.switchIMCmd": "/usr/local/bin/im-select {im}"

需要注意的是,mac下需要查明模式英文输入法是US 还是British ,然后修改defaultIM这个设置,否则会不起作用。

VSCodeVim 实用技巧

gd - Go to definition, 跳转到定义。

gb - 找出与光标下相同的下一个单词, 并添加一个光标 ,接下来就可以同时修改。

af - VISUAL 模式命令, 依据语法分析, 将选择区域向外扩展。

gh - 等同于将鼠标移至光标所在单词, 方便查看定义以及报错。

参考

linux vscode vim,VSCode Vim进阶操作相关推荐

  1. Linux系统firewalld防火墙的进阶操作(日志保存 IP网段 ssh服务)

    文章目录 一.前文 二.打开日志 2.1 修改配置 2.2 测试验证 2.3 日志保存到本地 三.允许IP网段 四.关闭ssh 一.前文 基础知识请查阅:Linux系统firewalld防火墙的基本操 ...

  2. vim deepin linux,在Deepin 20系统中只能用vim/vscode编辑器来打开conf文件

    在Deepin 20系统中是不能用文本编辑器来打开conf文件的,比如实测打开dkms.conf会提示无效文件,如下图所示: 问题 使用vim/vscode等编辑器可以正常的打开/usr/src/hu ...

  3. vscode 逗号不换行_在VSCode里面配置Vim正确姿势(细节解析)

    一.导论 对于不用vim的人来说,vim简直是个噩梦,复杂的指令.丑陋的界面.令人头痛的配置文件,任何一项都足以劝退一大波人,但是对于已经习惯了使用vim的人来说,vim简直就是马良神笔,似乎vim除 ...

  4. 行号 设置vim_在VSCode里面配置Vim正确姿势(细节解析)

    一.导论 对于不用vim的人来说,vim简直是个噩梦,复杂的指令.丑陋的界面.令人头痛的配置文件,任何一项都足以劝退一大波人,但是对于已经习惯了使用vim的人来说,vim简直就是马良神笔,似乎vim除 ...

  5. linux修改vim配色,更改vim配色的具体操作 更改vim配色的图文教程

    有的用户还不会更改vim配色?下文就是小编给大家分享的更改vim配色的图文教程,一起来看看吧,希望对你们有所帮助哦. 一.查看系统中的配色方案 启动 Linux(示例版本为 CentOS 6.6),进 ...

  6. 在linux中的vi中的删除操作,linux中vi和vim操作

    一.简单介绍 vi 和 vim 类似于windows的文本编辑器 所有的Linux系统都会内置vi文本编辑器 vim可以看做是vi增强版,具有程序编辑能力,支持语法高亮,代码补全,编译及错误跳转等功能 ...

  7. linux的进程/线程/协程系列3:查看linux内核源码——vim+ctags/find+grep

    linux的进程/线程/协程系列3:查看linux内核源码--vim+ctags/find+grep 前言 摘要: 1. 下载linux内核源码 2. 打标签方法:vim+ctags 2.1 安装vi ...

  8. linux 普通用户退出vim,困扰无数人的Linux Vim退出方法,原来这么简单?

    原标题:困扰无数人的Linux Vim退出方法,原来这么简单? 来源 | 异步 Vim作为使用最广泛的文本编辑器之一,在编程的世界中,一直流传着一个关于它的神秘问题,知道答案的人寥寥无几,却又难以启齿 ...

  9. 【Linux系统】开发工具(上) {软件包管理器yum,更新yum源,文本编辑器vim,vim的四种基本模式,vim指令集,代码编译器gcc/g++}

    一.软件包管理器:yum 1.1 yum是什么? Linux下软件的安装方法: 源码安装:下载源码,在本地自行编译,然后才能安装. rpm安装:红帽软件包管理工具,属于安装包安装. yum安装:本身会 ...

  10. 初试linux编译(ubuntu+vim)+玩转智能蛇

    一.初试linux编译(ubuntu+vim) 步骤: ①下载vmware15+ubuntu桌面版映像 ②安装ubuntu ③下载vim+gcc 在ubuntu终端输入: sudo apt-get i ...

最新文章

  1. 【Groovy】MOP 元对象协议与元编程 ( Groovy 类内部和外部分别获取 metaClass | 分析获取 metaClass 操作的字节码 | HandleMetaClass 注入方法 )
  2. MyBatis之PageHelper分页操作
  3. Detectron:Pytorch-Caffe2-Detectron的一些跟进
  4. Uuntu16.04重装后u盘不识别问题解决
  5. linux 内核 性能,Linux内核十个版本性能对比
  6. 【转】深入理解Windows消息机制
  7. cad字体hztxt用什么代替_为什么CAD的字体库相同但打开图纸的效果却不同?
  8. 使用计算机报点系统时填记,子案例库接发列车工作-企业生产实际教学案例库...
  9. 浅谈医院HIS系统审计
  10. 添加打印机,错误为0x0000011b
  11. Android闹钟TimePicker,android – TimePicker getHours(),API 15中的getMinutes
  12. python中去除空格用什么函数_python中用什么函数去掉空格
  13. python0不能做除数、怎么解决_为什么0不能作为除数?真正的原因是……
  14. Unity学习笔记-粒子篇
  15. [笔录]博客及源程序 出处
  16. 双头巨人 (twin)
  17. r语言入门——颜色转换
  18. winForm c#导出Excel
  19. 百度地图、高德地图和腾讯地图定位不准确的解决方案
  20. (二十六)Fama-French三因素模型及应用

热门文章

  1. 使virtualenv从您的全局站点包继承特定的包
  2. LeetCode简单题之逐步求和得到正数的最小值
  3. TVMNN编译Compiler栈
  4. MegEngine计算图、MatMul优化解析
  5. ARM系列处理器和架构
  6. 单目摄像头标定与测距
  7. 2021年大数据Hive(五):Hive的内置函数(数学、字符串、日期、条件、转换、行转列)
  8. Cocos Creator 的 动作(Action)系统:moveBy的使用
  9. [JavaScript] Map类型在JavaScript中的使用
  10. java模拟网银登录_用java编写模拟网上银行登录及存取款业务