我想複製光標上方的行,但僅從當前列到該行的結尾。如何複製光標上方一行開始的行的結尾?
這裏有一個例證:
這是我的嘗試,但它並沒有:-(
(defun dupchar()
(save-excursion
(line-move (-1) nil nil nil)
(setq mychar (thing-at-point 'char))
(insert mychar))
我想複製光標上方的行,但僅從當前列到該行的結尾。如何複製光標上方一行開始的行的結尾?
這裏有一個例證:
這是我的嘗試,但它並沒有:-(
(defun dupchar()
(save-excursion
(line-move (-1) nil nil nil)
(setq mychar (thing-at-point 'char))
(insert mychar))
工作,以及嘗試這樣的事情。
(defun dupchar()
(interactive)
(let ((char-above (save-excursion
(line-move -1)
(following-char))))
(unless (eq char-above ?\n)
(insert char-above))))
(define-key global-map [(meta \")] 'dupchar)
你寫的功能,需要注意幾點:
您需要使用(interactive)
否則你可以在 功能不能結合的關鍵。
這不是一個好主意,只是 隨機setq
事情 - 這會創建一個全局變量 。在這種情況下, 根本不需要變量;你的 可以利用save-excursion
的返回值 。 (在此以後的版本中,我需要使用let)。
括號調用 (E)口齒不清的功能,所以你需要使用-1
代替(-1)
。
'line-move
的第2-4個參數默認爲nil
,所以不需要指定它們。
(注:我修改這個停止在該行的結束,這是一次很難理解你寫的東西,但是這是我最好的猜測。)
不知道你是否打算複製前一行的整個結尾只有一個按鍵。至少我是這麼認爲的我修改尼古拉斯(謝謝!)代碼dupline
這將是有益的:
(defun dupline()
(interactive)
(let ((line-above-tail (save-excursion
(line-move -1)
(buffer-substring-no-properties (point) (line-end-position)))))
(unless (eq line-above-tail ?\n)
(insert line-above-tail))))
dupline我簡單地使用嬉皮擴展與第一個字符 爲dupchar我想減少一半類似於先前填充幾塊和相同的再次:-) – leedit 2009-12-18 03:34:48
啓發你能換一種說法?我無法理解你在說什麼。 – 2009-12-16 03:05:22
詳細說明你的意思不好。例如,你的預期行爲是什麼,你觀察到的行爲是什麼。另外,請嘗試格式化您的代碼。 – 2009-12-16 03:07:06
下次您提問時,請儘量幫助您的英語 - 這很難理解您上面寫的內容。 – 2009-12-16 03:08:04