新手认为使用Vim的常用键

226 阅读4分钟

Vim 常用键

环境

vscode 安装以下插件即可体验 微信截图_20230410232707.png

快速切换insert 和 normal 模式

  • 需求1:切换插入(insert)模式
    • i 在当前光标前切换到insert模式
    • a 在当前光标后切换到insert模式
    • o 换行并且切换到insert模式
  • 需求2:切换正常(normal)模式
    • Esc 切换成正常(normal)模式
    • 或者使用 ctrl + c/ ctrl + [切换normal 模式

快速删除一个字符和单词

  • Vim在normal模式下使用x快速删除一个字符
  • 使用 d(delete)配合文本对象快速删除一个单词 daw (d around word)
  • dx都可以搭配数字来执行多次
  • v (visual)模式下,v+ h/j/k/l 进行视图移动 再加d/y就是这块区域删除/复制

Vim Normal模式复制+剪切+粘贴

初学者会感觉Vim 复制粘贴比较奇怪,先从normal模式学习

  • normal模式下复制粘贴分别使用 y(yank)和 p(put),剪切 d和粘贴p

  • yf+有的字符

    • 选择拷贝光标当前行光标后,有的字母,并且输入这个字母就会到剪贴板
    const str = 'fdaghgg422gfdg525ff'
    // 当前光标在行首c这里,按下`y`+`f`+`4`,就复制了const str = 'fdaghgg4
    
  • 需求1: 复制 / 剪切光标后的词组

    • 使用y/d + w
  • 需求2: 复制 / 剪切当前光标行

    • 使用y+y/d+d
  • 需求3: 复制任意区域

    • 使用v(visual)+h/j/k/l/w/e/b 命令选中所要复制y的地方,然后使用p粘贴

vim 快速修改

相比删除,更常用修改,一般是删除之后改成我们期望的文本

  • 常用有三个,r(replace),c(change),s(substitute)
  • normal模式下使用r可以替换一个字符。s 替换并进入插入模式
  • 使用c配合文本对象,我们可以快速进行修改

c+i+ [ 表示change insert [ / } ;改变中括号/大括号的代码并且进行insert模式

括号间和字符串跳转

  • 把光标放在括号,如何按下%就可以实现括号的头尾位置切换
  • ^ 跳转本行最前一个字符串,就是正则的语法
  • $ 跳转本行最后一个字符串,就是正则的语法

需求

  • 需求1:{,},[,],(,)括号光标跳转
    • 将光标放在括号上,使用%就可实现光标来回跳转
  • 需求2: 本行字符串跳转头尾
    • 使用^就是头,使用$,就是尾

普通的光标移动

  • jkhl:向下/上/左/右滚动 
  • w、光标跳到后一个词组的头部
  • e、光标跳到后一个词组的尾部
  • b、光标跳到前一个词组的头部
  • gi 快速跳转到你最后一次编辑的地方并进入插入模式
  • gg/G 快速跳转到页头和页尾
  • ctrl + u ctrl + f 上下翻页(upword/forward)
  • zz 把屏幕置为中间

行首/尾之间快速进行insert模式

  • I 跳转到行首并进入insert模式,相当于^i
  • A 跳转到行尾并进入insert模式,相当于$a

常见例子

import { createApp } from 'vue'
import 'bootstrap/dist/css/bootstrap.css'

import App from './App.vue'

createApp(App).mount('#app')
  • 需求:想在第一行头部插入
    • 第一种方案:使用gg+i/I就可实现
    • 第二种方案:使用一直按k跳到第一行,然后I,可以实现
  • 需求2:想在第一行尾部插入
    • 第一种方案:使用gg+ A就可实现
    • 第二种方案:使用gg+ $+a就可实现

利用数字加移动键快速光标跳转

  • [count] + w (word)
  • [count] + e (end)
  • [count] + b (backward)
  • [count] + h
  • [count] + j
  • [count] + k
  • [count] + l
  • [count] + G

3+G 将光标跳转到第三行行头 !!特殊
3+w 将光标跳转到第3个词组(word)首
2+e 将光标跳转到第2个词组(end)尾
3+b 将光标往前跳转到第3个词组(backward)头
h,j,k,l同理可得

快速查找并且跳转

const str = `fadhnkgksfsdgkfdsjhksdk`

这是往后找

  • 情景situation:此时的光标在开头的第一个c位置
  • 任务task:快速查找第三个d 并且光标跳转到那个位置
  • 行动action: 按下3fd
  • 结果result: 实现完毕

这是往前找

  • 情景situation:此时的光标在最后的第一个k位置
  • 任务task:快速查找从左往右找第2个s 并且光标跳转到那个位置
  • 行动action: 按下3Fs
  • 结果result: 实现完毕

normal模式下总结

  • j : 向下移动。
  • k:向上移动。
  • h:向左移动。
  • l:向右移动。
  • w、光标跳到后一个词组的头部
  • e、光标跳到后一个词组的尾部
  • b、光标跳到前一个词组的头部
  • gg:跳转到页面的顶部。
  • G:跳转到页面的底部。
  • A: 跳转到行尾并进入insert模式
  • I 跳转到行首并进入insert模式
  • yy:拷贝光标当前行到剪贴板
  • yf+[含有字符]:复制当前行光标,到指定字符区域
  • p:粘贴
  • d: 剪切
  • dd: 当前行剪切
  • v: 配合移动键选取可视区域+y/d 进行复制或者剪切
  • $: 括号间进行跳跃
  • [count]+移动键:进行快速移动
  • [count]+f+[含有字符]: 当前行进行字符光标跳跃

以上就是文件内进行vim移动和crud

感谢收看!!觉得比较适用可以点个心心(~ . ) !( . ~ )
-> (~ . ~)