Zoran:

  • vim有什么奇技淫巧?

ChatGPT:

  • Vim 是一个功能强大且高度可定制的文本编辑器,有许多实用的技巧可以帮助您提高编辑效率。以下是一些 Vim 的实用技巧:
  1. 使用.来重复上一次的操作。例如,您可以删除一行(使用dd),然后在其他地方使用.来重复删除。
  2. 快速移动:
  • 使用w向前移动一个词;
  • 使用b向后移动一个词;
  • 使用{}在段落之间跳转。
  1. 使用gg跳到文件的开头,使用G跳到文件的结尾。
  2. 使用%在配对的括号、引号等之间跳转。
  3. 使用:split:vsplit在水平和垂直方向上分割窗口。使用Ctrl-w加方向键在不同窗口之间切换。
  4. 使用:grep在多个文件中搜索文本,然后使用:cnext:cprev在匹配项之间导航。
  5. 使用:sort对选中的文本进行排序。
  6. 使用Vim的宏功能录制一系列操作,然后在其他地方重放它们。使用q加一个字母开始录制,使用q停止录制,然后使用@加相同字母重放。
  7. 使用:buffers查看当前打开的所有缓冲区。使用:buffer加缓冲区号切换到指定的缓冲区。
  8. 在查找模式中,使用\v进入”非常魔法”模式,以便在正则表达式中减少转义字符的数量。
  9. 使用ci"ci'ci(等命令更改括号或引号之间的文本。例如,ci(将删除圆括号内的文本并进入插入模式。
  10. 使用:help命令查找 Vim 的帮助文档。例如,:help :buffers将显示关于:buffers命令的帮助信息。
  11. 使用Ctrl-pCtrl-n在命令和搜索模式中进行自动补全。

这只是 Vim 中众多技巧的一部分。随着您在 Vim 中的使用经验增加,您将学到更多有趣和实用的功能。不要害怕尝试新的东西,并花时间探索 Vim 的强大功能。

Zoran:

  • 还有哪些技巧呢

ChatGPT:

  • 除了之前提到的一些技巧外,这里还有一些其他实用的 Vim 技巧:
  1. 使用:mksession:source保存和恢复 Vim 会话,这样您就可以在需要时恢复工作状态。
  2. 使用:retab命令调整当前缓冲区中的制表符和空格,以适应您的偏好设置。
  3. 使用:!加一个外部命令在 Vim 中运行外部程序,例如:!ls运行ls命令。您还可以在命令模式下使用!!将当前行替换为外部命令的输出。
  4. 在可视模式下,使用<>缩进和取消缩进选中的文本。
  5. 使用:e .快速浏览当前目录中的文件。在文件浏览器中,使用d创建目录,R重命名文件等。
  6. 使用gv重新选择上一次的可视模式选择。
  7. 使用Ctrl-oCtrl-i在编辑位置的跳转历史中向后和向前导航。
  8. 使用:tabnew:tabprev:tabnext:tabclose等命令管理标签页。
  9. 使用:registers查看 Vim 中所有的寄存器内容。可以使用"{register}y"{register}p等命令将文本复制到特定的寄存器中,或从寄存器中粘贴文本。
  10. 使用:global:vglobal命令在文件中查找并执行特定的操作。例如,:g/foo/d删除包含foo的所有行,:v/bar/d删除不包含bar的所有行。
  11. 使用:norm命令在多行上执行普通模式命令。例如,在可视模式下选择多行,然后输入:norm A;,这将在每行的末尾添加分号。
  12. 使用Ctrl-v进入可视块模式,选择多列文本。这在编辑表格数据或同时修改多行代码时非常有用。

这些技巧涵盖了 Vim 的许多功能,但仍然只是冰山一角。不断地学习和实践将帮助您成为一个更高效的 Vim 用户。查看 Vim 的文档和在线社区也是学习新技巧的好方法。

Zoran:

  • 还有哪些呢

