Vim сбрасывает строки, если system() вызывается перед запуском графического интерфейса
У меня странная проблема с gVim и настройкой количества строк. Чтобы воссоздать проблему, создайте временный.vimrc-файл со следующими строками:
1 if has('gui')
2 set lines=40
3 endif
4 let test=system('ls')
5 echo test
Если сейчас vim запускается из терминала с его графическим интерфейсом (gvim или vim -g), вы ожидаете &lines=40
, Что происходит то &lines
сначала устанавливается равным 40, как и ожидалось в строке 2, а затем сбрасывается в строке 4, когда system('ls')
называется. таким образом &lines/=40
на строке 5. Далее, похоже, &lines
будет установлена любая переменная среды $LINES
установлено в.
Мы будем благодарны за любую помощь в определении проблемы.
2 ответа
Как насчет положить set lines=999
в вашем ~/.gvimrc
файл? Это выглядит как последний скрипт, который получается при запуске gvim
,
Вы можете увидеть, какие файлы получают и в каком порядке, с помощью следующей команды:
:scriptnames
Кроме того, следующий должен сказать вам, что скрипт lines
последний раз был установлен в (или любой другой вариант в этом отношении):
:verbose set lines?
Похоже, настройка "линий" сбрасывается при входе в графический интерфейс. Попробуйте заменить set lines=40
с одним из следующих:
autocmd GuiEnter * set lines=40
call feedkeys("\<C-\>\<C-n>:set lines=40\n", 'n')
autocmd GuiEnter * call feedkeys("\<C-\>\<C-n>:set lines=40\n", 'n')