linux vscode vim,VSCode Vim进阶操作

cbfa86c8d8a5

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 - 等同于将鼠标移至光标所在单词, 方便查看定义以及报错。

参考

<think>好的,用户想了解如何在VSCode中有效使用cursor功能。首先,我需要确认用户提到的“cursor功能”具体指什么。通常来说,VSCode中的光标操作包括基本移动、选择、多光标编辑等。用户可能是指这些基础功能,或者可能受到引用中提到的Cursor编辑器的影响,但根据问题上下文,应该还是针对VSCode本身的光标使用。 接下来,我需要整理VSCode中常用的光标技巧。首先想到的是快捷键,比如用方向键移动,结合Ctrl或Cmd键跳转单词或行首尾。然后是多光标编辑,比如Alt+Click添加多个光标,或者使用Ctrl+D选择相同词汇。还有列选择模式,这在处理结构化数据时很有用。 另外,用户提到的引用中提到了Cursor编辑器是基于VSCode的,所以可能需要区分VSCode原生功能和Cursor特有的功能。但用户的问题明确是关于VSCode,所以应集中在该编辑器本身。 还需要考虑用户可能的进阶需求,比如代码导航、符号跳转、查找引用等,这些虽然不直接是光标操作,但能提升编辑效率。此外,可以提到扩展插件如Vim或Emacs键位绑定,适合习惯其他编辑器的用户。 需要检查是否有遗漏的重要功能,比如使用Ctrl+Shift+L选择所有匹配项,或者通过Shift+Alt+I在每行末尾添加光标。同时,注意快捷键在Mac和Windows/Linux的不同,比如Cmd和Ctrl的区别。 最后,根据引用中的信息,用户可能对AI辅助编程感兴趣,但问题集中在VSCode的原生功能,所以可以适当提到通过扩展集成AI工具,但主要回答应围绕光标操作本身。 总结需要分点清晰,涵盖基本操作、多光标、选择技巧、导航和插件扩展,确保用户能有效提升编辑效率。</think>在 VSCode 中高效使用光标功能,可以通过以下方法提升代码编辑效率: ### 一、基础光标操作 1. **精准定位** - 单词级跳转:`Ctrl+←/→`(Windows/Linux)或 `Option+←/→`(Mac)实现单词间快速移动 - 行首/行尾:`Home/End` 键或 `Cmd+←/→`(Mac) - 文件首尾:`Ctrl+Home/End`(Windows)或 `Cmd+↑/↓`(Mac) 2. **多行选择** - 列选择模式:`Shift+Alt` + 鼠标拖拽 或 `Shift+Alt+↑/↓` 创建垂直选区 - 多光标操作:按住 `Alt` + 点击任意位置创建多个光标 ### 二、进阶编辑技巧 3. **智能选择** ```python # 使用 Ctrl+D 快速选择相同变量 def example(): counter = 0 counter += 1 # 连续按 Ctrl+D 会同时选中所有counter ``` - `Ctrl+Shift+L`:选中所有匹配当前选择的文本 4. **符号导航** - `Ctrl+P` 后输入 `@` 跳转到符号定义 - `F12` 跳转到定义,`Alt+F12` 内联预览[^3] ### 三、效率提升插件 5. **推荐扩展** - **Bracket Pair Colorizer**:彩色括号配对识别 - **Multi-Cursor Case Preserve**:保持大小写的多光标编辑 - **Vim/Emacs Keymap**:支持其他编辑器的光标操作模式[^4] ### 四、AI辅助功能 通过安装基于AI的扩展(如GitHub Copilot),可实现: - 自动补全代码块 - 智能建议光标位置 - 上下文感知的代码生成(需注意代码版权问题)[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值