LINUX.ORG.RU

VimScript и позиционирование курсора

 ,


0

1

В сети много доков по VimScript, но я не могу найти простых функций для редактирования текста. Хочу написать функцию для перехода на следующее слово в тексте (как w в нормальном режиме) но если слово последнее то на конец строки (как $). Вот в общем и все. Кто-нибудь знает как это сделать?

Хочу написать функцию для перехода на следующее слово в тексте (как w в нормальном режиме)

Ctrl + Right

но если слово последнее то на конец строки (как $).

End

Вот в общем и все.

Не благодари.

UVV ★★★★★
()
Ответ на: комментарий от UVV

не поблагодарю т.к. задача объединить это в одну функцию

dershokus
() автор топика
:h searchpos()
:h search()

регексп нужный в параметрах укажешь и профит.

ЗЫ вима с собой нет, пишу по памяти.

habamax ★★★
()
Ответ на: комментарий от habamax

Да, спасибо. Уже нашел такие функции. Вот только проблема в том - где узнать как работает w в нормальном режиме. По какой регулярке?

dershokus
() автор топика
Ответ на: комментарий от habamax

Спасибо за помощь. Получилось как-то так. Это моя первая функция на VimL - если можно сделать лучше - пишите, было бы очень интересно.

""" Go to the next word
function!GoToNext()
    let current_position = getpos('.')
    " end of line => go to the next line
    if col('$') - 1 == get(current_position, 2)
        let current_position[1] += 1
        let current_position[2] = 0
        call setpos('.',current_position)
    else
        let next_word_position = searchpos('\(\k\)\@<!\k','nW',line('.'))
        " the last word => go to the end of line
        if get(next_word_position, 1) != 0
            let current_position[2] = get(next_word_position, 1)
            call setpos('.',current_position)
        else
            execute "normal!$"
        endif
    endif
endfunction

dershokus
() автор топика
Ответ на: комментарий от dershokus

Это моя первая функция на VimL

Не самый лучший язык программирования, но написать vimwiki это не помешало. :)

habamax ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.