#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.
- Установите wmctrl:
sudo apt-get install wmctrl
- добавьте следующий скрипт в свою конфигурацию.
скрипт:
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