vim

导航

set t_vb=  # 防止屏幕闪烁

插入

  • i, I 插入,开头插入

  • o, O 换行插入, 上一行插入

  • a, A 字符后面插入, 行尾插入

  • s, S 删除当前字符插入, 删除当前行插入

缩进

  • ctrl+v 5> 把一行代码右移5层缩进

  • >} 段落之后的行缩进

  • >ap 段落缩进

选择

  • ci'、ci"、ci<、快速更改

  • di'、di"、di( 快速删除

  • da', da", da( delete all '这个就是包括两边进行删除了

  • V, v 列选择, 行选择

  • yaw, yiw 也适用,把单词当作括号处理

光标移动

  • h, j, k, l 左下上右移动

  • W, w 前进一个单词(大写忽略标点)

  • E, e 前进到一个单词的最后一个字母(大写忽略标点)

  • R, r replace替换一个字母(大写替换至你按esc)

  • T, t 找到指定的字母, 不移动到单词位置(大写往后找)

  • f, F 向前(向后)找到指定的字母, 移动到单词位置 n; 按照上次查找继续查找n次 n, 按照上次查找反方向查找n次

  • B, b 后退一个单词(大写忽略标点)

  • g, G 移动到指定行数(大写最后一行)

  • H(ead), M(iddle), L(ow) 移动到屏幕位置

  • 移动到制定列 n|

  • # * 找到当前位置单词的上一个/下一个

屏幕移动

  • 下一行 ctrl + E

  • 上一行 ctrl + Y

  • z + z 把光标行移动到行中

  • z + t 把光标行移动到top

  • z + b 把光标行移动到bottom

折叠

  • zv 查看此行(展开到当前行。用于查看日志,跳转到行数后直接展开)

  • 折叠 zc

  • 折叠当前范围 zC

  • 打开折叠 zo

  • 打开当前最大折叠 zO

  • 折叠文件 zm

  • 折叠文件到最高层 zM

  • 打开文件 zr

  • 打开所有折叠 zR

正则匹配

搜索

  • 使用/按键来进行搜索.搜索结束后输入:noh关闭高亮

  • :%s/pattern//ng 来查看出现次数 n代表不替换

替换

  • 位置的选择

    • :s 当前行

    • :%s 所有行

    • :5,12s 第5行到第12行

    • :.,-12s 当前行到上面12行

    • :g/^bar/s 找前三个字母为 baz 的行进行替换

  • 示例

    :%s/old/net/gc
    :%s/\s\+$// # 删除行末的空格
    :100,200s/old/new/gc # 只替换100行到200行的数据

正则

  • 规则:

    1. 数量: \d\{1,3}, \+

    2. 代码块: \(pattern\)

    3. 使用代码块: \1

    4. 大小写: \c: ignore case \C match case

  • 案例:

    • 删除某一类错误: \[ERROR\]\(.*\n\)\{1,6\}AttributeError:.*\n

    • 删除多余的空行: :.,+12s/\ \+\n/\r/g

跳转

  • 学习链接

  • [ i查看上一次的用法

  • [ ctrl i 跳转到上面的定义

  • ] ctrl i 跳转到下面

  • ] i 查看下一次的用法

  • g; g, \,` 跳转到上一次/下一个/最后一次编辑的地方

  • 函数, 变量的跳转 [ + ctrl + i

  • ctrl + O 跳转到上次位置

  • ctrl + I 跳转到下次位置

  • { }, [[, [{, [( 段落前后跳转

多窗口

  • ^ws 拆分窗口

  • ^wv 垂直拆分窗口

  • ^ww 切换窗口

  • ^wq 退出窗口

  • 切换尺寸 :(vertical) res +5 ctrl + w + -|+|<|>`` ctrl-w K # 切换表格为水平分割还是竖直分割 ctrl-w H

编辑

  • x, X 删除(左边,右边)一个字符

  • d, D 删除

    • D 删除到行末

    • dw, d$, dd 删除单词, 末尾, 一行

    • dfx 删除到某个字符

    • dtx 删除到某个字符, 不包括这个字符

  • u 撤销操作

  • U 回滚上次编辑的行的数据

  • 复制到剪切板

    • "[a-z0-9|+|*]yy 复制到制定的剪切板 +为系统剪切板,需要安装vim-gnome

  • 粘贴剪切板

    • p, P 后面粘贴, 前面粘贴

    • "[a-z0-9|+|*p 粘贴剪切板的内容。

参考

  • 输入q进入命令模式

  • 输入a-z0-9选择宏的命名

  • 持续性操作, 知道按q退出

  • 输入@+命名执行录制的宏

插件

git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
:PluginInstall
mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim