2010-10-18 60 views
0

我一直在閱讀很多關於vim的問題。我找不到我想用vim做的事情,但我相信它可能。關於視圖的Vim問題

我喜歡vim(我還是個新手),使用了選項卡,並且我調整了我的vimrc,以便在選項卡之間來回切換。

我一直希望找到一種方法能夠使用tab命令打開一個標籤作爲輸出,所以如果我寫了一些東西在我的情況下Ruby和我想測試它我可以運行它並翻轉到帶有輸出的新選項卡。或者將選項卡翻轉到交互式控制檯以測試代碼。這個有可能?

順便說一句,可以將選項卡擴展到視圖,所以如果我有兩個選項卡打開說腳本和輸出我可以:spx或類似的,並有標籤來分割屏幕。

回答

0

您可以通過幾種方法將ruby輸出加載到vim窗口中。一種方法是打開一個新的分割窗口,然後加載命令的輸出:

" vimscript command to open new split window 
wincmd n 
" run ruby command and insert output at line 1 
1,1!ruby foo.rb 

或者你可以得到查看新選項卡上的輸出與單個窗口:

tabnew 
1,1!ruby foo.rb 
+0

我有一個1,1!ruby foo.rb格式的問題。我有一個簡單的ruby程序,我正在用name.rb來測試它。 name.rb從命令行運行良好。 提示'你的名字是什麼?' fname = gets.chomp puts'你的中間名是什麼?' mname = gets.chomp puts'你的姓氏是什麼?' sname = gets.chomp numnames = fname.length.to_i + mname.length.to_i + sname.length.to_i puts'你知道你的名字有'+ numnames.to_s +'字符嗎' sleep 30) Howver如果我運行此爲:1,1 ruby​​.rb name.rb – sayth 2010-11-09 21:03:20

+0

我得到這個錯誤在vim name.rb:2:'

':未定義的方法'格格' 的零:NilClass( NoMethodError) 你的名字是什麼? – sayth 2010-11-09 21:08:30

0

我知道這不是你想要的答案,但使用緩衝區並將選項卡溝。我有一個截屏視頻,介紹如何使用分割來管理你的窗口。

http://lococast.net/archives/111

至於紅寶石輸出,這似乎像它可能在這裏介紹:

https://superuser.com/questions/133886/vim-displaying-code-output-in-a-new-window-a-la-textmate

+0

不確定OP的具體情況,但總是無視製表符而支持分割是錯誤的。 Vim實例中的拆分類似於桌面上的窗口;標籤類似於多個桌面。此外,分割有時效果不佳。例如,我有複雜foldexpr摺疊的文件,可能需要幾秒鐘才能在分割中打開 - 即使緩衝區已被加載。如果我將緩衝區保持在單獨的選項卡上,它們可以立即訪問;如果我試圖根據需要將它們加載到分割中,則每次都有等待時間。拆分,製表符是互補的,而不是/或。 – 2010-10-18 16:58:03

+0

http://superuser.com/questions/133886/vim-displaying-code-output-in-a-new-window-a-la-textmate。 – sayth 2010-10-18 21:58:38

+0

o從這個線程。以代替產出。 :!ruby foo.rb> foo.out&then:e foo.out。將foo.out分配給foo.out。如果foo保持不變(因爲文件已經被保存爲語法高亮顯示),那麼是否有辦法分配此操作+ Z?我將很快看看你的截屏:-) – sayth 2010-10-18 21:58:53

0

在回答你關於開放標籤作爲輸出的問題,我不知道認爲有任何內置的方式來做到這一點。有RunView plugin(請參閱我的回答this questionthis one),但我不認爲它支持使用單獨的選項卡(它與分割窗口一起工作:我認爲您在提到'view'時指的是)。

關於交互式控制檯:不,這是不可能的。請參閱:help design-not

至於Vim的一般用法,儘量習慣緩衝區的概念,以及每個'視圖'(我的術語)的事實,無論是分割窗口,標籤還是其他任何東西只是一種查找的方式在特定的緩衝區。您可以在單個緩衝區中擁有多個視圖,因此您可以在一個選項卡中將源文件垂直拆分爲兩個標題,並將同一個源文件與另一個標題垂直拆分,並將另一個選項卡中的同一個源文件的不同位拆分。一旦你習慣了它,這是非常強大的。 Ctrl-W鍵盤快捷鍵是您的朋友(例如,Ctrl-W, h要離開一個窗口)。

至於把標籤換成拆分窗口,我不認爲有一個直接的方法來做到這一點(Vim如何知道你想加入哪個標籤?)。你可以用Ctrl-W + T將選項分成一個選項卡,但要回去的話你必須創建一對映射。這是把我的頭頂部,但這樣的事情可能工作:

command! TakeThis let takebufnr = bufnr("")<CR> 
command! SplitTaken exe 'split #' . takebufnr<CR> 
nmap ,t :TakeThis<CR> 
nmap ,s :SplitTaken<CR> 

然後按,t你想抓住和,s你想用「所採取」緩衝區分裂一個緩衝區。

+0

關於「交互式控制檯」,現實可能與您的建議有所不同。儘管Vim無法實現與Emacs的可能集成,但確實有可能使用Vim以有用的方式進行交互。參見,例如,Vicle插件(http://www.vim.org/scripts/script.php?script_id=2551)或VimDebug插件,它提供了與Ruby調試器(http://www.vim。組織/腳本/ script.php的?SCRIPT_ID = 663)。我無法特別證明,但Vim絕對能夠實現有用的互動水平。 – 2010-10-18 17:55:17