2009-11-19 16 views
31

我知道有一種方法可以通過:map(或:imap:cmap等)列出映射,但是我找不到列出我存儲在我的vimrc文件中的宏的方法(如let @a = 'blahblah')。有沒有辦法顯示類似於在Vim中顯示映射的宏列表?

有沒有辦法做到這一點,而不必手動查看它(通過:split [myvimrcfile]或任何方式)?

另外,如果可能的話,有沒有辦法附加某種形式的文檔,這些文檔將與宏一起顯示以解釋它的作用?我有一小部分,我用了很多,但相隔約6周。如果能夠快速列出它們並附帶一條評論,告訴我宏是什麼(甚至只是一個名字,所以我確信我使用了正確的名稱),那將會很好。

感謝

+0

這可能對編寫映射有用。 – AlexMA 2014-07-02 18:31:31

回答

56

在vim中,宏只是存儲在registers。您可以調用任何寄存器的內容並將其作爲宏執行(這是@的作用)。要查看寄存器中的內容列表,請使用:reg

+0

不幸的是它沒有列出寄存器中的宏,除非我先回想它。我想知道我在映射到該寄存器的宏是什麼,然後再運行它(所以我知道要運行哪個宏)。 – 2009-11-19 20:02:24

+0

真的嗎?對於我在'.vimrc'中的東西(比如'let @ a = blah'),我可以在第一次啓動時看到它們(gVim 7.2)。你有一個函數或腳本,你必須執行設置你的宏? – jheddings 2009-11-19 20:06:55

+0

我也在使用gVim7.2。我只是直接將我的宏輸入到我的vimrc文件中...儘管它位於通過源$ VIM/vimfiles/vimrc_Jay.vim加載到我的_vimrc文件中的c:\ program files \ vim \ vimfiles \ vimrc_Jay.vim中。你認爲這是問題嗎? – 2009-11-19 20:21:58

3

您可以使用

:reg 

命令查看所有寄存器的內容。或者像這樣的參數字符串

:reg ahx 

將向您顯示寄存器a,h和x的內容。

這樣,您至少可以看到將運行的命令序列,並希望這些命令足以清楚地告訴另一個命令。

寄存器只包含文本。您可以以文本形式粘貼命令序列,也可以將文本複製到寄存器中,然後將其作爲命令運行,具體取決於您如何訪問寄存器。

我還沒有找到任何直接編輯寄存器內容的方法,但可以將它粘貼到文件中,編輯它,然後將它保存回同一個寄存器。 IHD。

IHTH。

2

由於/u/jheddings寫的宏存儲寄存器和真正重要的是代碼的分配到寄存器(通常在vimrc文件裏做了與let @a=blahblah 爲了方便,以顯示你在vimrc文件中定義的宏(路在我的情況下,它是在〜/ .vimrc里路),你可以使用這個vim的函數:

function! ShowMacros() 10new exe 'r!' . 'grep -B 1 -E "^\s*let @" ~/.vimrc' call cursor(1,1) endfunction

做些什麼:

10new - 打開一個新的Vim窗口用十行大小

exe ... - 執行命令並放入窗口

調用... - 深入第一線第一列

您可以在正常模式下 :call ShowMacros

引爆執行此功能,您可以額外創建一個鍵映射或命令,以固定的方式來調用函數:

:cnoremap sm call ShowMacros()<CR> command! sm call ShowMacros()

This是我寫的功能類似於上面的原始帖子。

相關問題