Задача: обработать строку в открытом файле с помощью скрипта.
Я так понимаю, что нужно
1 строчку забрать в буфер (yy),
2 обработать содержимое,
3 вставить обратно.
Есть предложения по поводу второго шага?
scripting в vim
Модератор: /dev/random
Re: scripting в vim
Нашел, как вытащить строку из буфера.
The getline() function obtains a line from the current buffer.
Остальное, будем думать.
The getline() function obtains a line from the current buffer.
Остальное, будем думать.
Re: scripting в vim
http://vim.wikia.com/wiki/Best_Vim_Tips#Ge..._shell_commands
в частности:извращённая подстановка # в начало текущей строки.
в частности:
Код: Выделить всё
:.!sed 's/^/#/'
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Re: scripting в vim
Спасибо, хоть я и не совсем это имел в виду.
Оказывается можно писать скрипты и сорсить их (не совсем понял, что это означает, но работает). Я пишу в файл скрипт, определяю функцию на специальном скриптовом языке vim (туда можно впихнуть секцию на python). Потом делаем :so[urce] name.vim и можно пользоваться функцией:
:call Function_name()
Из питона доступ к буферу текущего окна получаем так:
python << EOL
import vim
lines = vim.current.buffer
lines[1] = 'hello world' # заменяет первую строчку в файле
EOL
Очень это все забавно.
Re: scripting в vim
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Re: scripting в vim
А как получить доступ в скриптах к выделенному на момент вызова функции тексту?
Re: scripting в vim
Можно использовать line("'<"), line("'>") и соответствующие [virt]col('...'), а затем getline и strpart, можно сделать так:
let savedureg=@"
normal! gvy
let selectedtext=@"
let @"=savedureg