Henry Henry
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)

Henry

小学生中的前端大佬
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)
  • 说明
  • Vim

    • 环境准备
    • vim normal 模式中文输入法切换问题
    • vim-01-存活下来
    • vim-02-掌握行相关的命令
      • 任务点
        • 移动到行首:
        • 移动到行尾:
        • 移动到行首/尾改键
        • 在行首插入
        • 在行尾插入
        • 在行前插入
        • 在行后插入
        • 复制当前行
        • 删除当前行
        • 粘贴
      • 社群讨论
    • vim-03-掌握 vim 的语法
    • vim-04-更有效率的处理单字符&undo&redo
    • vim-复习 -1
    • vim-05-掌握可视化模式
    • vim-06-文本对象
    • vim-07-在单文件中移动的更快
    • vim-08-掌握搜索命令
    • vim-复习 -2
    • vim-09-更高效的移动 - 想去哪里就去哪里
    • vim-10-认识数字&点的威力
    • vim-11-掌握多文件之间的跳转
    • vim-12-处理包裹字符的符号
    • vim-复习 -3
    • vim-13-替换字符
    • vim-14-掌握悬浮显示&大小写&注释
    • vim-15-掌握窗口的管理
    • vim-16-删除函数
    • vim-复习 -4
    • vim-17-掌握宏
    • vim-18-调用 vscode 的命令
    • vim-复习 -5
  • VSCode

  • Chrome

  • iTerm

  • mac

  • Obsidian

  • lazygit

  • 学习双拼
  • Vim 技巧

  • 键盘侠
  • Vim
Henry
2022-06-02
目录

vim-02-掌握行相关的命令

# 任务点

# 移动到行首:

  • 0: 将光标移动到行首,不论第一个字符是不是 blank 字符,可以理解成是第 0 列
  • ^ / _: 常用,将光标移动到行首,到本行第一个不是 blank 字符的位置

注:blank 字符有 空格、换行、tab、回车等等

# 移动到行尾:

  • $: 将光标移动到行尾,不论最后一个字符是不是 blank 字符
  • g_: 常用,将光标移动到行尾,到本行最后一个不是 blank 字符的位置

不过 vscode 设置剪裁尾随空格后,$ 和 g_ 的效果就一样了

// 启用后,将在保存文件时剪裁尾随空格。
"files.trimTrailingWhitespace": true,
1
2

# 移动到行首/尾改键

如果感觉以上命令按键不舒服,可以用 shift + h (也就是 H) 代替 ^, 用 shift + l (也就是 L) 代替 g_

"vim.normalModeKeyBindings": [
  {
    "before": ["H"],
    "after": ["^"]
  },
  {
    "before": ["L"],
    "after": ["g", "_"]
  }
]
1
2
3
4
5
6
7
8
9
10

# 在行首插入

使用大写的 I 来在行首插入,插入位置为本行首第一个不是 blank 字符的位置

巧记:小写 i 在光标所处字符前面插入,大写 I 在光标所处行前面插入

# 在行尾插入

使用大写的 A 来在行尾插入,插入位置为本行尾(包括 blank 字符)

如果行尾是 blank 字符,可以使用 L 先移动到行尾,再使用 i 插入,但这种情况几乎没有,而且上面我们设置了保存就剪裁尾随空格,所以可以不用考虑

巧记:小写 a 在光标所处字符后面插入,大写 I 在光标所处行后面插入

# 在行前插入

使用大写的 O 来在行前插入

# 在行后插入

使用小写的 o 来在行后插入

# 复制当前行

yy, 与 cmd + c 是共存的,相当于各保存到各自的容器中,yy 是保存到 vim 到寄存器里面,cmd + c 是保存到系统的剪切板里面

# 删除当前行

dd, 删除的行也是保存到寄存器里

# 粘贴

p

yy 或 dd 后,使用 p 可以粘贴复制/删除的行

tips: 在 normal 模式也可以正常使用 cmd + c/v

# 社群讨论

视频 4:31 秒解说是小写 a,实际是大写 A 到行尾


win 系统当在 insert 模式下使用 ctrl + c 的时候(复制)会进入到 normal 模式怎么办?

在 settings.json 里面加一下配置

"vim.handleKeys": {
  "<C-c>": false
},
1
2
3

这个字段的说明

Delegate configured keys to be handled by VS Code instead of by the VSCodeVim extension. Any key in keybindings section of the package.json that has a vim.use<C-...> in the when argument can be delegated back to VS Code by setting "<C-...>": false. Example: to use ctrl+f for find (native VS Code behaviour): "vim.handleKeys": { "<C-f>": false }.


使用 vim 后 vscode 的 ctrl F 失效了 大家怎么解决的

"vim.handleKeys": {
  "<C-f>": false
},
1
2
3

试试这个,举一反三


mac 的 cmd+c 也会从 insert 模式到 normal 模式,vim.handleKeys 支持配置 cmd 么,我自己试了试感觉没生效

// Override VSCode's copy command with our own copy command, which works better with VSCodeVim. Turn this off if copying is not working.
"vim.overrideCopy": false,
1
2

还以为是废掉复制功能,试了试能解决问题,并且复制功能是保留的。

目前看没问题,不知道后续有问题没有


vscode 文件切换的快捷键是怎么设置的?

ctrl+tab 上一个文件,command + p 搜文件,文件跳转的话 可以使用 vim 的 ctrl+o/i 回到上一个光标位置(这个非常好用)

vscode 自带的 cmd + shift + [ 切换到左侧文件,] 切换到右侧文件

workbench.action.previousEditor cmd + h, workbench.action.nextEditor cmd + l

想这样设 但是怕之后会和其他现在还不知道但常用的键位冲突,参见这里:https://zhuanlan.zhihu.com/p/198990464


怎么从 visual 状态退出来啊,一用鼠标选择就会进入 visual 模式

esc 或者 ctrl+[

第四天学完 就不需要用鼠标来选择了,会告诉你如何用命令来做选择

基本上 1 星期之后 就可以完全在工作中用起来了,所以第一周大家的任务就是练熟悉,不着急在工作中使用


可以把 dd 理解为剪切操作吗?删除的同时会复制内容

我感觉就是 vim 的剪切 [旺柴]


vim 有没有像鼠标那种选中一个小代码块的?

没记错的话 应该是第五天的内容,可视化模式

可视化其实不是太推荐使用,这个东西又非常符合大家之前使用的方式,所以还是晚点学 比较好


发现一个问题:当一行文本换行显示后,$ 是移动到换行后的行尾,g_ 是移动到当前行的行尾,所以改键还是把 L 改到 $ 好一点

编辑 (opens new window)
#Vim
上次更新: 6/19/2023, 2:35:11 PM
vim-01-存活下来
vim-03-掌握 vim 的语法

← vim-01-存活下来 vim-03-掌握 vim 的语法→

最近更新
01
version 1.15
07-01
02
version 1.14
06-27
03
version 1.13
06-27
更多文章>
Theme by Vdoing | Copyright © 2017-2023 HenryTSZ | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式