提问人:user3236841 提问时间:11/15/2023 最后编辑:user3236841 更新时间:11/19/2023 访问量:78
如何在 NVIM 中使用 AUTO 命令处理具有特定名称的文件
how to use auto commands in nvim to process files that have a certain name
问:
我是新手,对 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 的新手。.vimrc
nvim
nvim
nvim
更新以下更多建议:我更新了我的以下内容:~/.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赞
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'"!
评论