试图写一个Vim函数/命令?

时间:2011-10-20 17:48:09

标签: vim

我正在使用Janus(虽然不是解决这个问题的关键)。基本上他们所做的是重写:e为:编辑以使用NERDTree,但NERDTree不支持强制打开文件(例如e!)。所以我写了一些重写的​​内容:编辑! to:e!,但我喜欢使用Just:Edit!的好处,所以我试图欺骗,如果它已经内置了。这就是我提出的:

ca Edit! e! <bar> Edit

唯一的问题是,对于尚未保存至少一次的文件,您无法执行此操作。但我知道这样做

ca Edit! bd! <bar> Edit

将起作用:它将关闭未保存的缓冲区,并保持移动状态。我需要做的就是编写逻辑,它将始终在正确的场景中使用正确的命令。优选地,逻辑不会在每个页面上运行:只有当我实际运行命令时才应该尝试解决它。有什么想法吗?

编辑:我试过问#vim频道(给了我很多帮助)......他们说使用expand(“%”)并检查它是否存在可能有助于我的情况?不知道,只提供尽可能多的细节。

1 个答案:

答案 0 :(得分:0)

试试这个。定义这样的函数:

function! CommandAbbrForEdit()
    if &modified
        return 'bd! | Edit'
    endif
    return 'e! | Edit'
endfunction

然后定义您的缩写:

cabbrev <expr> Edit! CommandAbbrForEdit()