「(」、「{」などを入力すると自動的に閉じ括弧を追加するAutoClose (この投稿から発見)と呼ばれる Vim のプラグインを見てきました。
例えば; 次のように入力すると(|
はカーソルです):
int main(|
クロージング)
が自動的に挿入されるようにしたい:
int main(|)
emacsの同様の機能を知っている人はいますか-今回はGoogleに失敗しました!
「(」、「{」などを入力すると自動的に閉じ括弧を追加するAutoClose (この投稿から発見)と呼ばれる Vim のプラグインを見てきました。
例えば; 次のように入力すると(|
はカーソルです):
int main(|
クロージング)
が自動的に挿入されるようにしたい:
int main(|)
emacsの同様の機能を知っている人はいますか-今回はGoogleに失敗しました!
はい、このモードは electric と呼ばれます。最大の快適さのために、この単純なマクロと電気的動作を組み合わせることができます。
(defun electric-pair ()
"If at end of line, insert character pair without surrounding spaces.
Otherwise, just insert the typed character."
(interactive)
(if (eolp) (let (parens-require-spaces) (insert-pair))
(self-insert-command 1)))
次に、お気に入りのプログラミング モードで適切な文字をバインドして有効にします。たとえば、PythonMode の場合:
(add-hook 'python-mode-hook
(lambda ()
(define-key python-mode-map "\"" 'electric-pair)
(define-key python-mode-map "\'" 'electric-pair)
(define-key python-mode-map "(" 'electric-pair)
(define-key python-mode-map "[" 'electric-pair)
(define-key python-mode-map "{" 'electric-pair)))
CPerl モードはこれをビルトインとして提供します:
;; from my .emacs
(add-hook 'cperl-mode-hook
(lambda ()
(setq cperl-hairy nil
abbrev-mode t ;; automatic keyword expansion
cperl-highlight-variables-indiscriminately t
cperl-auto-newline t
cperl-auto-newline-after-colon t
cperl-regexp-scan nil
cperl-electric-keywords t
cperl-electric-linefeed t
cperl-electric-parens nil) ;; <------ electric parens!
他のモードでも同様のものを提供できます。
もあり'paredit
ます。チート シートには、使用可能なすべてのコマンドが表示されます。別の回答で提案されている電気モードよりも好きです。paredit は () にのみ適用されるため、ニーズに合わない場合があります。
しかし、正直なところ、括弧を囲むパッケージがたくさんあります。ウィキには、それらすべてがここにリストされています。あなたの質問に対処するモードは次のとおりです。
このスレッドを壊して、別の代替案を提供します。ペアの自動挿入、領域のラッピング、バランスの取れた表現のナビゲーションなどを扱う、最近開始された新しいプロジェクトがあります。機能のリストはここで説明するには長すぎるため、詳細な readme を読むことができるsmartparens github リポジトリにリンクします。
これは前述の AutoPair のスーパーセットであり、paredit のコア機能のほとんどを提供します (また、emacs 構文テーブルによって認識されるものだけでなく、あらゆる種類の異なるペアに拡張されます)。
cmarcelo は、スケルトン モードを使用してこれについて素晴らしい投稿を書いています。また、開き括弧を削除した場合に平衡括弧を削除する方法と、誤って閉じ括弧を入力してしまった場合の対処方法も示しています。(ちなみに、どちらの動作も TextMate をコピーします)。
アップデート:
この回答を投稿して以来、このユースケースに最適なシステムであるAutopairを発見しました。私はそれをたくさん使って、それを愛しています。