2012-01-21 17 views

答えて

12

これは助言のための仕事のように聞こえる

(defun kill-line-or-region() 
"kill region if active only or kill line normally" 
    (interactive) 
    (if (region-active-p) 
     (call-interactively 'kill-region) 
    (call-interactively 'kill-line))) 

    (global-set-key (kbd "C-k") 'kill-line-or-region) 
+0

ファイルを最初に開いたときにマークが設定されていない場合、これは機能しません。 – asmeurer

+0

OK、解決策は単に '(interactive" r ")'を使わず、 '(interactive)'だけを使うことです。あなたの答えを編集します。 – asmeurer

5

あなたの.emacsでこれを入れて!

(defadvice kill-line (around kill-region-if-active activate) 
    (if (and (called-interactively-p) (region-active-p)) 
     (kill-region (region-beginning) (region-end)) 
    ad-do-it)) 

編集:called-interactively-pチェックを追加しました。

+0

うーん..私はあなたが好きです。 :/ – kindahero

+3

Woooo!持て! 'kill-line'はパッケージ内部でたくさんの関数が使用されていますが、これは本当に微妙な動作をします。私はあなたが厄介な副作用なしで尋ねたことを行うので、@ kindaheroのソリューションに私のお金を入れた。 – Lindydancer

+0

上記のように、インタラクティブ性のチェックを追加するとどうでしょうか? – Sean

0

これは実際に直接的な答えではなく、むしろいくつかのヒントです。

delete-selection-mode(delete-selection-mode 1)で有効にすることができます。次に、領域がマークされている場合、テキストの入力を開始すると領域が削除されます。しかし、あなたの場合、C-wを使って現在の領域を切り取ることができます。これにより、領域がキルリングに追加されますが、kill-lineもそれを行います。

関連する問題