簡體   English   中英

Clojure的Slurpage和barfage

[英]Slurpage and barfage in Clojure

我正在使用vim-sexpvim-sexp-mappings-for-regular-people插件來編輯Clojure文件。 我不太明白什么是slurpbarf命令。

我試着和他們一起玩,似乎他們在相鄰表格的開頭/結尾插入/刪除表格。 那是對的嗎? 如果沒有,什么是slurpbarf的正確定義?

slurping和barfing是使用現代結構代碼編輯器的基本操作/概念。 在習慣了它們之后,我完全無法在沒有這些的情況下編輯代碼。 在我和他一起寫作的大約20個人中,所有人一直都在使用這些。 所以說他們“對lisp程序員有幫助”是一種非常機智和禮貌的輕描淡寫。

啜泣:(動詞)

“將項目包含在表達式周圍的表達式的一側”

barf :(動詞)

“從表達式中排除點周圍表達式中最左邊或最右邊的項目”

和一些例子。

1 2 (3 4) 5 6

啜食權:

1 2 (3 4 5) 6

barf right:

1 2 (3 4) 5 6

啜泣左:

1 (2 3 4) 5 6

barf left:

1 2 (3 4) 5 6

我們回到了我們開始的地方。

當我提供介紹paredit的演講/演講時,我通常會給學生/與會者留下這兩個概念,因為我覺得他們已經足夠開始獲得結構編輯的好處而不會讓人不知所措。 一旦你對這些感到滿意, 那么通過學習按表達式而不是按字符向前/向后和向上/向下移動來繼續進行結構導航

即使它列出了emacs鍵綁定,我仍然強烈推薦Peter Rincker在他的回答中提到的paredit動畫指南。

我不是專家:lisps,emacs,paredit,vim-sexp或vim-sexp-mappings-for-regular-people。 (為什么我發布正確?!)

但是,我知道啜飲和barf來自Emac的paredit模式。 據推測,這種Emacs模式對於lisp編碼器非常有用。 如果你搜索paredit,我相信你可以找到關於這些主題的好文章。 事實上,我找到了一篇很好的文章: Paredit的動畫指南 據我所知,你對啜食和嘔吐的猜測是正確的。

它可能看起來很糟糕,但我想象嘔吐像嘔吐(畢竟它們是同義詞 ),你在那里驅逐出一些東西。

啜飲,我想象着通過吸管飲用並吸入飲料。

管道符號是這些插圖中的光標。

所以向右拐(​​推出4

1 2 (3 |4) 5 6 -> 1 2 (3|) 4 5 6

並向右傾斜讓你回到4(粗略,因為它可能會重新攝取你之前扔的東西)

1 2 (3|) 4 5 6 -> 1 2 (3 4) 5 6

向后版本執行相同的操作,但使用當前s-exp之前的項目。

我發現我使用前向/右版本比左邊更多,因為我通常在前面添加一些東西,比如let綁定,所以會話可能是:

(some-fn1 (count some-map))
(some-fn2 (count some-map))

啊哈,我們可以來這里重構(count some-map)

(let [c (count some-map)]|)
(some-fn1 c)
(some-fn2 c)

但是let不包含2個調用,所以我們想在let s-exp中拉入(slurp)接下來的2個表單,所以現在在光標位置,slurp兩次,這將在第一個之后給出:

(let [c (count some-map)]|
  (some-fn1 c))
(some-fn2 c)

然后是第二個:

(let [c (count some-map)]|
  (some-fn1 c)
  (some-fn2 c))

任何體面的編輯/結構編輯編輯也會同時為你做縮進。

同樣重要的是要注意barf / slurp將在當前括號中發生(即slurping (let [a (count x)])將根據光標的位置做不同的事情,因為有3組括號)因此,為什么我小心將光標放在上面的let綁定中,否則你是推入/取出錯誤的括號(這是另一種思考barf / slurping的方法 - 操縱括號的位置而不是拉/將項目推入/退出s-exp)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM