答えて
これはおそらく以前に解決されている可能性がありますが、コードを探す代わりに、独自のコードを書くことができます。とても楽しい!
これは私がそれを行う方法です、それが助けてくれることを望みます。
(defun kill-whitespace-or-word()
(interactive)
(if (looking-at "[ \t\n]")
(let ((p (point)))
(re-search-forward "[^ \t\n]" nil :no-error)
(backward-char)
(kill-region p (point)))
(kill-word 1)))
そして、キーにバインド:あなたはCC-モードベースのバッファを使用している場合
(global-set-key (kbd "M-d") 'kill-whitespace-or-word)
私はkill-whitespace-or-word-backward機能を主に探しています。単語を逆方向に削除しますが、ほとんどは\ nで停止します。私はこのコードをそれに適合させることができると思っていますが、私はelispでそれを理解するにはあまりにも無知です:/ – mtourne
、あなたはおそらくHungry Delete Mode
マイナーモードを探しています。
は違いの感触を得るためにいくつかの場所でをDELETE C-CDELとC-Cを試してみてください。
好きな人は、M-x c-toggle-hungry-state
を実行するか、空腹の削除機能を好みのバインディングにリバウンドするだけで、空腹の削除を標準のキーで機能させることができます。
あなたはまだあなたは、あなたがc-hungry-delete-forward
に似た何かを行うことができ、単語または空白を殺すか、単に一時的にc-delete-function
を再バインドし、それを呼び出す前方に行うための一つのキーをピギーバックする必要があると思う場合。
(defun c-hungry-delete-forward-word()
"Delete the following word or all following whitespace
up to the next non-whitespace character.
See also \\[c-hungry-delete-backwards]."
(interactive)
(let ((c-delete-function (function kill-word)))
(c-hungry-delete-forward)))
詳細については(ccmode) Hungry WS Deletion
をご覧ください。
TroughいつもEmacsを使っていますが、私は基本的な機能を変更することはできますが、効率の点ではほとんど効果がないと思いました。実際、私が数回それをした後、私はそれを後悔してそれを元に戻しました。これは常に真実ではなく、いくつかのキーバインドは本当に不快なものではありませんが、まれに有用なものですが、私はこれがキルワードの仕組みとは違うと思います。実際には、私は今すぐ実現しました:私はEclipseでキーバインドを試しましたが、私はEmacsスタイルのキーバインディングを永遠に使っています...
とにかく、 「その機能は、私は自分自身があなたが記述機能のようなものを必要と見つけることはありません:)それが本当に壊れていることを確認し、そしてなぜ多分ここにある:
M-SPC
1つのだけのスペースに単語間のスペースを削減します。これは、単語の間にポイントがあって、単語を区切る余分なスペースを削除したければ、私が使用していたものです。M- \は、すべての水平スペースを削除します。これにより、スペースで区切られた2つの単語が結合されます。何を達成しようとしていることのように "スパース" の書式設定のいくつかの種類がある場合
:M-X
align-regexp
はそれを行うために
int foo = 42;
unsigned int bar = 43;
はそこです。私はちょうどそれがインデントされ、そして場合には、それはインデントがある場合を除き、ホワイトスペースの)長いその結果としての実行を持って起こることはありません
は、TABは、通常、より良い、それを処理します。 b)結果として空白が長く続く場合でも、一度に1文字ずつ移動することはほとんどないので、いくつかの空白に囲まれた点を見つけることは難しいです。 ArtistモードやDotダイアグラムのようなものが気になりますが、コード編集中には発生しません。最後に
、あなたも、ちょうど任意のテキストファイルを編集し、単語間の水平方向のスペースを追加または削除したいとしましょう、しようとしている場合は...もう一度、あなたがそこにのMx
最後にalign-regexp
はそれを行うためにだ、またはその時に数行があれば、四角形で動作するコマンドを使用できます。さて、Emacsはアドホックなタブを認識して、TABを打ったポイントの前の最後の行と一致するようにテキストを整列させようとします。
、何らかの理由で、私は、私はそうのようにそれを行うだろう、私は本当にあなたが記述を正確に何をするのに必要な:)測深できない場合:BACKSPACE \ KM-を(それ代わりに「K」のいずれかの他の重要なことができます - 私はそれについて考えることが怠惰だ場合、それは、または:)を入力する高速ですので、それは、ちょうどあなたの指の下にある:M-SPCMfのMbのCw - おそらく多くのように聞こえるかもしれませんが、これらはあなたが覚えているコマンドですとにかく時間のすべてを使用しているので、スピードの点であなたを妨げることはありません。
(defvar movement-syntax-table
(let ((st (make-syntax-table)))
;; ` default = punctuation
;; ' default = punctuation
;; , default = punctuation
;; ; default = punctuation
(modify-syntax-entry ?{ "." st) ;; { = punctuation
(modify-syntax-entry ?} "." st) ;; } = punctuation
(modify-syntax-entry ?\" "." st) ;; " = punctuation
(modify-syntax-entry ?\\ "_" st) ;; \ = symbol
(modify-syntax-entry ?\$ "_" st) ;; $ = symbol
(modify-syntax-entry ?\% "_" st) ;; % = symbol
st)
"Syntax table used while executing custom movement functions.")
(defun delete-word-or-whitespace (&optional arg)
"http://stackoverflow.com/a/20456861/2112489"
(interactive "P")
(with-syntax-table movement-syntax-table
(let* (
beg
end
(word-regexp "\\sw")
(punctuation-regexp "\\s.")
(symbol-regexp "\\s_\\|\\s(\\|\\s)"))
(cond
;; Condition # 1
;; right of cursor = word or punctuation or symbol
((or
(save-excursion (< 0 (skip-syntax-forward "w")))
(save-excursion (< 0 (skip-syntax-forward ".")))
(save-excursion (< 0 (skip-syntax-forward "_()"))))
;; Condition #1 -- Step 1 of 2
(cond
;; right of cursor = word
((save-excursion (< 0 (skip-syntax-forward "w")))
(skip-syntax-forward "w")
(setq end (point))
(while (looking-back word-regexp)
(backward-char))
(setq beg (point))
(delete-region beg end))
;; right of cursor = punctuation
((save-excursion (< 0 (skip-syntax-forward ".")))
(skip-syntax-forward ".")
(setq end (point))
(while (looking-back punctuation-regexp)
(backward-char))
(setq beg (point))
(delete-region beg end))
;; right of cursor = symbol
((save-excursion (< 0 (skip-syntax-forward "_()")))
(skip-syntax-forward "_()")
(setq end (point))
(while (looking-back symbol-regexp)
(backward-char))
(setq beg (point))
(delete-region beg end)))
;; Condition #1 -- Step 2 of 2
(cond
;; right of cursor = whitespace
;; left of cursor = not word/not symbol/not punctuation = whitespace or bol
((and
(save-excursion (< 0 (skip-chars-forward "\s\t")))
(not (save-excursion (> 0 (skip-syntax-backward "w"))))
(not (save-excursion (> 0 (skip-syntax-backward "."))))
(not (save-excursion (> 0 (skip-syntax-backward "_()")))))
(setq beg (point))
(skip-chars-forward "\s\t")
(setq end (point))
(delete-region beg end))
;; right of cursor = whitespace
;; left of cursor = word or symbol or punctuation
((and
(save-excursion (< 0 (skip-chars-forward "\s\t")))
(or
(save-excursion (> 0 (skip-syntax-backward "w")))
(save-excursion (> 0 (skip-syntax-backward ".")))
(save-excursion (> 0 (skip-syntax-backward "_()")))))
(fixup-whitespace))))
;; Condition # 2
;; right of cursor = whitespace
;; left of cursor = bol | left of cursor = whitespace | right of cursor = whitespace + eol
((and
(save-excursion (< 0 (skip-chars-forward "\s\t")))
(or
(bolp)
(save-excursion (> 0 (skip-chars-backward "\s\t")))
(save-excursion (< 0 (skip-chars-forward "\s\t")) (eolp))))
(setq beg (point))
(skip-chars-forward "\s\t")
(setq end (point))
(delete-region beg end))
;; Condition # 3
;; right of cursor = whitespace or eol
;; left of cursor = word or symbol or punctuation
;; not bol + word or symbol or punctuation
;; not bol + whitespace + word or symbol or punctuation
((and
(or (save-excursion (< 0 (skip-chars-forward "\s\t"))) (eolp))
(or
(save-excursion (> 0 (skip-syntax-backward "w")))
(save-excursion (> 0 (skip-syntax-backward ".")))
(save-excursion (> 0 (skip-syntax-backward "_()"))))
(not (save-excursion (> 0 (skip-syntax-backward "w")) (bolp)))
(not (save-excursion (> 0 (skip-syntax-backward ".")) (bolp)))
(not (save-excursion (> 0 (skip-syntax-backward "_()")) (bolp)))
(not (save-excursion (and (> 0 (skip-syntax-backward "w")) (> 0 (skip-chars-backward "\s\t")) (bolp))))
(not (save-excursion (and (> 0 (skip-syntax-backward ".")) (> 0 (skip-chars-backward "\s\t")) (bolp))))
(not (save-excursion (and (> 0 (skip-syntax-backward "_()")) (> 0 (skip-chars-backward "\s\t")) (bolp)))))
(setq end (point))
(cond
((save-excursion (> 0 (skip-syntax-backward "w")))
(while (looking-back word-regexp)
(backward-char)))
((save-excursion (> 0 (skip-syntax-backward ".")))
(while (looking-back punctuation-regexp)
(backward-char)))
((save-excursion (> 0 (skip-syntax-backward "_()")))
(while (looking-back symbol-regexp)
(backward-char))))
(setq beg (point))
(when (save-excursion (> 0 (skip-chars-backward "\s\t")))
(skip-chars-backward "\s\t")
(setq beg (point)))
(delete-region beg end)
(skip-chars-forward "\s\t"))
;; Condition # 4
;; not bol = eol
;; left of cursor = bol + word or symbol or punctuation | bol + whitespace + word or symbol or punctuation
((and
(not (and (bolp) (eolp)))
(or
(save-excursion (> 0 (skip-syntax-backward "w")) (bolp))
(save-excursion (> 0 (skip-syntax-backward ".")) (bolp))
(save-excursion (> 0 (skip-syntax-backward "_()")) (bolp))
(save-excursion (and (> 0 (skip-syntax-backward "w")) (> 0 (skip-chars-backward "\s\t")) (bolp)))
(save-excursion (and (> 0 (skip-syntax-backward ".")) (> 0 (skip-chars-backward "\s\t")) (bolp)))
(save-excursion (and (> 0 (skip-syntax-backward "_()")) (> 0 (skip-chars-backward "\s\t")) (bolp)))))
(skip-chars-forward "\s\t")
(setq end (point))
(setq beg (point-at-bol))
(delete-region beg end))
;; Condition # 5
;; point = eol
;; not an empty line
;; whitespace to the left of eol
((and
(not (and (bolp) (eolp)))
(eolp)
(save-excursion (> 0 (skip-chars-backward "\s\t"))))
(setq end (point))
(skip-chars-backward "\s\t")
(setq beg (point))
(delete-region beg end))
;; Condition # 6
;; point = not eob
;; point = bolp and eolp
;; universal argument = C-u = '(4)
((and
(not (eobp))
(and (bolp) (eolp))
(equal arg '(4)))
(delete-forward-char 1))))))
私は一般的に機能が好きですが、それはかなり普遍的ではないことがわかりました。つまり、1行目を削除すると、前の行を削除するために折り返さずに、単に「停止」します –
行末に空白がある場合、行頭には文字の削除が開始されませんすべて? –
@Leo Ufimtsev - 私は、行末の空白を扱うための条件を追加しました。ポイントがラインの終わりにあり、空白が左にあるときは、すべての空白を左に削除します。これは、左の空白が削除される唯一の状況です。この機能を改善してくれてありがとう。私は、現在の段落が削除された後、行の前後を削除するために関数の範囲を増やす必要があるかどうかについていくつか考えたいと思います。私が躊躇する理由は、自分自身を含む多くのユーザーが、機能を繰り返すことで過度に怒ってしまうことがあるということです。 – lawlist
- 1. REGEX:</em></strong>と<strong><em>「WORD2:」</em></strong>がどのように任意の文字を選択することができます。特定の単語<strong><em>「単語1」の間に2つの単語、私はすべての文字を選択したい
- 2. <:<はどのように動作しますか?
- 3. 作成および更新</strong><em>OR</em><strong>更新をし、任意の共同関連の取引が取得する場合ように、単一のトランザクションで単一または複数のエンティティに</strong>レコードを削除し、私は<strong>したい単一ExecuteTransactionRequestまたはExecuteMultipleRequest
- 4. CTRL + ALT + DELキーはCtrl</kbd>しかし</kbd> + <kbd>デル</kbd>が動作していない<kbd>Ctrlキー</kbd> + <kbd>Altキー、<kbd>を行うためのWin32APIとPython
- 5. VIM:</p> <pre><code><p> Hello </p> </code></pre> <p>そして、私はそれ</p> <pre><code><p>Hello</p> </code></pre> <p>ようにしたい私は、カーソルを置くしたいと思います:次の非空白文字まで、すべての空白を削除
- 6. <p>上記の場合、2行目の空白のみ。私はこれを試してみました:</p> <pre><code>(^\s*)+(POST|GET|DELETE|PUT|PATCH|OPTIONS) </code></pre> <p>問題は、これがさえ「PATCH」の単語と一致しますが、「PATCH」の前に空白文字のみに一致するようになるでしょうです。</p>
- 7. Flash Builderの - CRTLでスクロール+左/右、私は左</kbd>または<kbd>Ctrlキー</kbd>を<kbd>Ctrlキー</kbd> + <kbd>を使用して単語をスキップしようとすると、
- 8. <nav>と空白を削除する方法<header>
- 9. LaTexのマクロは、LaTexをMathで人間にとってよりフレンドリーにするためのマクロですか?名詞がでないように私は、各</p> <ol> <li>\と言葉によってを置き換えLaTeXのマクロを作る「と」</li> <li>\または単語によって「または」</li> </ol> <p>するにはどうすればよい
- 10. パイソン - 私はちょうど<code>json.dumps()</code>が</p> <p>例えばJSONオブジェクトにスペースを追加することを実現空白
- 11. PHPExcel経由でExcelでドイツ語の文字(äöü߀)を読むにはどうすればよいですか? <a href="http://phpexcel.codeplex.com" rel="nofollow noreferrer">PHPExcel</a>で</p> <p><img src="https://i.stack.imgur.com/KzniU.png" alt="alt text"></p> <p>が、それは次のようになります:
- 12. 私は<strong>のHashMap</strong>に<strong>キー(restaurant_id)</strong>と<strong>値(ORDER_ID)</strong>を追加しようとしています
- 13. は、これはどのように</p> <p><img src="https://i.stack.imgur.com/q1ySm.png" alt="enter image description here"></p> <p>私は何をすべき...
- 14. 文字列から余分な文字を削除するにはどうすればよいですか?</p> <p><img src="https://i.stack.imgur.com/chRCB.jpg" alt="column of the strings"></p> <p>それが適用さだどこ私は<code>.html</code>後にすべてのものを削除する:
- 15. は!SRCは、私は私のIDEで自動補完を使用する場合、それはでも、私はそれが単に動作する強打<code>!</code>を削除この</p> <pre><code><script !src=""></script> </code></pre> <p>のように埋めHTML
- 16. リマップ私は、私は、私は」ファイルパスを強調表示することができます<kbd>Altキー</kbd> + <kbd>D</kbd>に<kbd>Ctrlキー</kbd> + <kbd>リットル</kbd>を再マッピングしたい
- 17. どのように私はEmacsで作業する場合、それはそれらのファイルを無視します、私は<code>.gitignore</code>にパターンを追加する方法<code>#foo.txt#</code>のような一時ファイルを作成
- 18. は私が<em>X</em>または<em>trimws</em>でトリミングされていない先頭および/または末尾の空白を持つ任意の類似した文字列をトリミングすることができますどのように制御文字の空白
- 19. Javaの正規表現は、特定の文字列パターンを置き換えるために、私は同じ単語(省略#)</p> <p>例</p> <p>「単語1 WORD2での単語のセットを含む文字列に#で始まる単語を置き換えたい
- 20. 変更特定の単語のテキストの背景色を<p>私は<code>TextView</code>に特定の単語の背景色を変更したい:</p> <p></p> <p><a href="https://i.stack.imgur.com/4I6Sg.png" rel="noreferrer"><img src="https://i.stack.imgur.com/4I6Sg.png" alt="enter image description here"></a></p>
- 21. "<< >>"文字列の単語を見つけるには
- 22. elm-replでタスクの値を印刷するにはどうすればよいですか?私は私の<code>forty</code>を取ると...それを使用するにはどうすればよい</p> <pre><code>> forty = Task.succeed 40 <task> : Task.Task a number </code></pre> <p>:
- 23. 私は一致する必要が単語が<strong>「FFM_L_REEF_30」</strong>(単語の長さは固定されません)<br> 私は一致する必要が単語のリストがあるある1つの文字違い
- 24. AutoHotkeyを、私は、Windowsのスタートメニューは、キーボード上の</kbd> + <kbd>エスケープ</kbd>代わり<kbd>コントロールのスペース</kbd> + <kbd><kbd>左Alt</kbd>を押して表示されるようするAutoHotkeyをを使用しようとしている
- 25. はonClickのは、私はボタンが</p> <pre><code><button> onClick={console.log('hello world!')}> Submit </button > </code></pre> <p>クリックされたときに、簡単な単語をログアウトに反応してのonClickメソッドを使用しようとしています適切に
- 26. は、どのように私は非表示にするJSPファイルからいくつかの部分を削除したい7.</strong> <br/><strong>のLiferayに<strong>ブログ</strong>ポートレットをカスタマイズしようとしています7
- 27. 私は各単語と入れたい文字列</p> <pre><code>My name is bob.I am fine </code></pre> <p>持つテキスト
- 28. は、どのように私はパスを描画しようとした</p> <p><img src="https://i.stack.imgur.com/Bh8pT.png" alt="what i expected[1]"></p> <p>を次のようにSVGを使用してHTMLにプログレスバーを作成しようとしていますが、それは働いていないのHTML
- 29. 私はこれらの<em>スペース</em>のそれぞれに隣接<em>スペース</em>のリストを取得するためには、建物のすべての部屋(または実際にすべての<em>スペース</em>)を閲覧しようとしていたRevit 2017 API
- 30. 私は例 <p></p>(大文字と小文字を区別しない)「の前に」など、ある特定の単語を除いて「前に」を含むすべての単語を置き換えたい一つの特定の単語
私はこれらのホットキーに言及したときにあなたが念頭にいた最新のエディタを理解しようとしています...私は実際にあなたが記述する動作に遭遇していません。私が試したほとんどのことは、行全体を削除したり、文書の開かれている履歴をナビゲートしたりするなど、何もしません。だから、あなたが気にしていた空白の削除の種類は本当にわかりません。 '' M- \ ''のようなものですか?またはポイントの前後だけを削除する必要がありますか? –
また、http://www.emacswiki.org/emacs/DeletingWhitespaceここには、あらゆる種類の空白削除を行うためのユーザー提出コードの大規模なコレクションがあります。 –
@wvxvw申し訳ありません、それはAltキーでなければなりません。日食、ビジュアルスタジオ、崇高な文章のような編集者。 – woodings