2012-08-24 87 views
4

有沒有在vim讀取文件,如:r,然後將其存儲在某個寄存器?有沒有辦法做到這一點,但只有在文件中匹配某種模式的行?讀取文件和存儲內容到一個寄存器

+5

當您告訴我們您打算實現的目標時,回答可以具有更好的質量,而不僅僅是詢問關於上下文的技術細節。 –

回答

4

使用外部grep的,你可以這樣做:

:let @x = system('grep pattern filename') 

放置只在寄存器x從文件filename匹配pattern線。

2

您可以創建一個新的緩衝帶:new,讀取文件:r <filename>,猛拉整個文件的寄存器(比如X)與gg"xyG",並與:q!刪除緩衝區。 如果您打算多次執行此操作,則可以爲其創建映射。

要對與模式匹配的行執行相同操作,可以在執行復制到寄存器之前執行全局命令(:h :g)。

13

試試這個:

:let @x = join(readfile("~/.vimrc"), "\n") 

它會讀取.vimrc註冊x

+0

謝謝!我能夠使用你的答案,但稍加修改。我想複製當前sass文件的編譯版本的內容。我做了這樣的事情:':let @ + = join(readfile(join([expand('%:t'),'.css'],「」)),「\ n」)' –

+0

好像vim doesn '我不知道如何解決'〜' –

+0

我使用的是Windows,我不得不使用readfile(展開(「〜/ _vimrc」))而不是'readfile(「〜/ _vimrc」)' t似乎自己擴大了'〜'。 – doubleDown

相關問題