我是
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
这些块不会导致错误,那么为什么我会收到上述错误?我很困惑。
您可以使用 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,
)