Создать функцию Vim для префикса всех строк - PullRequest
3 голосов
/ 07 января 2012

Я хотел бы создать функцию Vim для добавления префикса ко всем выделенным строкам (это быстрее, чем использование C-V I и т. Д.).

У меня нет опыта в написании сценариев, и я нашел эту великолепную документацию: http://www.ibm.com/developerworks/linux/library/l-vim-script-1/index.html и этот вопрос: Как мне добавить текст в середине строки к нескольким строкам в Vim?

Полагаю, я буду использовать input, чтобы получить текст для префикса, а затем буду использовать :'<,'>s/^/prefix_text/ для фактического префикса, но я понятия не имею, как предоставить prefix_text в качестве переменной в замене. выражение.

Я попробовал это очень наивное решение (которое, очевидно, не работает, потому что оно добавляет input("Enter prefix text: ") только к текущей строке):

" Prefix lines
command PrefixLines call <SID>PrefixLines()

function! <SID>PrefixLines()
    '<,'>substitute/^/input("Enter prefix text: ")/
endfunction

Спасибо за вашу помощь!

1 Ответ

5 голосов
/ 07 января 2012

Сценарий Vim ниже реализует команду, которая следует за описанием в вопросе.

command! -range -bar Prepend <line1>,<line2>call PrefixLines()
function! PrefixLines() range
    call inputsave()
    let t = input('Prefix: ')
    call inputrestore()
    exe a:firstline.','.a:lastline 's/^/\=t'
endfunction
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...