1

我正在尝试在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.command 执行命令所以这相当于 :w!ENTER 我想要做的是设置命令的一部分.. :e FILENAME ENTER

所以我想通过 python 函数以 Ex 模式发送 :e 部分并让用户输入文件名并按 ENTER

4

1 回答 1

0

首先,你为什么用 Python 写这个?当然,Vimscript 有点奇怪(但自从 Vim 7 变得很像 Python),无论如何你需要了解集成点,而这个任务几乎没有真正的逻辑。

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

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

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

于 2012-12-29T12:13:48.263 回答