Catalogue
删除每行后10个字符(替换+正则匹配到每行后10给字符)
:%s/.{10}$//
删除每行后10个字符
:%s/^.{10}//
\n匹配行尾(换行符),而\r匹配回车符。另一方面,在替换中\n插入空字符,而\r插入换行符(更准确地说,它被视为输入 )。这是一个小的非交互式示例,使用 Vim 命令行功能来说明这一点(换句话说,您可以将以下内容复制并粘贴到终端中以运行它)。 xxd显示结果文件的 hexdump。
1 | echo bar > test |
1 | Before: |
换句话说, \n已将字节 0x00 插入到文本中; \r已插入字节 0x0a。
删除空行
可以使用 :%g/^$/d 命令来删除只有一个换行符的空行
复制
:copy 命令 (缩写形式 :co,或 :t)
1 | :3,5t. 把第 3 行到第 5 行的内容复制到当前行下方 |
移动
:move 命令 (缩写形式为 :m)
TAB替换为空格:
:set ts=4
折叠
set foldmethod=indent
1 | za 打开/关闭当前的折叠 |
显示不可见字符
1 | :set invlist |
QuickFix列表
使用某些vim命令,将会使用QuickFix列表在不同文件的不同位置间导航。
例如:使用:make命令进行编译时,遍历编译错误;使用:vimgrep命令进行搜索时,遍历匹配结果;使用:helpgrep命令查找帮助信息时,遍历匹配
1 | :vimgrep options *.html |
替换^m字符
1 |
|
去掉重复行
1 | :sort //直接排序 |
非可见字符
1 | :set invlist |
通过:help digraph-table
可看到所有Vim中可输入的特殊字符:
1 | char digraph hex dec official name |
如何打出非可见字符
需要先按下前导键
1 | <Ctrl-K>HT |
切换窗口
1 | CTRL-W j 光标切换到下一个窗口 |
删除当前单词
1 | daw |
查找
查找当前单词
在 normal 模式下按下 * 即可查找光标所在单词(word), 要求每次出现的前后为空白字符或标点符号。
例如当前为 foo, 可以匹配 foo bar 中的 foo,但不可匹配 foobar 中的 foo。
按下 g* 即可查找光标所在单词的字符序列,每次出现前后字符无要求。 即 foo bar 和 foobar 中的 foo 均可被匹配到。
大小写敏感查找
在查找模式中加入 \c 表示大小写不敏感查找,\C 表示大小写敏感查找。例如:
/foo\c