我經常想做一個多行函數調用並將其減少到一行。例如,轉換...Emacs命令刪除高達非空白字符
function_call(
'first_arg',
'second')
到
function_call('first_arg', 'second')
的emacs是否有一些命令,以幫助這一點。具體來說,是否有一個命令將從點刪除所有空格到第一個非空白字符?
我經常想做一個多行函數調用並將其減少到一行。例如,轉換...Emacs命令刪除高達非空白字符
function_call(
'first_arg',
'second')
到
function_call('first_arg', 'second')
的emacs是否有一些命令,以幫助這一點。具體來說,是否有一個命令將從點刪除所有空格到第一個非空白字符?
你可以試試delete-indentation
,我最喜歡的命令是將多行加入一行。在你的例子中,將光標放在具有「秒」的行上,並點擊兩次,然後點擊M-^。下面是文檔:
M-^運行命令
delete-indentation
,這是simple.el
互動編譯Lisp函數。它綁定到M-^。
(delete-indentation &optional arg)
加入這一行以前,在加入修復了空白。如果有填充前綴,請從該行的開頭將其刪除。使用參數,將此行加入到以下行中。
看一看的fixup-whitespace
Emacs在simple.el
。它的文檔是:
修復點周圍物體之間的空白區域。 根據上下文留出一個空格或不填寫空格。
類似的功能,just-one-space
,即
刪除所有的空間和周圍點突片,留下一個空間
通常結合到M-SPC。
M-SPACE是「只是一個空間」而不是「fixup-whitespace」。不過,他們似乎也做了幾乎相同的事情。 – 2009-01-15 15:45:09
您可以隨時使用M-z刪除一個字符。
比如,對於您的情況:
M-Z'刪除高達單引號(可惜這將刪除單引號爲好,但這是一個小小的不便)。
一個非常有用的技術。我正在養成爲了克服這個小缺點而雙擊焦點鍵的習慣。 – 2016-04-02 15:49:55
我這樣做:
(defun move-line-up()
"Removes leading spaces from the current line, and then moves
the current line to the end of the previous line."
(interactive)
(let (start end)
(save-excursion
(beginning-of-line)
; get first non-space character, only look on this line
(let ((search-end (save-excursion (end-of-line) (point))))
(re-search-forward "[^[:space:]]" search-end))
(setq end (1- (point)))
(previous-line)
(end-of-line)
(setq start (point))
(delete-region start end))
(goto-char start)))
(defun move-next-line-up()
"Moves the next line to the end of the current line"
(interactive)
(next-line)
(move-line-up))
並結合這些爲:
(global-set-key (kbd "C-x ,") 'move-line-up)
(global-set-key (kbd "C-x .") 'move-next-line-up)
所以要解決你的問題,上寫着 「秒)」 行了,只要運行C-x , C-x ,
具體來說,是否有一個命令將從點刪除所有空格到第一個非空白字符?
有,做幾乎是一個命令:
M- \運行命令刪除水平空間 這是在'simple.el」互動編譯Lisp函數。
它被綁定到M- \。
(刪除水平空間&可選的向後只)
刪除點周圍的所有空格和製表符。 如果僅向後是非零,則只在點之前刪除它們。
如果你想要所有的刪除操作,你可以檢查貪婪刪除。
我使用下面的宏將下一行「拉」到當前行的末尾,壓縮空白。
(defun pull-next-line()
(interactive)
(move-end-of-line 1)
(kill-line)
(just-one-space))
這正是@ jrockway相反的move-line-up
和delete-indentation
,我覺得更自然。宏中的just-one-space
命令正是@ Mike的M-SPACE
。
我使用綁定pull-next-line
到M-J
(與Vim的J
比喻,對「加盟」,命令)在我.emacs
以下。
(global-set-key (kbd "M-J") 'pull-next-line)
例子。上的
function_call(
'first_arg',
'second')
第一行調用pull-next-line
產生
function_call('first_arg',
'second')
稱這是第二次產量
function_call('first_arg', 'second')
稍微不同的方法將創建一個鍵盤宏做的工作爲你。 所以,用於創建宏階段的一般方案如下所示:
foo
bar
[與「foo」的則幾行後面,並與一些空格行,寫「酒吧」]
然後foo和酒吧之間的任何地方站着,做到以下幾點:
C-x ( ; start recording macro M-b ; move backwards to the beginning of foo END ; move to the end of foo C-space ; place mark C-M-f ; move to the end of bar HOME ; move to the beginning of the line C-w ; yank out all the white space M-SPACE ; leave only one space C-x) ; end recording the macro M-x name-last-kbd-macro ; name it, call it jline or something
現在,您可以隨時刪除啓用Mx兩個詞之間的所有空格一行
麥Ë一定要記住發出你的.emacs文件插入的Mx-KBD宏的地方,以節省您的鍵盤宏 - 這是它的外觀:
(fset 'jline
[?\M-b end ?\C- ?\C-\M-f home ?\C-w escape ? ])
這樣做的一個比較激烈的方式是Hungry-Delete模式:
Hungry-Delete是一種次要模式,它會導致刪除操作刪除所有正在刪除的方向上的空白。
不錯的一個。我想知道在哪裏可以找到這樣的功能。幫助我很多。 – 2011-11-28 18:46:26