4
回答
vim Tab 跳过右括号
开发十年,就只剩下这套Java开发体系了   

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

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

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

 

Vim
举报
小败
发帖于7年前 4回/1K+阅
共有4个答案 最后回答: 5年前

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

vim script ,用来写vim扩展的.

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

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

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

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

先这样凑合着用,不知道有没有简单的方法 
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键可以删除当前行光标到字符之间的所有空格

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

顶部