Подтвердить что ты не робот

Как сделать 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)))

спасибо за помощь

4b9b3361

Ответ 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.