vim Tab 跳过右括号

小败 发布于 2012/04/12 22:54
阅读 1K+
收藏 1
Vim

inoremap <Tab> <C-R>=TabSkip()<CR>

function TabSkip()
    if getline('.')[col('.') - 1] == ~'})\'\"\;'
        return "\<Right>"
    else
        return "\<Tab>"
    endif
endf

想要实现,插入模式下,在按Tab时,如果后面跟着的是 },],),;,',"这几个字符时就自动跳过,这个如何实现啊?我不懂这个语法,这是什么语言啊?

 

加载中
0
周翼翼
周翼翼
vim script ,用来写vim扩展的.
周翼翼
周翼翼
回复 @小败 : 你那个函数应该可以用的.把Tab键map到那个函数.
小败
小败
恩,那这个怎么写啊?
0
小败
小败

引用来自“周翼翼”的答案

vim script ,用来写vim扩展的.

恩,我现在这样写,可以跳过}了,然后我用正则表达式匹配[ }) ],就不行了

inoremap <Tab> <C-R>=TabSkip()<CR>

function TabSkip()
    if getline('.')[col('.') - 1] == '}'
        return "\<Right>"
    else
        return "\<Tab>"
    endif
endf

0
小败
小败
inoremap <Tab> <C-R>=TabSkip()<CR>

function TabSkip()
    let char = getline('.')[col('.') - 1]
    if char == '}' || char == ')' || char == ']' || char == ';'
        return "\<Right>"
    else
        return "\<Tab>"
    endif
endf

先这样凑合着用,不知道有没有简单的方法 
0
foxUnderMoon
foxUnderMoon
imap <C-delete> <C-R>=ControlDel()<CR>
function ControlDel()
    let flag=1
    while flag
        let char = getline('.')[col('.') -1]
        if char == ' '
            return "\<del>"
        else
            let flag=0
            return
        endif
    endwhile
endf

我想按c-del键可以删除当前行光标到字符之间的所有空格

上面的方法木有作用啊,求方法

返回顶部
顶部