2012-01-16 7 views
0

emacsでは、行の先頭に4つの空白を削除して、簡単にインデントを取り消すことができます。私は4つのスペース(関連するモードで)を挿入するようにTABを設定しました。これが役に立ちます。例えば削除するEmacsの行の先頭に4つの空白を取り除く(字下げしない)

、私は|は(私は値下げはそれを正しくレンダリングするためにこれを追加する必要がありました)行の先頭を表し、_はカーソルを表し、私はDeleteキーを押し

|  _ 

を持っている場合、私は

| _ 

EDITを取得したい:は、私はちょうどこれはすでに、このようなのpython-モードなどの特定のモードで起こることを発見しました。

EDIT 2:私の元の質問は混乱していたと思います。私はこのようなものが欲しい。私が

|  my text_ 

とし、カーソルが行末(_で示されている)にあるとします。 DELを入力した場合、取得したい

|  my tex_ 

(明らかに)しかし、私は

|  m_ 

を持っていると私は私が

|  _ 

をしたいと私は再びDEL 入力した場合、私は、

| _ 

はそれを別の方法を考えたい、DELを入力した場合私は4つのスペースのタブを、削除キーが関係する限り実際のタブであるかのように扱いたい。

+0

万が一 'M-m'をお探しですか? – kindahero

+0

いいえ、でもそれは便利です。 – asmeurer

+0

「c-u DEL」について? – kindahero

答えて

2

どのようにあなたが好きに結合することができるコードのスニペット、およそ:

(defun remove-indentation-spaces() 
    "remove TAB-WIDTH spaces from the beginning of this line" 
    (interactive) 
    (indent-rigidly (line-beginning-position) (line-end-position) (- tab-width))) 

注、tab-widthはあなたが望むものと一致しない場合は、ハードコードそれは-4〜。

(global-set-key (kbd "DEL") 'remove-indentation-spaces) 

をか、などの適切なモード、マップでそれを定義します:あなたはDELに、このバウンドをしたいなら、あなたは

を行うことができます切り替えるに更新

(define-key some-major-mode-map (kbd "DEL") 'remove-indentation-spaces) 

charと4つの空白を削除する:

(defun remove-indentation-spaces() 
    "remove TAB-WIDTH spaces from the beginning of this line" 
    (interactive) 
    (if (save-excursion (re-search-backward "[^ \t]" (line-beginning-position) t)) 
     (delete-backward-char 1) 
    (indent-rigidly (line-beginning-position) (line-end-position) (- tab-width)))) 
+0

まあ、それは私が望むものに近いです。しかし、これをDELにバインドして、通常の最後の文字を削除しますが、その行の前の文字がすべて空白の場合は4つの空白を削除します。 – asmeurer

+0

@asmeurerあなたがしたいことをするように更新しました。 –

関連する問題