如何使用if\u py将部分命令发送到vim(在Ex模式下)?

2024-05-15 16:09:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图在Ctrl-f上打开一个文件。如果命令是 在存在空缓冲区的情况下键入 希望在该缓冲区中打开文件,但如果 没有空缓冲区我想用 :tabnew,然后在其中打开文件。 为此,我有一个函数OpenFile 已调用。你知道吗

function! OpenFile()
python << EOF
import vim
import re
buffer = vim.current.buffer
name = str(buffer.name)
if re.match('None', name):
    vim.command(':e ')
else:
    vim.command(':tabnew')
    vim.command(':e ')
EOF
endfunction

"Open file
 :map <C-f> :call OpenFile()<CR> 
:imap <C-f> <Esc>:call OpenFile()<CR>

你知道吗vim.命令执行命令,使其等效于 :w!输入我要做的是设置命令的一部分。。 :e文件名输入

所以我想通过 python函数,并让用户键入文件名 然后按回车键


Tags: 文件函数nameimport命令re键入buffer
1条回答
网友
1楼 · 发布于 2024-05-15 16:09:36

首先,为什么要用Python写这个?当然,Vimscript有点奇怪(但是因为vim7已经变得很像Python了),无论如何,您需要了解集成点,而且这个任务中几乎没有真正的逻辑。你知道吗

这是通过映射表达式(:help map-expression)最容易解决的:

:noremap <expr> <C-f> empty(bufname('')) ? ':edit ' : ':tabnew '

如果必须的话,可以将条件提取到函数中并用Python编写代码,但是我建议坚持使用Vimscript,除非逻辑非常复杂或者您可以从某些库中受益。你知道吗

相关问题 更多 >