Vim - Отображение вывода кода в новом окне Textmate?

Несколько месяцев назад я перешел с Textmate на Vim. В целом, я действительно люблю Vim, но одна из вещей, которые мне не хватает в Textmate, - это использование команды ⌘R для запуска кода на Ruby и аккуратное отображение результатов в новом окне с прокруткой. Очевидно, что Vim способен запускать код Ruby и отображать вывод с :w !ruby, Единственный недостаток этого заключается в том, что если полученный результат слишком длинный, я не могу прокрутить его.

Чтобы бороться с этой проблемой, я попытался изменить :redir функция от Vim Tips. Это выглядит так:

function! TabMessage(cmd)
  redir => message
  silent execute a:cmd
  redir END
  tabnew
  silent put=message
  set nomodified
endfunction
command! -nargs=+ -complete=command TabMessage call TabMessage(<q-args>)

Теперь вывод из Ruby помещен в новую вкладку. Однако я не могу заставить его всплыть в новом отдельном окне. изменения tabnew в new просто отправляет вывод в разделение в том же окне.

Другая проблема заключается в том, что видимый ^M добавляется в конец каждой строки, так что вывод в итоге выглядит примерно так, что довольно утомительно:

Hello World!^M

Итак, есть ли способ получить вывод в отдельное окно без ^M добавлен до конца? Есть ли какие-нибудь плагины, которые я должен использовать, чтобы добиться эффекта Textmate для вывода кода?

2 ответа

Решение

Похоже, вы используете MacVim, поэтому попробуйте это:

:w !ruby | mvim -c "set nomodified" -

Если у вас есть mvim где-то на вашем пути скрипт, который выполнит содержимое текущего буфера, затем перенаправит вывод в экземпляр MacVim, работающий в новом окне OS X (вместо нового окна Vim). Новый буфер помечен как неизмененный, чтобы избежать предупреждений при попытке закрыть его без сохранения.

Больше информации:

:help macvim
:help mvim

Пара предложений:

  1. Почему :!ruby foo.rb не работает для вас? Предполагая, что ваш vim работает в прокручиваемом окне? Или как насчет :!ruby foo.rb > foo.out, с последующим :e foo.out После этого у вас будет 2 открытых буфера, исходный файл, в котором вы работали, и результаты работы ruby. Вы можете делать все что угодно с буферами (открывать буферы в разделенном окне и т. Д.). Проверять, выписываться :help :buffer для больше вариантов в этой области.
  2. Если vim был скомпилирован с поддержкой ruby ​​(+ruby), вы можете использовать в vim команды ruby, такие как :ruby {cmd}, Проверять, выписываться :help :ruby для получения дополнительной информации об этом.
  3. Возможно, вам лучше будет установить rails.vim и, возможно, некоторые другие пакеты vim. У Biodegradable Geek есть хорошая статья об использовании VIM в качестве Ruby on Rails IDE
Другие вопросы по тегам