VIM
Comments 30
-1
Пользуюсь vim уже года три, и до сих пор иногда открываю для себя что-то новое. Утащил сохранение истории изменений в свой vimrc.
0
Мой собственный vimrc занимает 600 с лишним строк кода. У меня это практически реальная IDE
+2
Как вы знаете, если файл модифицирован, команды :bn, :bp, b# не сработают и выведут предупреждение о том, что надо его
сохранить.


Эту проблему проще решить установкой :set hidden (тогда будет происходить переключение без записи изменений) или :set autowrite (то же самое, только с автоматической записью изменений).

Я использую hidden.
0
Но тогда получится, что в буффере после переключения изменения несохранятся. А autowrite будет ругаться на файлы Read Only. Или нет?
0
Да, изменения не сохранятся, но и не потеряются, т.е. я могу вернуться обратно в данный буфер и сохранить изменения. И если я попытаюсь выйти (:q), находясь в другом буфере, я всё равно получу предупреждение о том, что изменения в первом буфере не сохранены.

При autowrite vim действительно будет ругаться на r/o файлы и не будет давать переключаться в другой буфер.
0
Из полезностей:

1) Строка с информацией по текущему файлы
set laststatus=2
set statusline=%f:%c:%l\ (%p%%)\ %y%([%R%M]%)\ buf:\ #%n\ ASCII:\ [0x%B]\ [%{&fileencoding}]

будет выводиться строка с именем файла, текущей строкой/колонкой курсора, типом файла (%y), hex-кодом символа в позиции курсора (%B) и кодировкой файла.

2) scrolloff — количество строк, которое всегда показывать в окне перед и после курсора, т.е. например, при скроллинге вниз, я всегда буду видеть под курсором N строк, т.е. листание начнётся до того, как я достигну курсором последней строки

у меня стоит :set scrolloff=5
0
За scrolloff спасибо. Воткну сейчас. А вот statusline у меня вроде и так показывает позицию, имя файла.
0
Еще бы кто научил vim автоматически восстанавливать все буферы после падения. А то руками открывать свап-файлы совсем неудобно.
0
set history=1000
set undolevels=1000

set noswapfile

Но если вам зачем-то нужны swapfiles — то :help SwapExists.
0
swapfiles — они из коробки включены. Если их выключить, то как vim после креша откроет тот же набор буферов с теми же файлами в них? В хелпе так и написано, рекавери вам не будет, если выключить.
0
Да мне undo-redo и так хватает. Мне надо что бы буферы сами открылись, а не вводить кучу раз :recovery.
0
В современных версиях VIM(начиная с 7.00) по-моему, ввели понятие сессии.
:help sessions Вам поможет.
0
Вот спасибо!

Про upd1:

У вас в function! UnCommentLine() опечатка. Должно, конечно, быть let endsymbol = b:comment[1]

Кроме того

execute ":silent! normal :s/^\s*". stsymbol. "//\"
execute ":silent! normal :s/\s*". endsymbol. "\s*$//\"

лучше переписать

execute ":silent! normal :s+^\s*". stsymbol. "++\"
execute ":silent! normal :s+s*". endsymbol. "\s*$++\"

Тогда оно не поломается, если добавить C-образные комментарии (например, javascript)
0
if version >= 700

Может все же
if version >= 703
?
Persistent undo добавили в версии 7.3.

The most notable additions since 7.2:
— Persistent undo and undo for reload
link

vim 7.2 ругается ошибкой E518 (Неизвестная опция) на undodir, undofile и undoreload.

За статью спасибо. Узнал для себя нового.
0
А точно ли должно быть
if version >= 730
, а не
if version >= 703
?

Когда я сделал для проверки 720 у меня vim не ругался, а когда 702 — ругался. Поэтому я думаю, что надо все же 703 ставить. Или может я чего не так понимаю?
0
Открыл один удаленный хост с Debian Squeeze stable проверить.
VIM — Vi IMproved 7.2 (2008 Aug 9, compiled Jul 12 2010 12:47:57)
И у меня в vimrc следующий код:
if version >= 730
    set history=64
    set undolevels=128
    set undodir=~/.vim/undodir/
    set undofile
    set undolevels=1000
    set undoreload=10000
endif
Ошибок и предупреждений нет.

0
Да, но если заменить на 720 или даже на 710, то ошибки тоже НЕ возникают. А должны ведь.
0
Все, видимо мое некоторое недопонимание. Действительно, :echo version выдает 702. Сейчас поменяем:)
Only those users with full accounts are able to leave comments., please.