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