Как сделать Emacs автоматическим отступом мой C-код?
Я только начинаю чувствовать emacs, но я расстроен тем, что он не отступал, когда я нажимаю клавишу возврата. Я знаю, если я нажму C-j, он это сделает, но я не могу привыкнуть к этой привычке. Я просто не могу. Мне нужно нанести ответный удар, и я ненавижу повторное табуляцию каждый раз.
Я зашел в опции и нашел крючок режима C, и режим С++, и т.д. - и они определили два сопоставления клавиш (10 и 13), и я вспомнил, что 0A и 0D являются CR/LF, потому что я использовал их много в сборка). Я понял, что, поскольку один сказал "(lambda nil (define-key lisp-mode-map [13] (quote newline-and-indent))
", а другой тот же, но с (quote newline)
вместо этого, я просто положил -and-indent в конце этого и понял, что это сработает.
Но это не так: я установил и сохранил его, попробовал, безрезультатно. Перезапущенные emacs, все еще не имеют успеха. Как сделать его отступом мой код? Это ужасно безумно, что emacs требует степени в lisp, чтобы настроить его для ваших основных потребностей.
Кроме того, в качестве своего рода побочного вопроса: как скопировать и вставить из буфера обмена ? Killing/yanking удобен, и все, кроме я ненавижу, редактирую- > копировать каждый раз, когда я хочу вставьте в другое место.
- EDIT -
В порядке, я поместил следующие строки в мои .emacs, и это сработало:
(add-hook 'c-mode-common-hook (lambda ()
(local-set-key (kbd "RET") 'newline-and-indent)))
спасибо за помощь
Ответы
Ответ 1
Посмотрите emacswiki - autoindent
Как было предложено, поместите следующий код в ваш .emacs
(defun set-newline-and-indent ()
(local-set-key (kbd "RET") 'newline-and-indent))
(add-hook 'c-mode 'set-newline-and-indent)
Вы можете настроить переменную C Styl по умолчанию. В emacs перейдите в Options- > Customize Emacs- > Specific Option, затем введите c-default-style и настройте на ваш выбор. Делая это, вам не нужно ударять TAB. Введите из начала строки и как вы нажмете ";", он будет автоматически отступать.
Надеюсь, что это поможет
Ответ 2
Я установил ключ возврата во всем мире в качестве нового строя и намерения в моем файле ~/.emacs
:
(global-set-key "\C-m" 'newline-and-indent)
Работает для меня.
Ответ 3
В дополнение к другим предложениям, попробуйте C-c C-a
переключить функцию автоматической печати, чтобы ваша модельная строка читала C/la
. Тогда вам даже не нужно нажимать Enter большую часть времени; вместо этого, когда вы вводите точку с запятой или скобку, вставляются символы новой строки, а ваш код становится отступом. Иногда вам нужно нажать Enter, и вы не получите autoindentation (если вы не вернете RET
, как это предлагается в другом ответе), но если вы просто начнете вводить следующую строку в любом случае, вы можете заметить, что она получает отступ правильно, когда вы введите некоторый символ пунктуации.
Чтобы начать работу со степенью "Lisp", введите C-h i
для обозревателя "Информация" и перейдите в node для "Режим CC" (он отделен от node для Emacs, введите d
для каталога и найдите там режим CC).
Ответ 4
Если вы хотите отложить весь файл c/С++, вы просто выполните
- отметить все: CTRL-x h
- нажмите TAB
Это, btw, работает также для xml, кода python и других типов.
Ответ 5
Попробуйте [enter], (kbd "enter") или (read-kbd-macro "enter"), все они выполняют тонко разные вещи;)
Кроме того, для меня копирование/вставка просто работает. Можете ли вы попробовать запустить emacs -q и посмотреть, работает ли он? Если это так, это может быть проблемой с вашим .emacs.
У меня также есть:
(when window-system
;; use extended compound-text coding for X clipboard
(set-selection-coding-system 'compound-text-with-extensions))
но это может сделать что-то еще;)
Ответ 6
копирование: переход к началу, CTRL-пространство, переход к концу, ALT-W
вставка: CTRL-y
в unix: левая мышь для копирования, правая мышь для вставки
Ответ 7
Легкий способ сделать это - использовать electric-indent-mode
. Если вы хотите включить его вручную, просто выполните
M-x electric-indent-mode
Чтобы включить его автоматически, скажите следующее в .emacs
:
(electric-indent-mode)
Это будет значение по умолчанию в Emacs 24.4.