避免读取文件成为 Vim 中的备用缓冲区
Avoid read file being the alternate buffer in Vim
我遇到了 Vim 的问题,在这种情况下,NeoVim 是否有所作为。我有一个 autocmd
在创建特定类型的文件时包含样板文件,在本例中为 Vue 文件。这是代码:
autocmd BufNewFile *.vue silent! 0r ~/.dotfiles/skeletons/vue-pug-scss.vue
这个简单的东西很好用,除非使用 CTRL-^
它返回到样板文件,我不想要这个。可以这么说,我不希望样板文件出现在我访问过的文件的历史记录中。
我尝试了很多东西,但我很难理解缓冲区列表如何与 CTRL-^
一起工作。问题是,如果我 运行 :ls
,样板文件不会出现,即使它是我在 CTRL-^
时得到的。只有在我重新使用它后,它才会出现在 :ls
中。
我认为可以添加 | bd#
但它说没有缓冲区被删除。当我在新创建的文件上时,:bd#
不起作用,而 :b#
起作用。这对我来说听起来完全不合逻辑,或者充其量是不一致的。虽然我可能混淆了备用缓冲区和以前的缓冲区或其他东西。
有人知道我该怎么做吗?
来自 :help :read
,强调我的:
If a file name is given with ":r", it becomes the alternate file. This can be
used, for example, when you want to edit that file instead: ":e! #". This can
be switched off by removing the 'a' flag from the 'cpoptions' option.
这里有两个 sub-questions:
I don't want the boilerplate file to be in my history of visited files so to speak.
一些可能的选项,排名不分先后
- 避免使用
:h :read
命令以支持 :h readfile()
和 :h append()
等;
- 从
:h 'cpoptions'
中删除 a
;
- 将
:h :keepalt
添加到您的命令中。
请注意,3) 仍然会创建一个新缓冲区,尽管它不会成为备用缓冲区。
The thing is that if I run :ls, the boilerplate file does not appear
When I am on the newly created file, :bd# does not work whereas :b# works. This sounds completely illogical to me, or inconsistent at best.
Vim 中的缓冲区具有“已加载”和“已列出”的布尔状态。两者相互独立。
:h :ls
默认只显示“列出的”缓冲区。要查看“未列出的”缓冲区,也必须键入 :ls!
:h :bdelete
将缓冲区状态同时更改为“未列出”和“已卸载”。由于您的缓冲区已经“未列出”和“卸载”,因此您得到了 :h E516
。您可以使用 :h :bwipeout
完全删除缓冲区,但在这种情况下按 :h CTRL-^
将导致 :h E23
错误。要设置新的备用缓冲区,您可以键入 :let @# = 42
,其中 42
是一些 现有的 缓冲区编号或名称。或者,:balt foobar
可以创建一个名为 foobar 的新 unloaded 和 listed 缓冲区并设置它作为备选。
我遇到了 Vim 的问题,在这种情况下,NeoVim 是否有所作为。我有一个 autocmd
在创建特定类型的文件时包含样板文件,在本例中为 Vue 文件。这是代码:
autocmd BufNewFile *.vue silent! 0r ~/.dotfiles/skeletons/vue-pug-scss.vue
这个简单的东西很好用,除非使用 CTRL-^
它返回到样板文件,我不想要这个。可以这么说,我不希望样板文件出现在我访问过的文件的历史记录中。
我尝试了很多东西,但我很难理解缓冲区列表如何与 CTRL-^
一起工作。问题是,如果我 运行 :ls
,样板文件不会出现,即使它是我在 CTRL-^
时得到的。只有在我重新使用它后,它才会出现在 :ls
中。
我认为可以添加 | bd#
但它说没有缓冲区被删除。当我在新创建的文件上时,:bd#
不起作用,而 :b#
起作用。这对我来说听起来完全不合逻辑,或者充其量是不一致的。虽然我可能混淆了备用缓冲区和以前的缓冲区或其他东西。
有人知道我该怎么做吗?
来自 :help :read
,强调我的:
If a file name is given with ":r", it becomes the alternate file. This can be used, for example, when you want to edit that file instead: ":e! #". This can be switched off by removing the 'a' flag from the 'cpoptions' option.
这里有两个 sub-questions:
I don't want the boilerplate file to be in my history of visited files so to speak.
一些可能的选项,排名不分先后
- 避免使用
:h :read
命令以支持:h readfile()
和:h append()
等; - 从
:h 'cpoptions'
中删除a
; - 将
:h :keepalt
添加到您的命令中。
请注意,3) 仍然会创建一个新缓冲区,尽管它不会成为备用缓冲区。
The thing is that if I run :ls, the boilerplate file does not appear
When I am on the newly created file, :bd# does not work whereas :b# works. This sounds completely illogical to me, or inconsistent at best.
Vim 中的缓冲区具有“已加载”和“已列出”的布尔状态。两者相互独立。
:h :ls
默认只显示“列出的”缓冲区。要查看“未列出的”缓冲区,也必须键入 :ls!
:h :bdelete
将缓冲区状态同时更改为“未列出”和“已卸载”。由于您的缓冲区已经“未列出”和“卸载”,因此您得到了 :h E516
。您可以使用 :h :bwipeout
完全删除缓冲区,但在这种情况下按 :h CTRL-^
将导致 :h E23
错误。要设置新的备用缓冲区,您可以键入 :let @# = 42
,其中 42
是一些 现有的 缓冲区编号或名称。或者,:balt foobar
可以创建一个名为 foobar 的新 unloaded 和 listed 缓冲区并设置它作为备选。