私は XCode と Netbeans を使用してきましたが、引用符や括弧を自動的に補完する機能があることに気付きました (他の IDE もこれを行うことが多いと思います)。この機能の名前はわかりませんが、Emacs でこれを行う方法はありますか?
たとえば、入力すると
printf("
自動入力してほしい
printf("")
カーソルを引用符の間に置きます。
ありがとうございました。
私は XCode と Netbeans を使用してきましたが、引用符や括弧を自動的に補完する機能があることに気付きました (他の IDE もこれを行うことが多いと思います)。この機能の名前はわかりませんが、Emacs でこれを行う方法はありますか?
たとえば、入力すると
printf("
自動入力してほしい
printf("")
カーソルを引用符の間に置きます。
ありがとうございました。
M-( と入力すると、( と ) の両方が挿入され、その間にポイントが残ります。次に M-) と入力すると、ポイントは閉じている ) を横切って移動します。私はいつもこれを使っています。
「paredit」と呼ばれるモード ( http://mumble.net/~campbell/emacs/paredit.elから入手可能) もあります。これは、この種の引用やその他のことも行います。
デフォルトでは、paredit-mode は一致する終了要素を挿入するため、入力中に次のようなものが表示さprintf()
れprintf("")
、カーソルが引用符内に配置されます。
ここにも私の5セント。
(setq skeleton-pair t)
(defvar skeletons-alist
'((?\( . ?\))
(?\" . ?\")
(?[ . ?])
(?{ . ?})
(?$ . ?$)))
(global-set-key (kbd "(") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "[") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "\"") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "\'") 'skeleton-pair-insert-maybe)
次のアドバイスでは、backspaceがペアを削除できるようになります:a(|)b-> ab
(defadvice delete-backward-char (before delete-empty-pair activate)
(if (eq (cdr (assq (char-before) skeletons-alist)) (char-after))
(and (char-after) (delete-char 1))))
次のアドバイスは、他のテキストで区切られている場合でも、一致するパーを削除することbackward-kill-word
です(私にとっては)。M-backspaceとても便利な。
(defadvice backward-kill-word (around delete-pair activate)
(if (eq (char-syntax (char-before)) ?\()
(progn
(backward-char 1)
(save-excursion
(forward-sexp 1)
(delete-char -1))
(forward-char 1)
(append-next-kill)
(kill-backward-chars 1))
ad-do-it))
しかし、私は今、pareditに移行しようとしています。
http://cmarcelo.wordpress.com/2008/04/26/a-little-emacs-experiment/のコードを使用して「電気ペア」を実行しています。私のブログで説明しているように、他のモードではPythonのトリプルクォートされた文字列に問題があります。(Pythonの特性)
autopairマイナー モードは、まさにあなたが求めていることを行います。