# vim快捷命令

# 以下命令均在命令模式下操作

  1. 转到文件结尾:

    G
    
  2. 转到第9行:

    9G
    
  3. 删除所有内容(先用G转到文件末尾):

    :1,d
    
  4. 删除第9行到第200行的内容(先用200G转到第200行):

    :9,d
    
  5. 删除光标所在处字符:

    x
    
  6. 删除光标所在前字符:

    X
    
  7. 删除到下一个单词开头:

    dw
    
  8. 删除到本单词末尾:

    de
    
  9. 删除到本单词末尾包括标点在内:

    dE
    
  10. 删除到前一个单词:

    db
    
  11. 删除到前一个单词包括标点在内:

    dB
    
  12. 删除一整行:

    dd
    
  13. 删除光标位置到本行结尾:

    D 或 d$
    
  14. 删除光标位置到本行开头:

    d0
    

# 查找与替换

:s 命令用来查找与替换字符串,如下语法:

:{作用范围标识符}s/{查找的内容}/{新的内容}/{替换的标志}

例子:

:%s/hello/world/g

如上命令表示会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g)。

# 作用范围标识符

标识符 说明 例子
:%s 全局范围 :%s/hello/world/g
:s 当前行 :s/hello/world/g
:2,10 指定2-10行 :2,10s/hello/world/g
:.,+3s 当前行与接下来三行,.代表当前行,+3代表接下来的三行 :.,+3s/hello/world/g

# 替换标识符

  1. g 代表全局global替换

    :%s/hello/world/g
    
  2. i表示不区分大小写,I表示区分大小写

    :%s/hello/world/i
    

    备注: (i和I)与(\c和\C)等效,如下命令与上面命令等效

    :%s/hello\c/world/
    
  3. c表示需要确认,如下所示全局查找"hello"替换为"world"并且需要确认

    :%s/hello/world/gc
    

    回车后Vim会将光标移动到每一次"hello"出现的位置,并提示

    replace with world (y/n/a/q/l/^E/^Y)?
    

    按下y表示替换,n表示不替换,a表示替换所有,q表示退出查找模式, l表示替换当前位置并退出。^E与^Y是光标移动快捷键

# xshell下vim不能复制粘贴,粘贴出现缩进错位解决方法

  1. 鼠标不能复制和粘贴的解决方法:

    :set mouse=c
    
  2. 粘贴带注释代码时,出现缩进错位的解决方法:

    2.1 先设置vim为粘贴模式:

    :set paste
    

    2.2 查找到字符颜色设置:

    :hi Search term=standout ctermfg=0 ctermbg=3