vim相关操作 - zhongjiajie/zhongjiajie.github.com GitHub Wiki

vim 相关操作

设置

基本概念

vim编辑器主要有三个模式:命令行模式(normal),插入模式(insert),底行模式.部分教程有说底行模式,但是底行模式也属于normal的一种

  • 理解normal模式的tips: 在一般的编辑器中,当你需要copy一段文字的时候,你需要使用Ctrl键,比如:Ctrl-C.也就是说,Ctrl键就好像功能键一样,当你按下了功能键Ctrl后,C就不在是C了,而且就是一个命令或是一个快键键了,在VIM的Normal模式下所有的键就是功能键这个要牢牢记住

normal 模式的常用命令

<C-λ>翻译为Ctrl-λ

  • 存活需要
i               → Insert 模式,按 ESC 回到 Normal 模式.
x               → 删当前光标所在的一个字符。
:wq             → 存盘 + 退出 (:w 存盘, :q 退出)(:w 后可以跟文件名)
dd              → 删除当前行,并把删除的行存到剪贴板里
p               → 粘贴剪贴板
hjkl            → (强例推荐使用其移动光标,但不必需) 你也可以使用光标键 (←↓↑→). 注: j 就像下箭头。
:help <command> → 显示相关命令的帮助。你也可以就输入 :help 而不跟命令。(退出帮助需要输入:q)
  • 进阶需要
# 各种插入模式
a  → 在光标后插入 (append)
o  → 在当前行后插入一个新行
O  → 在当前行前插入一个新行
cw → 替换从光标所在位置后到一个单词结尾的字符

# 简单的移动光标
0/home   → 数字零,到行头
^        → 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
$/end    → 到本行行尾
g_       → 到本行最后一个不是blank字符的位置。
/pattern → 搜索 pattern 的字符串(如果搜索出多个匹配,可按n键到下一个)

# 拷贝/粘贴
p/P → 粘贴 p 是当前位置之后粘贴 P 是当前位置之前粘贴
yy  → 拷贝当前行当行于 ddP

# Undo/Redo
u     → undo
<C-r> → redo

# 打开/保存/退出/改变文件
:e <path/to/file>      → 打开一个文件
:w                     → 存盘
:saveas <path/to/file> → 另存为 <path/to/file>
:x, ZZ 或 :wq          → 保存并退出 (:x 表示仅在需要时保存,ZZ不需要输入冒号并回车)
:q!                    → 退出不保存 :qa! 强行退出所有的正在编辑的文件,就算别的文件有更改
:bn 和 :bp             → 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件(:n到下一个文件)
  • 更加牛逼
# 移动光标更加有效率
NG/:N → 到第 N 行
gg/:1 → 到第一行
G/:$  → 到最后一行
w     → 到下一个单词的开头
e     → 到下一个单词的结尾
%     → 匹配括号移动,包括 (, {, [. 需要把光标先移到括号上
*#  → 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)

设置行号

# 每行左边显示行号
:set number

# vim 右下角显示行号
:set ruler

替换

替换(Substitute):substitute,调用格式如下::[range] s/search/replace/[flags] [count]

  • 默认情况下值替换当前行匹配中的内容,想要替换全部内容要使用g(global)命令:%s/from/to/g
  • 标记(flags)包括:
    • p(print),是要求打印所做的改动
    • c(confirm),是要求在做出改动以前先询问
      • y Yes: 执行这个替换
      • n No: 取消这个替换
      • a All: 执行所有替换而不要再询问
      • q Quit: 退出而不做任何改动
      • l Last: 替换完当前匹配点后退出
      • CTRL-E: 向上翻滚一行
      • CTRL-Y: 向下翻滚一行
    • i(ignorecase),是不区分大小写
  • 替换范围
    • :1,$: 全部,eg::1,$s/idiots/manages/g
    • :.,$: 当前行到文件尾
    • :.,.+8: 当前行后续9行
    • :5,15: 指定行数替换
    • :s/helo/hello/g4: 当前行在内的以下4个替换单元替换
  • :%s/Kang\|Kodos/alien/gc: 多项替换Kang和Kodos

各主题相关

查找相关

  • normal模式下/进入查找模式。输入要查找的字符串并按下回车,会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。支持正则表达式,例如/vim$匹配行尾的"vim"。 需要查找特殊字符需要转义,例如/vim$匹配"vim$"
  • 大小写敏感:在查找模式中加入\c表示大小写不敏感查找,\C表示大小写敏感查找
    • set ignorecase: 设置默认进行大小写不敏感查找 set smartcase: 大小写敏感查找
  • 查找替换::s(substitute)命令。:{作用范围}s/{目标}/{替换}/{替换标志},例如:%s/foo/bar/g会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g)
    • 作用范围: s当前行,如:s/foo/bar/g%s全文,如:%s/foo/bar/g'<,'>s选区,如:5,12s/foo/bar/g5-12行、:.,+2s/foo/bar/g当前行和接下来两行
    • 替换标志: g表示全局global替换。i表示大小写不敏感查找,I表示大小写敏感

Ref

简明 VIM 练级攻略


⚠️ **GitHub.com Fallback** ⚠️