vim_vim实用系列(配合现代IDE/编辑器来提高编辑效率(比如vscode+vim插件)

精简实用系列

  • 核心:

vim光标定位.

  • 在现代可视化做的普遍比较好的IDE中,如果辅以强大的定位的功能可以让IDE的编辑体验锦上添花
  • 基于此,我总结了实际使用中的一些最高频命令
  • vim特别灵活,可以通过不同的操作来达到一样的效果,以至于刚开始使用的时候不知道用哪一种方式来达到目的

准备工作:

  • 切换输入法:尽量使用纯英文编写内容(包括注释)
  • 进入标准模式(以便执行新指令)
  • 定位到需要编辑的行(或者合适的附近行)
  • 利用行相关的编辑技巧

行的编辑技巧(最实用的部分)

  • 如果屏幕中的某一样内容很多(很长的一行,这是后如果您还使用b(甚至是h)就不方便,而且nb/nh带有盲目性
    • 推荐使用查找:
      • 首先光标定位到改行(好处是如果该文件内容过多,那么不容易在预览的时候页面跑到其他偏远地方;此外,可以减少查找后的修正(N/n)
        • :line
      • 向前查找
        • :?chars
        • 上一处
          • N
      • 向后查找
        • :/chars
        • 下一处
          • n

光标移动之行首/行尾

  • 非空字符行首
    (比绝对行首更实用些)(但是如果只是注释改行,那么可以考虑实用编辑器(IDE)的注释快捷键即可(在改行的任何位置既可以注释掉改行代码)
    • ^(即,shift+6)
  • 行尾:
    • 0(单独一个数字0,而且不要按shift,否则变成’)’
      其他常用的
  • 在某行行末添加内容(大写)
    • A
  • 在行首插入内容(大写)
    • I
  • 当然还包括其他的插入修改操作:
    • 光标前插入模式(insert)
      • i
    • 光标后插入模式(append)
      • a
  • 行间插入模式:
    • 向上插入行并开始编辑
      • O
    • 向下插入行并开始编辑
      • o
  • 以单词为单位进行修改/删除
    • 修改
      • lbce

删除(delete a word)

  • daw

修改单词

修改单词的部分字符

  • 向前修改
    • cb
  • 向后修改
    • ce

字符删除:

  • 向前删除(光标前)
    • X
    • backSpace
  • 向后删除(从光标当前开始计)
    • x
    • delete

搜索替换

vim默认

  • 全局替换
    • :%s/old/new/g
  • 行区间替换:
    • :n1,n2s/old/new/g
  • 光标所在行内替换:
    • : s/old/new/g
  • 忽略大小写开关

在任何地方键入\c,则该搜索表达式是忽略大小写的

删除单词通用技巧:

  • 以下两种方法,可以在您的光标处于单词中的任意位置时都删除一整个单词
    • lbce(一般来讲,记住这一个就够用啦,especially when you are editing
      english segments)
      • daw
      • bdw

删除光标前的单词部分的字符

  • db
    (方块光标所在的字符会被保留)

删除光标处及以后的单词部分的字符(包括附带的空格一并删掉)

  • dw

删除到单词最后一个字符(空格会被保留)

  • de

删除指定行间区间的内容

基于d命令的光标定位删除操作

例如删除第r1行至r2行之间的内容:

  • 将光标定位到第r1
  • 键入d命令键
  • 将光标定位到第r2
  • 删除完毕

删除任意区间的字符(特别是无规律字符序列/长序列)

基于visual模式下的可视化选择删除操作

  • 使用v模式:
    • 明确你想要删除的区间,并且将光标移动到区间的起点start
      • 移动光标一般使用/(或者向前搜索?)控制
    • normal模式下键入v
    • 操作光标移动区间的结尾end,即选中需要被删除的内容
      • 移动光标一般使用`/`(或者向前搜索?)控制
    • 键入d键执行删除

删除方法的小结

在执行删除之前,明确区间,然后将光标定位到被删除内容的起始位置(或者结束位置)
然后根据需要进入d命令或者v(更准确的说是一种模式)
然后移动光标到另一个区间边界处(如果是删除整行的,移动到改行即可)
这样前者就会删除到若干行,后者需要再按下d才会删除
总之

  • 都需要移动光标(只是精度更具需求有所不同,删除若干行的精度要求低,删除指定区间的,精度要求较高(当然,前者是后者的一种特例))
  • 都需要实用到d命令(只是时机不同);

note!

虽然:/:?一般情况下很管用,但是在重复字符较多的情况下不容易定位(需要按较多的N/n来修正,不过和不是无解,您可以在利用:?:\多打几个字符(比如目标位置的前一个字符或者后一个字符甚至几个字符),这样就可以较好的区分开来,使得定位更加准确)

换行符的删除

某些时候,您可能需要删除换行符,vim提供了方便的换行符删除操作,使得这些行被拼接为同一行
删除当前行的换行符(join)大写的字幕:J
连续删除n个换行符以拼接n行内容:nJ

额外的总结

移动光标

单位级

  • h 向左一字符
  • j 下一行
  • k 上一行
  • l 向右一字符

单词级

跨单词:
  • w or W 向右移动到下一单词开头
本单词内:
  • e or E 向右移动到单词结尾(但是位于单词结束字符,则会跨单词移动到后一个单词的结尾字符,您可以理解为,一旦按下e,光标一定不会呆在原地,且要向后移动)
  • b or B 向左移动到单词开头(但是位于单词开始字符,则会跨单词移动到前一个单词的开始字符,您可以理解为,一旦按下b,光标一定不会呆在原地,且要向前移动)

vim实用系列

块级

  • gg 到文档第一行
  • G 到文档最后一行
  • 0 到行首(第 1 列)
  • ^ 到第一个非空白字符
  • $ 到行尾

相对屏幕的光标移动

  • H 移动到屏幕顶端
  • M 移动到屏幕中间
  • L 移动到屏幕底部

相对屏幕的内容滚动

  • Ctrl-d 向下移动半页
  • Ctrl-u 向上移动半页
  • Ctrl-f 向下移动一页
  • Ctrl-b 向上移动一页

按行跳转光标

  • :<N> or <N>gg或<N>G 跳转到第 N 行
  • :+<N> or <N>j 向下跳 N 行
  • :-<N> or <N>k 向上跳 N 行
posted @ 2020-12-08 14:45  xuchaoxin1375  阅读(2)  评论(0)    收藏  举报  来源