Online video hd

Смотреть 3d видео

Официальный сайт e-rus 24/7/365

Смотреть видео бесплатно

18.11.10 12:38 h0rr0rr_drag0n

VimShell в отдельном буфере vim'а

Лично мне, кажется весьма удобной возможность работать в консоли (например в том же bash'е) не отвлекаясь от любимого vim'а. Можно одновременно коммитить код или изменять структуру каталогов проекта или делать прочие подобные вещи не выходя из vim'а и не отвлекаясь на другие окна.
Раньше (пару лет назад), я искал плагин, который позволил бы открывать отдельный буфер с каким-нибудь shell'ом, но натыкался на предложения перекомпилировать vim, предварительно применив к его исходникам набор патчей. Естественно, меня не устраивало подобное положение вещей - мне хотелось простого плагина, а не плясок с бубном.
Оказывается, выход есть! Подобный плагин существует и называется Conque Shell.

Данный плагин позволяет открывать вертикальный или горизонтальный буфер или новую вкладку с практически любым командным интерпретатором. Также, можно открывать выбранный интерпретатор и в текущем буфере. Можно запускать почти все консольные программы - мне не удалось запустить лишь mc.
25d025a125d025bd25d025b.th.png
Как видно, цвета вполне хорошо отображаются даже в таком терминале...

Установка плагина проста и состоит из 4 шагов:
  • Нужно скачать последнюю версию conque.vba по сссылке выше
  • Открыть скачанный файл в vim'е
  • Сказать в нормальном режиме :so %
  • Выйти из vim'а

В зависимостях у плагина лишь сам Vim и Python.

Существует всего 4 основных команды для работы с плагином:
  • :ConqueTerm bash - открывает терминал с bash'ем в текущем буфере
  • :ConqueTermSplit bash - открывает терминал с bash'ем в новом горизонтальном буфере
  • :ConqueTermVSplit bash - то же самое, что и в предыдущем пункте, но буфер теперь вертикальный
  • :ConqueTermTab bash - то же самое, но вместо нового буфера открывается новая вкладка


Команду создания нового горизонтального буфера с запущенным bash'ем я повесил у себя на отдельный хоткей. Вначале создается соответствующий буфер, затем в нем отключается, включенная мной ранее для всего Vim'а, подсветка пробелов и табуляций (чтобы не мешала), затем осуществляется переход в режим вставки для начала работы с запущенным интерпретатором.
1
2
3
4
5
"Открываем Bash в горизонтальном окне/буфере
"после отключаем подсветку пробелов и табуляций
"для открытого буфера
imap <C-c>b <Esc>:ConqueTermSplit bash<CR><Esc>:setlocal nolist<CR>a
nmap <C-c>b :ConqueTermSplit bash<CR><Esc>:setlocal nolist<CR>a


Настройки ConqueTerm просты и достаточно подробно описаны в :help ConqueTerm. Я опишу лишь те настройки, которые я был вынужден поменять для своего удобства.
1
2
3
4
5
6
7
8
"настройки для ConqueTerm
let g:ConqueTerm_InsertOnEnter = 0
let g:ConqueTerm_CWInsert = 1 " (парсер - лох!) по прежнему переходим между окнами по <C-w>[whjkl]
let g:ConqueTerm_TERM = 'xterm'
let g:ConqueTerm_ReadUnfocused = 1
let g:ConqueTerm_CloseOnEnd = 1
let g:ConqueTerm_SendFunctionKeys = 1

InsertOnEnter = 0 означает, что при переходе в буфер с открытым интерпретатором vim не будет самостоятельно переходить в режим вставки. Так как-то привычнее... CWInsert = 1 позволяет переходить между открытыми буферами по w и прочим подобным сочетаниям клавиш. Чтобы послать терминалу, надо просто нажать и отпустить эти клавиши и подождать.
ReadUnfocused = 1 указывает плагину на необходимость обновления содержимого терминального окна, даже если курсор находится в другом окне. Так можно получать, например, самые свежие показания от top'а. Автоскроллинг не поддерживается - автор пишет, что это связано с ограничениями вимовского скриптового языка.
SendFunctionKeys = 1 заставляет посылать функциональные клавиши F1-F12 напрямую терминалу, а не vim'у.
CloseOnEnd = 1 - буфер закрывается при завершении программы, запущенной в ней. В нашем случае этой программой является bash.

В случае, если терминал нещадно тормозит, имеет смысл отключить поддержку цвета:
let g:ConqueTerm_Color = 0 "disable colors

Конечно будет не так красиво и цветасто, как в обычном терминале, но работать будет довольно быстро.

Радует, что этот плагин поддерживает разнообразные извращения, например такие как это:
25d025a125d025bd25d025b.th.png
(uname -a, запущенный в сесси bash'а, которая запущена внутри консольного вима, который запущен в сесии bash'а, которая запущена внутри gvim'а)

В заключение, небольшой скринкаст, показывающий как все это работает "в движении":
Shell в отдельном буфере vim'а



По материалам блога Дракон-линуксоид


Теги:

saver 18.11.10 13:25 # +0
Сенкс, надо
saver 18.11.10 13:28 # +0
Ток он заглючил с мои навороченным промтом )) мелочи )
kovtunos 18.11.10 14:06 # +0
Надо обязательно попробовать.
or10n 18.11.10 14:38 # +3
а можно написать:
1):sh
2)сделать то что надо в терминале
3)написать exit в терминале и попасть обратно в вим
bosha 18.11.10 14:42 # +-1
http://welinux.ru/post/4561/#cmnt88104
h0rr0rr_drag0n 18.11.10 15:56 # +0
1) Не получится одновременно видеть и текст и открытый шелл.
2) Не работает копирование/вставка/редактирование в шелле средствами вима (2yy, 3dw и т.п.)
3) В GVim'е :sh работает мягко говоря не очень...
bosha 18.11.10 14:42 # +2
Имхо, быстрее открыть в буфере, и писать :bd и :bp. А если это на хоткеях (например как у меня), выходит итого быстрее.
dr_lo 18.11.10 16:38 # +0
а в чем принципиальные преимущества метода по сравнению с GNU screen?
dr_lo 18.11.10 16:38 # +0
дико извиняюсь. вопрос в пост, а не в каммент
bosha 18.11.10 16:43 # +-1
Ничего. У меня примерно такие же мысли, за исключение того, что предпочитаю tmux =)
dr_lo 18.11.10 18:41 # +0
я не ошибусь, если предположу, что ты и со "скрином" знаком на уровне? не мог бы ты написать топик, типа "мое имхо. что лучше screen или tmux?"

