2

我想根据上下文分配不同的命令。

我正在尝试做这样的事情:

if line is empty:
    map x key to y command
else
    map x key to z command
4

2 回答 2

8

它通常通过<expr>映射来实现:

nnoremap <expr> ((empty(getline('.')))?('y'):('z'))

当你要使用 NerdCommenter 时,你被迫不要使用“nore”:

nmap <expr> empty(getline('.')) ? '' : '\cc'

替换''为所需的代码,因为我不明白您所说的“附加评论”是什么意思。

于 2012-01-25T17:36:37.247 回答
5

更好的方法是使用单个函数,其行为取决于行的内容。然后你不必为不同的映射而烦恼。例如:

function! LineOperation()
    let curline=getline('.')
    if curline =~ '^\s*$'
        " empty line (except for whitespace): perform y command
    else
        " perform z command
    endif
endfunction

然后映射所需的键来调用这个函数:

nnoremap <silent> x :call LineOperation()<CR>
于 2012-01-25T07:36:30.663 回答