如何在 nvim 中使用自动命令来处理具有特定名称的文件

问题描述 投票:0回答:1

我是

nvim
的新手,对 augroup/autocommand 的工作原理有点困惑。

所以,我正在尝试让以下内容发挥作用(来自: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 配合得很好(但把它放在我的

.vimrc
上)我正在尝试修改它以与
nvim
一起使用。然而,我很困惑如何将其翻译为
nvim
。我阅读了 https://neovim.io/doc/user/autocmd.html#autocmd-groups 上的文档,但感到非常困惑,并希望得到一些建议,因为这是我第一次尝试这样做在
nvim
,作为一个新手。

更新:我用以下内容更新了我的

~/.config/nvim/init.vim

:lua << EOF

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

这也是我完成其他 lua 命令的方式,如下: 来自 https://github.com/nanotee/nvim-lua-guide#lua 但我在第 53 行收到错误(这是 EOF 所在的行)。

E5107: Error loading lua [string ":lua"]:3: ')' expected (to close '(' at line 2)

这是我对其他案例所做的:

:lua << EOF
vim.cmd("colorscheme nightfly")
EOF

:lua << EOF

local readline = require('readline')
vim.keymap.set('!', '<C-k>', readline.kill_line)
vim.keymap.set('!', '<C-u>', readline.backward_kill_line)
vim.keymap.set('!', '<M-d>', readline.kill_word)
vim.keymap.set('!', '<M-BS>', readline.backward_kill_word)
vim.keymap.set('!', '<C-w>', readline.unix_word_rubout)
vim.keymap.set('!', '<C-d>', '<Delete>')  -- delete-char
vim.keymap.set('!', '<C-h>', '<BS>')      -- backward-delete-char
vim.keymap.set('!', '<C-a>', readline.beginning_of_line)
vim.keymap.set('!', '<C-e>', readline.end_of_line)
vim.keymap.set('!', '<M-f>', readline.forward_word)
vim.keymap.set('!', '<M-b>', readline.backward_word)
vim.keymap.set('!', '<C-f>', '<Right>') -- forward-char
vim.keymap.set('!', '<C-b>', '<Left>')  -- backward-char
vim.keymap.set('!', '<C-n>', '<Down>')  -- next-line
vim.keymap.set('!', '<C-p>', '<Up>')    -- previous-line
EOF

这些块不会导致错误,那么为什么我会收到上述错误?我很困惑。

neovim
1个回答
0
投票

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

vim.api.nvim_create_autocmd('VimLeave',
  group = vim.api.nvim_create_augroup('autocom'),
  pattern = '/tmp/mutt-*',
  callback = function()
    local filename = vim.fn.expand('%:p')
    vim.cmd('/home/finlayson/bin/email-process ' .. filename)
  end,
)
© www.soinside.com 2019 - 2024. All rights reserved.