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

2153
michaelmichael

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

6

2 ответа на вопрос

1
DaveParillo

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

  1. Почему :!ruby foo.rbу вас не работает? Предполагая, что ваш vim работает в прокручиваемом окне? Или как :!ruby foo.rb > foo.out, после чего :e foo.outПосле этого у вас будет 2 открытых буфера, исходный файл, в котором вы работали, и результаты работы ruby. Вы можете делать все что угодно с буферами (открывать буферы в разделенном окне и т. Д.). Проверьте :help :bufferбольше вариантов в этой области.
  2. Если vim был скомпилирован с поддержкой ruby ​​(+ ruby), вы можете использовать в vim команды ruby, например :ruby . Проверьте :help :rubyдля получения дополнительной информации об этом.
  3. Возможно, вам лучше будет установить rails.vim и, возможно, некоторые другие пакеты vim. У Biodegradable Geek есть хорошая статья об использовании VIM в качестве Ruby on Rails IDE
1. As an example try evaluating a file containing `(1..500).each {|x| puts x}` using :!ruby. The window will display about the last 50 numbers and cannot be scrolled through. Your buffer suggestions is also fine, but essentially the same as the tab function I'm using now. 2. I know about this and use it often. 3. I'll check out the article and see if I can glean any useful information, but I don't really use Ruby on Rails. michaelmichael 14 лет назад 0
1
Bill Odom

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

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

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

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

:help macvim :help mvim 
это определенно сработало. я добавлю это в мой vimrc. он также избавился от причудливых окончаний строк в проверяемом коде. Спасибо большое. michaelmichael 14 лет назад 0
Пожалуйста. Рад помочь. Bill Odom 14 лет назад 0