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')
Другие вопросы по тегам