6

Несколько месяцев назад я перешел с 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 ответа2

1

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

  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
1

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

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

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

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

:help macvim
:help mvim

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .