работа с файлами

и другие vi-подобные редакторы

Модератор: /dev/random

Аватара пользователя
jojahti
Сообщения: 310

работа с файлами

Сообщение jojahti »

С помощью каких команд можно читать и писать в текстовые файлы не открывая их во вкладках?

Ну наподобие лога.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5427
ОС: Gentoo

Re: работа с файлами

Сообщение /dev/random »

jojahti писал(а):
11.01.2010 12:30
С помощью каких команд можно читать и писать в текстовые файлы не открывая их во вкладках?

Ну наподобие лога.

readfile()/writefile(); можно вызывать всякие sed'ы и прочее через system().
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: работа с файлами

Сообщение ZyX »

/dev/random писал(а):
11.01.2010 12:38
jojahti писал(а):
11.01.2010 12:30
С помощью каких команд можно читать и писать в текстовые файлы не открывая их во вкладках?

Ну наподобие лога.

readfile()/writefile(); можно вызывать всякие sed'ы и прочее через system().

По-моему, лог лучше делать с помощью Python (:python). writefile перезаписывает
файл, что для лога нехорошо. Вот пример плагина, использующего Python для записи
лога:

Код: Выделить всё

python import vim
function LogSetup(filename)
    python logfile=open(vim.eval('a:filename'), 'a')
endfunction
function Log(message)
    let time=localtime()
    python logfile.write("%s: %s\n" % (vim.eval('time'), vim.eval('a:message')))
    python logfile.flush()
endfunction


Кстати, насчёт доступа к элементу строки: тут есть засада: expr-[] даёт доступ
к байту. Вам нужен доступ к символу. Решение:
Вариант 1: разбить строку на список символов с помощью split(str, '\zs'). При
этом появляется возможность редактирования. Обратное превращение с помощью
join(list, '').
Вариант 2: для получения символа, начинающегося с байта idx можно
использовать matchstr: matchstr(str, '.', idx).
Спасибо сказали: