Vim 常用操作
以 root 用户保存当前文件
:w !sudo tee %
字符编码
以指定字符编码打开文件:
:e ++enc=<encoding> [filename]
以指定字符编码保存文件:
:w ++enc=<encoding> [filename]
指定当前使用的字符编码:
:set encoding[=<encoding>]
指定用于保存文件的字符编码:
:set fileencoding[=<encoding>]
显示当前光标下字符的代码点( ga
):
:as
Hex(hexadecimal)是 Unicode 代码点值,即 Unicode number,在 vim 的插入模式中输入 Unicode 字符:
ctrl-v[Unicode number]
,比如ctrl-vu21b2
,显示当前光标下字符在磁盘上的实际字节值:g8
,例如g
为67
即 ASCII 十六进制值(ctrl-vu0067
)。
识别当前文件中无效的 UTF-8 字符序列:
8g8
插件——fzf.vim
命令 | 说明 |
---|---|
:Files [PATH] | 在当前或指定目录中搜索文件名 |
:Buffers | 在缓冲区中搜索文件名 |
:History: | 搜索历史命令 |
:Rg | 在当前目录搜索文件内容 |
:Lines | 在缓冲区中搜索内容 |
:BLines | 在当前缓存区(即当前文件)中搜索内容 |
:Filetypes | 搜索文件类型 |
Shell
运行单行 Shell 命令:
:! pwd
运行多行 Shell 命令:
:shell
基础操作
导航:
ctrl-o
:光标回退到之前的位置ctrl-i
:光标前进到之前修改的位置
折叠:
zf
:为当前选择的内容创建折叠zd
:删除当前折叠zE
:删除所有折叠zj
:移动至下一个折叠zk
:移动至上一个折叠zc
:关闭当前打开的折叠zo
:打开当前的折叠zO
:打开当前的折叠及其嵌套的折叠zm
:关闭所有折叠zM
:关闭所有折叠及其嵌套的折叠zr
:打开所有折叠zR
:打开所有折叠及其嵌套的折叠zn
:禁用折叠zN
:启用折叠
屏幕:
shift-h
:光标来到屏幕的最上方shift-m
:光标来到屏幕的正中间shift-l
:光标来到屏幕的最下方zt
:将当前行置于屏幕顶部zz
:将当前行置于屏幕中央
杂项:
shift-j
:合并行
自定义快捷键
- 使用
ctrl-[hjkl]
来调整窗口大小 - 使用
ctrl-c
单词大小写切换(需要切换输入模式与普通模式)Shift-`
:在普通模式下对指定单字符切换大小写
- 使用
tab
切换到下一个缓冲区文件 - 使用
shift-tab
切换到上一个缓冲区文件 - 使用
ctrl-s
保存 - 使用
ctrl-q
退出 - 使用
<leader>[hjkl]
窗口间导航 - 使用
<leader>f
在当前目录及子目录中搜索文件内容 - 使用
<leader>e
在当前文件中搜索文件内容 - 使用
shift-e
在缓冲区中搜索文件内容 - 使用
<leader>o
在当前目录及子目录搜索文件名 - 使用
ctrl-e
在缓冲区中搜索文件名 - 使用
<leader>c
搜索历史命令
Netrw
:Ve
:打开目录树gh
:显示或隐藏隐藏的文件I
:显示或隐藏 bannerd
:新建一个目录R
:重命名%:
新建一个文件
寄存器
默认寄存器
yiw
:复制整个单词到默认寄存器p
:从默认寄存器中读取文本并粘贴(普通模式)ctr-r"
:从默认寄存器中读取文本并粘贴(插入模式)
自定义寄存器
"ayiw
:复制整个单词到寄存器 a"ap
:从寄存器 a 中读取并粘贴(普通模式)ctr-ra
:从寄存器 a 中读取并粘贴(插入模式)
录制并使用宏
录制宏
q[a-z]
:开始记录一个宏到某个寄存器q
:停止录制宏
##使用宏
[num]@[a-z]
:从指定寄存器中读取宏并执行 num 次.:
重复使用宏
Vimdiff
打开文件对比窗口:
vimdiff first.txt second.txt
vim -d first.txt second.txt
导航:
]c
:跳转到下一个更改[c
:跳转到上一个更改
获得更改( do
,diff obtain):
:diffget
放置更改( dp
,diff put):
:diffput
刷新当前缓冲区的比对:
:diffupdate
Git 合并冲突
git mergetool
:运行合并冲突解决工具( vimdiff
)来解决合并冲突
- LOCAL:来自当前分支的文件
- BASE:共同的祖先,文件在两个更改之前的样子
- REMOTE:要合并到当前本地分支的文件
- MERGED:最终保存到版本库中的合并结果
:diffget REMOTE " get from REMOTE
:diffget BASE " get from BASE
:diffget LOCAL " get from LOCAL
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

下一篇: 不要相信一个熬夜的人说的每一句话
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论