命令“在插入模式下,转到包含内容的最后一行的末尾”

命令“在插入模式下,转到包含内容的最后一行的末尾”

对于纯文本文件,当我在 Vim 中重新打开它们以添加内容时,我希望转到最后一行内容的末尾并进入插入模式。在理想情况下,GA打开文件后执行简单的操作即可解决此问题。不幸的是,我有在文件末尾添加一些额外换行符的习惯,事实证明这是一个很难改掉的习惯。

鉴于此,在 Vim 中,最简单的方法是什么来表示“转到文件中最后一行,其中包含内容,转到该行的末尾并进入插入模式”?我想我的问题的关键是,如何向 Vim 表达“最后一行包含内容”的概念?

答案1

你可以?\w enter使用A

  • ?\w向后搜索第一个单词
  • A在包含内容的最后一行进入插入模式

答案2

如果你希望始终转到文件或给定类型文件的最后一行非空白行,你可以插入一个自动命令在你的 中~/.vimrc。例如:

:autocmd BufRead *.txt :$;?\S?

这将自动转到文件末尾,并在与 glob 模式匹配的任何文件中搜索非空白字符*.txt。然后,您可以键入o例如添加内容。

可以使用相同的技术来删除在将缓冲区末尾留下的空白行写回到文件时,因此避免问题 首先。例如:

:autocmd FileType python autocmd BufWritePre <buffer> :%s/\(\n\s*\)\+\%$//e

此示例仅适用于被识别为文件类型 python 的文件(例如后缀 .py)。

答案3

我从未使用过 Vim,但我会提出一些逻辑:

  • 转至文件末尾
  • 后退一个字符
  • 用空字符串替换换行符 - 如果成功,则重复;如果不成功,我们就完成了。

相关内容