bosha 18.11.10 19:01 # +1
Отличий не так и много. Я давно писал про tmux, но там есть основные отличия и в комментариях с мухасом их тоже можно почерпнуть (отличия).

Пост именно об отличиях я вряд ли напишу, слишком занят :)
le087 18.11.10 22:39 # +1
о_О... а я думал, что в Vim встроенный шел идет по умалчанию, как и в Emacs (M-x shell набираешь - и тебе достается странная, но вполне работоспособная консоль =)
h0rr0rr_drag0n 19.11.10 00:28 # +0
Есть то что вылезает по команде :sh, но оно не слишком сильно встроенное - вим одновременно с таким шеллом уже не поиспользуешь...

Посты Комментарии
Последние посты
    Посты Комментарии
    Последние комментарии
      Посты Комментарии
      Изменения
        Посты Комментарии Изменения Черновики Избранное
        Черновики (все)
          Посты Комментарии Изменения Черновики Избранное
          Избранное (всё)
            Посты Комментарии Изменения Черновики Избранное
            Лучшие блоги (все 149)
            Топ пользователей Топ блогов
            Топ пользователей Топ блогов
            Элита (все 2979 из 222 городов)
            Топ пользователей Топ блогов
            welinux.ru

            В хорошем качестве hd видео

            Онлайн видео бесплатно


            Смотреть русское с разговорами видео

            Online video HD

            Видео скачать на телефон

            Русские фильмы бесплатно

            Full HD video online

            Смотреть видео онлайн

            Смотреть HD видео бесплатно

            School смотреть онлайн