set paste # 粘贴时不再乱序
/ # 向后查找指定字符串, n 查找下一个, N 查找上一个 ? # 向前查找指定字符串, n 查找上一个, N 查找下一个 f # 在当前行向后查找指定字符 , ; 查找下一个, , 查找上一个 F # 在当前行向前查找指定字符 , ; 查找上一个, , 查找下一个 t # 在当前行向后查找指定字符 , ; 查找下一个, , 查找上一个, 光标将停在找到字符的前一个上 T # 在当前行向前查找指定字符 , ; 查找上一个, , 查找下一个, 光标将停在找到字符的前一个上 % # 跳转到对应的括号
Esc -- Ctrl+[ # 回到 普通模式
例如: Ctrl+Ozz, 将当前行置于屏幕中间
- 使用 Ctrl+O 进入普通模式
- 执行命令 zz
- 回到插入模式
:x # 保存并退出
:!ls # 执行外部命令 :r !ls # 将外部命令的执行结果插入到下一行 :1,5w !ls # 将指定行作为命令的输入 :1,5 !ls # 将指定行作为命令的输入, 删除这些行, 然后将外部命令的输出插入到这些行
vim -c 'set binary noeol' -c 'wq!' 1.txt # 移除文件末尾的换行符 vim -c 'set eol' -c 'wq!' 1.txt # 添加文件末尾的换行符
vim -c "...." 1.txt # vim 启动时执行命令 vim "+..." 1.txt # vim 启动时执行命令
set nobomb # 去掉 bomb, 在 vimrc 中不生效 set bomb # 添加 bomb
set encoding=utf-8 # vim 内部使用的编码, 一般用不到 set fileencoding=utf-8 # 编辑文件时, 设置文档保存时的编码 # 文件无乱码时, 可以使用此选项转换编码规则 set fileencodings=ucs-bom,utf-8,gbk,big5,gb18030,latin1 # 探测文件编码格式的顺序 set termencoding=utf-8 # 和终端显示有关, 一般不需要修改
set nohlsearch # 去掉高亮
edit ++enc=utf-8 ... # 以 utf-8 重新打开文件
w! ++enc=utf8 # 使用 utf-8 重新加载该文件, 使用 utf-8 保存该文件
h # 左移一个字符 j # 下移一行 k # 上移一行 l # 右移一个字符
x # 删除当前光标所在位置的字符 dl # 删除当前光标所在位置的字符 dw # 删除当前光标所在位置到单词末尾的字符 daw # 删除当前光标所在位置的单词 d2w # 删除当前光标所在位置之后的两个单词 2dw # 删除当前光标所在位置之后的两个单词 dd # 删除当前光标所在行 5dd # 删除当前光标所在行开始的五行 dap # 删除当前光标所在段落 d$ # 删除当前光标所在位置至行尾的内容 d^ # 删除当前光标所在位置至行头的内容
J # 删除光标所在行尾的换行符 u # 撤销上一命令 ctrl+r # 撤销上一个撤销 a # 在光标后追加数据 A # 在光标所在行尾追加数据 r char # 使用 char 替换光标所在位置的单个字符 R text # 进入替换模式,直到按下ESC键 i # 在当前光标后插入数据 I # 在当前光标所在行行头插入数据
s # 删除当前光标所在位置的字符, 并进入插入模式 cl # 删除当前光标所在位置的字符, 并进入插入模式 cw # 删除当前光标所在位置的单词, 并进入插入模式 cap # 删除当前光标所在位置的段落, 并进入插入模式 C # 删除当前光标所在位置到该行末尾的字符, 并进入插入模式 c$ # 删除当前光标所在位置到该行末尾的字符, 并进入插入模式 S # 删除当前光标所在行, 并进入插入模式
vim -c 'set binary noeol' -c 'wq!' 1.txt
echo -n $(cat 1.txt | tr -d '\n') > 1.txt
vim -c 'set eol' -c 'wq!' 1.txt
alias v='vim -c "e ++enc=utf-8" -c "set nobomb"' alias addeol="vim -c 'set eol' -c 'wq!'" # 文件末尾 无换行符 => 有换行符 alias deleol="vim -c 'set bin noeol' -c 'wq!'" # 文件末尾 有换行符 => 无换行符
Ctrl+F 下翻一屏 Ctrl+B 上翻一屏
h # 左移一个字符 j # 下移一行 k # 上移一行 l # 右移一个字符
x # 删除当前光标所在位置的字符 dl # 删除当前光标所在位置的字符 dw # 删除当前光标所在位置到单词末尾的字符 daw # 删除当前光标所在位置的单词 d2w # 删除当前光标所在位置之后的两个单词 2dw # 删除当前光标所在位置之后的两个单词 dd # 删除当前光标所在行 5dd # 删除当前光标所在行开始的五行 dap # 删除当前光标所在段落 d$ # 删除当前光标所在位置至行尾的内容 d^ # 删除当前光标所在位置至行头的内容
J # 删除光标所在行尾的换行符 u # 撤销上一命令 a # 在光标后追加数据 A # 在光标所在行尾追加数据 r char # 使用 char 替换光标所在位置的单个字符 R text # 进入替换模式,直到按下ESC键 i # 在当前光标后插入数据 I # 在当前光标所在行行头插入数据
cl cw cap # 删除内容并进入插入模式
G # 移到最后一行 gg # 移到第一行 num gg # 移到第 num 行
:s/old/new/ # 替换光标所在行第一个的 old :s/old/new/2g # 替换光标所在行第二个以及之后的 old :s/old/new/g # 替换光标所在行所有的 old :n,ms/old/new/g # 替换行号n和m之间所有的 old :%s/old/new/g # 替换整个文件中的所有的 old :%s/old/new/gc # 替换整个文件中的所有 old,但在每次出现时提示 :s/^old/new/ # 替换光标所在行的以 old 打头的 :s/old$/new/ # 替换光标所在行的以 old 结尾的 :s/^$// # 删除空行
:w filename # 保存为指定文件