VimTips
Zoran:
- vim有什么奇技淫巧?
ChatGPT:
- Vim 是一个功能强大且高度可定制的文本编辑器,有许多实用的技巧可以帮助您提高编辑效率。以下是一些 Vim 的实用技巧:
- 使用
.来重复上一次的操作。例如,您可以删除一行(使用dd),然后在其他地方使用.来重复删除。 - 快速移动:
- 使用
w向前移动一个词; - 使用
b向后移动一个词; - 使用
{和}在段落之间跳转。
- 使用
gg跳到文件的开头,使用G跳到文件的结尾。 - 使用
%在配对的括号、引号等之间跳转。 - 使用
:split和:vsplit在水平和垂直方向上分割窗口。使用Ctrl-w加方向键在不同窗口之间切换。 - 使用
:grep在多个文件中搜索文本,然后使用:cnext和:cprev在匹配项之间导航。 - 使用
:sort对选中的文本进行排序。 - 使用
Vim的宏功能录制一系列操作,然后在其他地方重放它们。使用q加一个字母开始录制,使用q停止录制,然后使用@加相同字母重放。 - 使用
:buffers查看当前打开的所有缓冲区。使用:buffer加缓冲区号切换到指定的缓冲区。 - 在查找模式中,使用
\v进入”非常魔法”模式,以便在正则表达式中减少转义字符的数量。 - 使用
ci"、ci'和ci(等命令更改括号或引号之间的文本。例如,ci(将删除圆括号内的文本并进入插入模式。 - 使用
:help命令查找 Vim 的帮助文档。例如,:help :buffers将显示关于:buffers命令的帮助信息。 - 使用
Ctrl-p和Ctrl-n在命令和搜索模式中进行自动补全。
这只是 Vim 中众多技巧的一部分。随着您在 Vim 中的使用经验增加,您将学到更多有趣和实用的功能。不要害怕尝试新的东西,并花时间探索 Vim 的强大功能。
Zoran:
- 还有哪些技巧呢
ChatGPT:
- 除了之前提到的一些技巧外,这里还有一些其他实用的 Vim 技巧:
- 使用
:mksession和:source保存和恢复 Vim 会话,这样您就可以在需要时恢复工作状态。 - 使用
:retab命令调整当前缓冲区中的制表符和空格,以适应您的偏好设置。 - 使用
:!加一个外部命令在 Vim 中运行外部程序,例如:!ls运行ls命令。您还可以在命令模式下使用!!将当前行替换为外部命令的输出。 - 在可视模式下,使用
<和>缩进和取消缩进选中的文本。 - 使用
:e .快速浏览当前目录中的文件。在文件浏览器中,使用d创建目录,R重命名文件等。 - 使用
gv重新选择上一次的可视模式选择。 - 使用
Ctrl-o和Ctrl-i在编辑位置的跳转历史中向后和向前导航。 - 使用
:tabnew、:tabprev、:tabnext和:tabclose等命令管理标签页。 - 使用
:registers查看 Vim 中所有的寄存器内容。可以使用"{register}y、"{register}p等命令将文本复制到特定的寄存器中,或从寄存器中粘贴文本。 - 使用
:global和:vglobal命令在文件中查找并执行特定的操作。例如,:g/foo/d删除包含foo的所有行,:v/bar/d删除不包含bar的所有行。 - 使用
:norm命令在多行上执行普通模式命令。例如,在可视模式下选择多行,然后输入:norm A;,这将在每行的末尾添加分号。 - 使用
Ctrl-v进入可视块模式,选择多列文本。这在编辑表格数据或同时修改多行代码时非常有用。
这些技巧涵盖了 Vim 的许多功能,但仍然只是冰山一角。不断地学习和实践将帮助您成为一个更高效的 Vim 用户。查看 Vim 的文档和在线社区也是学习新技巧的好方法。
Zoran:
- 还有哪些呢
ChatGPT:
- 这里有更多的 Vim 技巧供您参考:
- 使用
:%s/foo/bar/g将全文中的foo替换为bar。在替换操作之前添加c,如:%s/foo/bar/gc来逐个确认是否进行替换。 - 使用
:earlier和:later命令在不同版本的文件内容之间切换。例如,:earlier 10m会将文件内容回退到10分钟之前的状态。 - 使用
:diffsplit或:vert diffsplit与另一个文件进行比较。这将以水平或垂直分割窗口的方式显示文件差异。 - 在插入模式下,使用
Ctrl-r将寄存器内容插入光标位置。 - 使用
:normal执行普通模式命令。例如,:normal dd会删除当前行。这在脚本或 Vim 配置文件中很有用。 - 使用
:set spell开启拼写检查,]s跳转到下一个拼写错误,[s跳转到上一个拼写错误。使用zg将单词添加到自定义词典。 - 使用
*和#在当前文件中搜索光标所在单词的下一个或上一个匹配项。 - 使用
:e#或Ctrl-^在当前编辑的两个文件之间切换。 - 使用
Ctrl-a和Ctrl-x在光标位置处增加或减小数字。 - 使用
:resize和:vertical resize调整当前窗口的大小。 - 使用
[(和])在同一级别的代码块之间跳转。 - 使用
:read将外部命令的输出插入到当前文件中。例如,:read !date插入当前日期。 - 使用
:abbreviate定义输入缩写。例如,:abbreviate iab teh the会将您键入的teh自动更正为the。 - 使用
vimtutor命令学习 Vim 基本操作。这是一个互动教程,适合初学者。 - 使用
:checktime检查当前编辑的文件是否在磁盘上有新的修改。这在多人协作编辑文件时很有用。
请继续探索 Vim 的强大功能,阅读官方文档和在线资源来进一步提高您的 Vim 技能。
Zoran:
- 还有吗
ChatGPT:
- 当然还有更多的 Vim 技巧可以分享给您:
- 使用
:argdo,:bufdo,:tabdo,:windo对所有参数、缓冲区、标签页或窗口执行相同的操作。例如,:argdo %s/foo/bar/g将在所有参数中的文件中替换foo为bar。 - 使用
ga查看光标下字符的 ASCII 码值和十六进制表示。 - 使用
:registers查看当前可用的寄存器内容。 - 在可视模式下选择文本后,使用
:normal命令对所选文本执行普通模式命令。例如,:'<,'>normal! Iu会将选中文本的每一行首字母转换为大写。 - 使用
<C-w>gf在新的水平分割窗口中打开光标下的文件名对应的文件。 - 使用
:TOhtml将当前文件转换为带有 Vim 语法高亮的 HTML 文件。 - 使用
zm,zr,zc,zo分别折叠/展开、关闭/打开折叠。使用z=来修复拼写错误。 - 使用
:scriptnames列出所有已加载的脚本文件。 - 使用
:runtime来运行 Vim 脚本。这对于加载插件很有用,例如:runtime plugin/foo.vim。 - 使用
:helpgrep在所有帮助文件中搜索指定的文本。例如,:helpgrep foo将搜索包含“foo”的所有帮助文件。
这只是冰山一角,Vim 是一个非常强大且可定制的编辑器。要想深入了解 Vim 的各种功能和技巧,请参阅官方文档和社区资源。通过不断练习和探索,您会不断提高使用 Vim 的技能。
Zoran:
- 请你介绍一下vim的abbreviate如何使用
ChatGPT:
- Vim 中的缩写(Abbreviations)是一种简化输入的方法,允许您将常用短语或字符组合定义为一个简短的别名。当您键入这个别名并输入一个非字母字符(如空格、标点符号等)时,Vim 会自动将其扩展为预先定义的短语。
Vim 提供了几种定义缩写的方法,下面是一些例子:
- 使用
:abbreviate命令定义缩写:
1 |
|
这会创建一个缩写,将 “ws” 扩展为 “Write-Save”。当您在插入模式下键入 “ws” 并输入一个非字母字符(如空格、标点符号等)时,”ws” 将自动扩展为 “Write-Save”。
- 使用
:iabbrev定义插入模式下的缩写:
1 |
|
这会创建一个仅在插入模式下有效的缩写。在命令模式或其他模式下,”tb” 不会扩展为 “table”。
- 使用
:cabbrev定义命令模式下的缩写:
1 |
|
这会创建一个仅在命令模式下有效的缩写。在插入模式或其他模式下,”E” 不会扩展为 “Edit”。
要删除已定义的缩写,可以使用 :unabbreviate、:iunabbrev 或 :cunabbrev 命令。例如:
1 |
|
要列出当前已定义的缩写,可以使用 :abbreviations 命令。这将显示所有模式下的缩写。要查看特定模式下的缩写,可以使用 :iabbreviations(插入模式)或 :cabbreviations(命令模式)。
注意,缩写对大小写敏感。如果您需要创建一个大小写不敏感的缩写,可以使用 :abbreviate!、:iabbrev! 或 :cabbrev!。例如:
1 |
|



