2011-04-09 47 views
0

我開始使用VIM並試圖理解它。我目前使用TextMate進行網頁開發,所以我可以構建漂亮的命令,以非常迅速的方式將我當前的文檔/選擇和顯示爲網頁視圖,或者通過工具提示發送一些結果。MacVim:打開webview或顯示TextMate工具提示

我認爲將此問題引用到MacVim會更合適,因爲它有權訪問GUI元素,所以有時可能會有這種情況嗎?

HTML Output for Commands」是一個很好的解釋。

所以我想知道是否可以將命令輸出到HTML窗口,就像TextMate一樣?

或者我將不得不創建我自己的程序,接受STDIN並將其顯示爲視圖上的html輸出?

工具提示也一樣嗎?

我希望MacVim可以訪問Cocoa庫和GUI元素,也許它可能已經有了這樣的功能?

很抱歉,如果我在這裏誤解的東西,我真的覺得,這將是遷移一個好主意,但很明顯,我想保持我用,而不是失去了一個很好的視覺吸引力的漂亮和快速的工具。

回答

4

所以我想知道是否它的posibble輸出命令到HTML窗口就像TextMate?

你可以讓vim在命令行發出一個命令,告訴瀏覽器打開你正在編輯的文件。

在Mac上,無論使用VIM在命令行或的MacVim,如果你正在編輯一個名爲緩衝區「的test.html」的文件,它是在你的桌面文件夾:

:!open ~/Desktop/test.html 

會打開或重新打開瀏覽器中的文件。所以,當你做出改變的時候,你就會發出這樣的聲音,瀏覽器會以最新版本的文件來到前臺。您可以使用其他選項來「打開」來指定要使用的瀏覽器。而且,您可以輕鬆添加按鍵以打開當前文件,該文件在命令行中爲「%」。

如果你想在vim中捕獲一個命令的輸出,有幾種方法可以做到這一點。如果你執行一個命令,vim將把它的輸出捕獲到一個臨時緩衝區中進行查看。

:!ls 

顯示:

 
:!ls 
Desktop   Downloads  Library   Music   Photo Tools  Public   VirtualBox VMs bin 
Documents  Editors   Movies   Music Tools  Pictures  Sites   Web Tools 

您還可以看到什麼在Command - R like functionality in MacVimVim - Displaying Code Output in a New Window á la Textmate?

我不確定你的意思是「工具提示」。通常是指鼠標頂端的彈出文本提供上下文相關幫助。你不能通過它發送文本,所以你對這個詞的使用很混亂。

MacVim和vim具有類似於片段的功能,並且可以編寫腳本,可以在當前選擇的文本上工作,還可以使用更多功能。瞭解MacVim是常規vim編輯器之上的GUI層是很重要的,所以有些東西是不能做的,因爲vim的引擎並不容易。這並沒有讓我困擾,因爲如果我需要一個特定的TextMate功能,我會將它啓動,使用特定的東西,然後如果我喜歡它,就跳回去。但是,這對我來說不是太常見。

您可能希望在一些相關的線程來看看這裏的SO,在頁面的右側,加上看一些vim的插件,如:

我一直在使用上面的那些。如果我沒有他們,我會想念下面的那些人。


編輯:

捕捉臨時緩衝區在Vim中一個新的緩衝區是很容易的:

:redir @a 
:sil !ls -al 
:redir end 
:vnew 
"agp 

第二行:sil !ls -al可以是命令的任何執行。 :sil告訴Vim不要將輸出回顯到臨時緩衝區,而是靜靜地捕獲它,從而擺脫「按任意鍵」暫停。

:vnew創建一個垂直分割與新的緩衝區。如果你想要一個新標籤,你可以使用:tabnew

"agp告訴它使用緩衝區@a並將輸出粘貼到當前緩衝區並將光標保留在粘貼文本下方。

+0

謝謝,這是一個相當徹底的解釋。有一件事情,在texmate中我並不需要保存一個文件,我可以將當​​前選擇的內容或整個文檔作爲html輸出輸出,所以這對於測試和非常快速的事情來說非常酷。也許vim會把每個新的緩衝區保存在某個地方,這樣我就可以在瀏覽器中打開該文件,即使我之前沒有保存過它。是否有可能獲得未保存的文件/ tmp位置並將其發送到'open'命令? – zanona 2011-04-09 22:58:51

+0

vim保存一個.swp文件,但你不想搞砸這個。保存臨時文件並不是什麼大問題。使用':w somefile'保存它很簡單,然後使用':!rm%'將其刪除,或者將它保存在'/ tmp'中,稍後讓機器清理它。 – 2011-04-09 23:01:20

+0

再次感謝@ tin-man,我猜想將數據傳遞給程序執行某些操作並輸出爲html會更困難,因爲這需要一個物理文件,否則這將需要創建一個虛擬文件文件並從那裏開始工作,然後輸出一個靜態文件,其中包含適當的數據。我認爲最簡單的事情就是創建一個能夠顯示基於stdin的web視圖的程序。但是隨着你的指導,我可以更好地理解它的工作原理。再次歡呼 – zanona 2011-04-10 15:05:58