2012-01-09 56 views
2

任何人都可以告訴我如何可以前進(或後退)n逗號在emacs?emacs向前移動n個逗號

我想通過CSV瀏覽我的方式提交

我知道我可以這樣做:

C-u 100 M-f

但能夠做更多的事情REG-EXP像專門對逗號會更精確

+0

如果您有興趣測試'elisp',這將是一個極好的鍛鍊。在這種情況下,讓我知道,我可以給你幾個指示。 – Lindydancer 2012-01-09 10:42:56

+0

你的意思是在我的.emacs文件中寫一個函數嗎?如果是的話,這將是我的第一個,但肯定有興趣去一個去。我試過的另一件事是將C-u#和C-s結合起來,但那不起作用 – bph 2012-01-09 10:47:38

+1

是的,在'.emacs'中,或者在它自己的模塊中。在幫助菜單中,有一個elisp介紹和一個參考指南。你需要類似'(defun my-skip-commas(arg)(interactive「p」)...'arg'包含C-u的值......你的代碼在這裏......)'。你需要循環'arg'次,每次搜索一個逗號,你可以用'(search-forward「,」nil t「)來完成。試試看,如果你不能把它放在一起,我會幫你解決的。 – Lindydancer 2012-01-09 10:54:36

回答

7

我想是結合C-U#和C-S的另一件事,但沒有奏效

它將與一個鍵盤宏,您可以交互定義。

  • CX - 開始記錄
  • RET - 搜索逗號(該RET是重要的;見下文)
  • CX - 停止錄音

您現在可以CXË再次執行宏觀(然後就Ë爲繼續單一重複),或使用前綴參數來重複一個給定的次數:

100CXË

鍵盤宏是相當有用的,並且可以容易地結合到k eys,或者甚至以elisp格式添加到.emacs文件中,如果您想保留一個以備將來使用。 See the manual for details

編輯:

更加無縫的特設宏,你可以在你停止錄音,以獲得準確,很多重複提供前綴參數,包括用於記錄它的人:
CXRET100CX

我看到與該序列某些異常行爲之前,我加入了RET到停止記錄前明確調用isearch-exit。它表現得好像只是記錄和重複逗號鍵(導致逗號爲多次插入而不是多次搜索)。

使用edit-last-kbd-macro記錄後,我看到有一個宏觀使用ISEARCH時,一個怪癖,從而停止錄製時輸入的C-x實際上是包含在宏定義,這大概是造成問題的原因爲這個特殊的方法的調用。與備用F3F4綁定(在這種情況下,F4結束於定義中)類似。我不知道這是一個bug還是一個功能,但顯然在停止宏錄製之前退出isearch是值得的!

p.s.儘管這兩套宏錄製綁定的不是所有方面完全相同,這裏的一切都還與F3F4,所以在這個例子中,你可以稍微簡潔使用F3RET100F4

0

您可以用Cu Cu MfCu Cu Cf和u那個。如果不經常使用,請使用PF3進行錄製,然後按PF4進行播放。

1

隨着 iy-go-to-char你 可以做M-3C-cf,去 第三個逗號。

+0

我已經在isearch之上重新實現了iy-go-to-char,以實現惰性匹配突出顯示和其他各種改進。評論歡迎。 https://github.com/lewang/jump-char – 2012-01-12 14:20:29