如何在 NVIM 中使用 AUTO 命令处理具有特定名称的文件

how to use auto commands in nvim to process files that have a certain name

提问人:user3236841 提问时间:11/15/2023 最后编辑:user3236841 更新时间:11/19/2023 访问量:78

问:

我是新手,对 augroup/autocommand 应该如何工作有点困惑。nvim

因此,我正在尝试让以下内容发挥作用(来自:https://ianfinlayson.net/posts/10-mutt)

" command on all mutt files to remove
augroup autocom
    autocmd!
    " executes my command on quit
     autocmd VimLeave /tmp/mutt-* !/home/finlayson/bin/email-process %
augroup END

它与 vim 配合得很好(但把它放在我的身上)我正在尝试修改它以与 .但是,我对如何将其翻译为 .我阅读了有关 https://neovim.io/doc/user/autocmd.html#autocmd-groups 的文档,但感到非常困惑,并希望得到一些建议,因为这是我第一次尝试这样做,是 nvim 的新手。.vimrcnvimnvimnvim

更新以下更多建议:我更新了我的以下内容:~/.config/nvim/init.vim

:lua << EOF

vim.api.nvim_create_autocmd('VimLeave', {
  group = vim.api.nvim_create_augroup('autocom', { clear = true }),
  pattern = '/tmp/mutt-*',
  callback = function()
    local filename = vim.fn.expand('%:p')
    vim.fn.system('/home/finlayson/bin/email-process ' .. filename)
  end,
})
EOF

进入 mutt 消息的编辑模式时没有错误,除非我退出编辑器并在以下情况下执行脚本:nvim

Error running "/usr/bin/nvim '/tmp/mutt-localhost-1000-234729-13900684134588740365'"!

尼奥维姆

评论

0赞 Rob 11/19/2023
vi.stackexchange.com

答:

0赞 lcheylus 11/15/2023 #1

你可以在 Lua 中使用 vim.api.nvim_create_autocmd 函数创建 Neovim 自动命令,并使用 pattern 来选择你的文件。

vim.api.nvim_create_autocmd('VimLeave', {
  group = vim.api.nvim_create_augroup('autocom', { clear = true }),
  pattern = '/tmp/mutt-*',
  callback = function()
    local filename = vim.fn.expand('%:p')
    vim.fn.system('/home/finlayson/bin/email-process ' .. filename)
  end,
})

评论

0赞 lcheylus 11/15/2023
对不起,我忘记了代码中的一对括号 => 通过版本修复。
1赞 user3236841 11/17/2023
对不起@lcheylus,但我现在收到一个不同的错误:用错误语句更新。我完全不明白这个错误。似乎有两个论点,那么为什么要抱怨呢?是否有其他语法不正确?更新了更多详细信息。
1赞 user3236841 11/17/2023
创建一个名为 并将上述内容放入其中的新文件可以消除错误,但不会执行任何操作。是否允许同时拥有文件和文件?是否需要一种特定的方式来调用文件?.config/nvim/lua/init.lua.config/nvim/init.vim.config/nvim/lua/init.lua.config/nvim/lua/init.lua
1赞 user3236841 11/17/2023
我发现要包含 ,我必须在我的 include 中执行以下操作:这会将错误带回,并指出 @lcheylus 代码中可能存在问题。init.lua.config/nvim/init.vim"source $HOME/.config/nvim/lua/init.lua
1赞 user3236841 11/18/2023
多亏了@lcheylus,错误消失了,一切都加载正常,但该函数实际上并没有做任何事情。我对为什么它不起作用感到非常困惑。上面更新了。
1赞 heygarrett 11/19/2023 #2

vim.cmd用于 Vim 脚本命令 ()。
用于 Vim 函数 ()。
:help vim.cmd()vim.fn:help vim.fn

对于后者,您可以使用函数 () 来运行 shell 命令。所以你可能想要这样的东西:system:help system()

vim.fn.system({ "/home/finlayson/bin/email-process", filename })

评论

0赞 user3236841 11/19/2023
抱歉,我收到一个错误:上面更新了使用的确切语法。Error running "/usr/bin/nvim '/tmp/mutt-localhost-1000-234729-13900684134588740365'"!