ChatGPT:

  • 这里有更多的 Vim 技巧供您参考:
  1. 使用:%s/foo/bar/g将全文中的foo替换为bar。在替换操作之前添加c,如:%s/foo/bar/gc来逐个确认是否进行替换。
  2. 使用:earlier:later命令在不同版本的文件内容之间切换。例如,:earlier 10m会将文件内容回退到10分钟之前的状态。
  3. 使用:diffsplit:vert diffsplit与另一个文件进行比较。这将以水平或垂直分割窗口的方式显示文件差异。
  4. 在插入模式下,使用Ctrl-r将寄存器内容插入光标位置。
  5. 使用:normal执行普通模式命令。例如,:normal dd会删除当前行。这在脚本或 Vim 配置文件中很有用。
  6. 使用:set spell开启拼写检查,]s跳转到下一个拼写错误,[s跳转到上一个拼写错误。使用zg将单词添加到自定义词典。
  7. 使用*#在当前文件中搜索光标所在单词的下一个或上一个匹配项。
  8. 使用:e#Ctrl-^在当前编辑的两个文件之间切换。
  9. 使用Ctrl-aCtrl-x在光标位置处增加或减小数字。
  10. 使用:resize:vertical resize调整当前窗口的大小。
  11. 使用[(])在同一级别的代码块之间跳转。
  12. 使用:read将外部命令的输出插入到当前文件中。例如,:read !date插入当前日期。
  13. 使用:abbreviate定义输入缩写。例如,:abbreviate iab teh the会将您键入的teh自动更正为the
  14. 使用vimtutor命令学习 Vim 基本操作。这是一个互动教程,适合初学者。
  15. 使用:checktime检查当前编辑的文件是否在磁盘上有新的修改。这在多人协作编辑文件时很有用。

请继续探索 Vim 的强大功能,阅读官方文档和在线资源来进一步提高您的 Vim 技能。

Zoran:

  • 还有吗

ChatGPT:

  • 当然还有更多的 Vim 技巧可以分享给您:
  1. 使用:argdo, :bufdo, :tabdo, :windo对所有参数、缓冲区、标签页或窗口执行相同的操作。例如,:argdo %s/foo/bar/g将在所有参数中的文件中替换foobar
  2. 使用ga查看光标下字符的 ASCII 码值和十六进制表示。
  3. 使用:registers查看当前可用的寄存器内容。
  4. 在可视模式下选择文本后,使用:normal命令对所选文本执行普通模式命令。例如,:'<,'>normal! Iu会将选中文本的每一行首字母转换为大写。
  5. 使用<C-w>gf在新的水平分割窗口中打开光标下的文件名对应的文件。
  6. 使用:TOhtml将当前文件转换为带有 Vim 语法高亮的 HTML 文件。
  7. 使用zm, zr, zc, zo分别折叠/展开、关闭/打开折叠。使用z=来修复拼写错误。
  8. 使用:scriptnames列出所有已加载的脚本文件。
  9. 使用:runtime来运行 Vim 脚本。这对于加载插件很有用,例如:runtime plugin/foo.vim
  10. 使用:helpgrep在所有帮助文件中搜索指定的文本。例如,:helpgrep foo将搜索包含“foo”的所有帮助文件。

这只是冰山一角,Vim 是一个非常强大且可定制的编辑器。要想深入了解 Vim 的各种功能和技巧,请参阅官方文档和社区资源。通过不断练习和探索,您会不断提高使用 Vim 的技能。

Zoran:

  • 请你介绍一下vim的abbreviate如何使用

ChatGPT:

  • Vim 中的缩写(Abbreviations)是一种简化输入的方法,允许您将常用短语或字符组合定义为一个简短的别名。当您键入这个别名并输入一个非字母字符(如空格、标点符号等)时,Vim 会自动将其扩展为预先定义的短语。

Vim 提供了几种定义缩写的方法,下面是一些例子:

  1. 使用 :abbreviate 命令定义缩写:
1
2

:abbreviate ws Write-Save

这会创建一个缩写,将 “ws” 扩展为 “Write-Save”。当您在插入模式下键入 “ws” 并输入一个非字母字符(如空格、标点符号等)时,”ws” 将自动扩展为 “Write-Save”。

  1. 使用 :iabbrev 定义插入模式下的缩写:
1
2

:iabbrev tb table

这会创建一个仅在插入模式下有效的缩写。在命令模式或其他模式下,”tb” 不会扩展为 “table”。

  1. 使用 :cabbrev 定义命令模式下的缩写:
1
2

:cabbrev E Edit

这会创建一个仅在命令模式下有效的缩写。在插入模式或其他模式下,”E” 不会扩展为 “Edit”。

要删除已定义的缩写,可以使用 :unabbreviate:iunabbrev:cunabbrev 命令。例如:

1
2
3
4

:unabbreviate ws
:iunabbrev tb
:cunabbrev E

要列出当前已定义的缩写,可以使用 :abbreviations 命令。这将显示所有模式下的缩写。要查看特定模式下的缩写,可以使用 :iabbreviations(插入模式)或 :cabbreviations(命令模式)。

注意,缩写对大小写敏感。如果您需要创建一个大小写不敏感的缩写,可以使用 :abbreviate!:iabbrev!:cabbrev!。例如:

1
2

:abbreviate! ws Write-Save