Как запустить gvim с развернутым окном из bash-скрипта в gnome

#vim #gnome

#vim #gnome

Вопрос:

Я хочу написать bash-скрипт, который запускает gvim-сессию непосредственно в развернутом окне.

Это мой bash-скрипт:

 #!/bin/bash - 
set -o nounset

cd /home/alexthebird/vim-stuff; # directory of the gvim-session file
gvim -S bootmap;                # start gvim from the sessionfile 'bootmap'
  

Есть ли у вас какие-либо идеи, как добиться этого с помощью bashscript? Gvim должен быть развернут только при запуске через этот скрипт. Конечно, приветствуются любые другие идеи, как этого добиться.

Я использую Ubuntu 11.04 с gnome.

Спасибо, что нашли время прочитать мое сообщение.

AlexTheBird

Этот скрипт работает:

 #!/bin/bash - 
set -o nounset
# directory of the gvim-session file
cd /home/alexthebird/vim-stuff;
# -f because of a ubuntu global-menu bug
# -S starts from session-file named 'bootmap'
# -geom solved the problem. see post of Lstor
gvim -geom '200x50 0 0' -f -S bootmap; # start gvim from the sessionfile 'bootmap';
  

Спасибо всем за ваше время.

РЕДАКТИРОВАТЬ: Я только что узнал, что вышеупомянутое решение работает только для рабочего стола unity-2d (без 3D-ускорения). Для меня это нормально. Это не работает с рабочим столом Ubuntu по умолчанию, который использует 3D-ускоренную версию Unity.

Комментарии:

1. Из вопроса неясно, какая часть не работает с вашим текущим скриптом.

2. Скрипт работает. Моя проблема в том, что я не знаю, как запустить gvim с развернутым окном из этого скрипта. Чтобы мне не пришлось впоследствии разворачивать gvim-окно.

3. Кстати, на этот вопрос можно было бы получить лучшие ответы в суперпользователе или AskUbuntu .

Ответ №1:

Следующее работает для меня в Ubuntu 8.04, Gnome (на основе комментариев на этом форуме):

 #!/bin/bash
gvim

sleep 1  # give gvim time to launch

wmctrl -r :ACTIVE: -b toggle,maximized_vert,maximized_horz
  

Возможно, потребуется установить wmctrl :

 sudo apt-get install wmctrl
  

Комментарии:

1. Спасибо, Курт, но у меня это не работает в Ubuntu 11.04. Из-за ошибки в глобальном меню из Ubuntu я не могу использовать строку меню из gvim, когда я запускаю ее без переключателя -f.

2. Переключатель -f в gvim делает его процессом переднего плана, поэтому sleep и wmctrl выполняются только при закрытии gvim.

3. И вот ссылка на ошибку, о которой я говорю. Ссылка

Ответ №2:

Вы могли бы использовать опцию -geom (etry), чтобы сопоставить размер с размером вашего монитора (ов).

 gvim -geom 200x50 0 0
  

Где 200 — количество символов, которое вы можете разместить по горизонтали, 50 такое же по вертикали и 0 0 указывает нулевое смещение по горизонтали и вертикали от верхнего левого угла экрана.

Обратите внимание, что окно само по себе не будет развернуто, оно будет только (приблизительно) того же размера, что и ваш дисплей.

Комментарии:

1. Вы также можете добавить это в свой vimrc: autocmd GUIEnter * winpos 0 0 | set lines=50 columns=200 или вы можете вызвать gvim -c 'winpos 0 0 | set lines=50 columns=200'

2. Я не могу в это поверить. Я собирался ввести «Нет, я хочу, чтобы окна были развернуты», но опция -geom фактически оказала тот же эффект на интерфейс unity. Верхняя граница окна исчезает, и кнопки close / min / max присоединяются к глобальному меню. Спасибо!

3. Я имел в виду, что строка заголовка окна исчезает в последнем предложении… извините за мой плохой английский.

Ответ №3:

как и @Curt Nelson , я использую wmctrl , с помощью autocmd и guienter . Это работает как на моей Windows 7, так и на Ubuntu 13.10.

  1. Установите wmctrl: sudo apt-get install wmctrl
  2. добавьте следующий скрипт в свою конфигурацию.

скрипт:

 if has("gui_running")
    if MySys() == 'linux'
        autocmd GUIEnter * silent !wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz
    else
        winpos 0 0
        set lines=99999 columns=99999
        autocmd guienter * let amp;columns = 999 | let amp;columns = amp;columns/2 
        autocmd guienter * set lines=9999 columns=9999
    endif
endif