2017-08-12 16 views
0

我知道,可笑的標題。這就是我需要做的:Emacs:轉換多個操作的字符串

* [1.1 Training]() 
* [1.1.1 Special Training by Category]() 
    * [A. New Hire Orientation Program]() 

並添加.md後綴爲每處導致括號,就像這樣::

* [1.1 Training](training.md) 
* [1.1.1 Special Training by Category](special_training_by_category.md) 
    * [A. New Hire Orientation Program](new_hire_orientation_program.md) 

我看起來像這樣的

採取串m使用Emacs並需要一個宏:

  1. 搜索每個字符串(行)
  2. 所有內容複製的章節號,章節字母,或週期,前收盤「]」後
  3. 改造它降低的情況下,刪除空格並用下劃線
  4. 添加「.MD」的結果
  5. 替換它們在括號

我想學習正則表達式和字符串操作之間

  • 粘貼的結果,但是這一次似乎很複雜。任何幫助表示讚賞。

    感謝

  • 回答

    1

    根據您需要多長時間做到這一點,你可能會想要寫一個命令它。但是可以用query-replace-regexpC-M-%)與正則表達式\[\([[:alnum:].]+\) \([[:alnum:] ]+\)\]()和替換[\1 \2](\,(replace-regexp-in-string " " "_" (downcase \2)).md)完成。請注意0​​:它允許您使用elisp來轉換字符串。

    鏈接:

    +0

    我在哪裏可以學習閱讀您​​發佈的答案嗎?我會一次複製並使用它,但我想破譯它並在其他地方應用邏輯。 (「給一個人一條魚,你喂他一次,教一個人去釣魚,你給他一輩子的生活」類型的東西) – SeaDude

    +0

    增加了一些應該解釋一切的鏈接。 – jpkotta

    +0

    爲了增強釣魚功能,請閱讀(並搜索!)Emacs中的手冊:'C-h i g(elisp)Regular Expressions'。您可能需要了解如何使用信息閱讀器:從'* info *'緩衝區中,您可以輸入'h'開始它的教程,'d'返回到頂層頁面(其中有一些有用的註釋最佳)。 – phils