Как я переименовываю открытый файл в Emacs?

Ошибка синтаксиса: ошибка синтаксиса, неожиданный T_VARIABLE

Возможный сценарий

Я не могу найти, где мой код поступил не так. Вот моя полная ошибка:

Ошибка анализа: ошибка синтаксиса, неожиданный T_VARIABLE в строке x

Что я пытаюсь

$sql = 'SELECT * FROM dealer WHERE id="'$id.'"';

Ответ

Ошибка анализа: проблема с синтаксисом вашей программы, например, оставляя точку с запятой от конца инструкции или, как и в случае выше, пропускает оператор ..

Простыми словами это синтаксическая ошибка, означающая, что в вашем коде есть что-то, что помешает правильному анализу и поэтому работает.

Что вам нужно сделать, так это внимательно проверить строки, где ошибка для любых простых ошибок.

Это сообщение об ошибке означает, что в строке x файла интерпретатор PHP ожидал увидеть открытую круглую скобку, но вместо этого он встретил нечто, называемое T_VARIABLE. Эта вещь T_VARIABLE называется token. Это способ интерпретации PHP-интерпретатора различных фундаментальных частей программ. Когда интерпретатор читает в программе, он переводит то, что вы написали, в список токенов. Где бы вы ни разместили переменную в своей программе, в списке интерпретатора есть токен T_VARIABLE.

Хорошо читается: Список токенов парсера

So убедитесь, что вы включили хотя бы E_PARSE в своем php.ini. Ошибки анализа не должны существовать в производственных сценариях.

Я всегда рекомендовал добавить следующий оператор при кодировании:

error_reporting(E_ALL);

Отчет об ошибках PHP

Также неплохо использовать среду IDE, которая позволит вам знать ошибки разбора при наборе текста. Вы можете использовать:

  1. NetBeans (прекрасный мир красоты, бесплатное программное обеспечение) (лучший, на мой взгляд)
  2. PhpStorm (дядя Гордон любит это: P, платный план, содержит проприетарное и бесплатное программное обеспечение)
  3. Eclipse (красота и зверь, бесплатное программное обеспечение)

Вопросы, относящиеся:

231
задан titanofold 8 August 2013 в 01:27
поделиться

4 ответа

Попробуйте эту функцию от .emacs Steve Yegge:

;; source: http://steve.yegge.googlepages.com/my-dot-emacs-file
(defun rename-file-and-buffer (new-name)
  "Renames both current buffer and file it's visiting to NEW-NAME."
  (interactive "sNew name: ")
  (let ((name (buffer-name))
        (filename (buffer-file-name)))
    (if (not filename)
        (message "Buffer '%s' is not visiting a file!" name)
      (if (get-buffer new-name)
          (message "A buffer named '%s' already exists!" new-name)
        (progn
          (rename-file filename new-name 1)
          (rename-buffer new-name)
          (set-visited-file-name new-name)
          (set-buffer-modified-p nil))))))

Смотрят на ту страницу, существует другая действительно полезная связанная функция там, названа "буферным файлом перемещения".

86
ответ дан Vladimir Panteleev 23 November 2019 в 03:36
поделиться

Да, с dired режим, Вы можете:

  • C-x d для открытия сушеный
  • RET для выбора каталога текущего файла
  • C-x C-j (dired-jump к названию текущего файла, в Dired)
  • R для переименования файла (или dired-do-rename).
  • q для возвращения к (переименованному) буферу файлов

переименовывание эквивалентно оболочке mv, но это также обновит любые открытые буферы, и в отличие от этого mv это не изменит доступ и изменит времена на файле в файловой системе.

328
ответ дан e40 23 November 2019 в 03:36
поделиться

Для полноты картины, поскольку некоторые люди могут посещать эту страницу, думая, что они получат ответ для функции Emacs «сохранить как», то есть Cx Cw для открытого файла.

119
ответ дан 23 November 2019 в 03:36
поделиться

Вот более надежная версия, адаптированная из Stevey.

;; Originally from stevey, adapted to support moving to a new directory.
(defun rename-file-and-buffer (new-name)
  "Renames both current buffer and file it's visiting to NEW-NAME."
  (interactive
   (progn
     (if (not (buffer-file-name))
         (error "Buffer '%s' is not visiting a file!" (buffer-name)))
     ;; Disable ido auto merge since it too frequently jumps back to the original
     ;; file name if you pause while typing. Reenable with C-z C-z in the prompt.
     (let ((ido-auto-merge-work-directories-length -1))
       (list (read-file-name (format "Rename %s to: " (file-name-nondirectory
                                                       (buffer-file-name))))))))
  (if (equal new-name "")
      (error "Aborted rename"))
  (setq new-name (if (file-directory-p new-name)
                     (expand-file-name (file-name-nondirectory
                                        (buffer-file-name))
                                       new-name)
                   (expand-file-name new-name)))
  ;; Only rename if the file was saved before. Update the
  ;; buffer name and visited file in all cases.
  (if (file-exists-p (buffer-file-name))
      (rename-file (buffer-file-name) new-name 1))
  (let ((was-modified (buffer-modified-p)))
    ;; This also renames the buffer, and works with uniquify
    (set-visited-file-name new-name)
    (if was-modified
        (save-buffer)
      ;; Clear buffer-modified flag caused by set-visited-file-name
      (set-buffer-modified-p nil)))

  (setq default-directory (file-name-directory new-name))

  (message "Renamed to %s." new-name))
14
ответ дан 23 November 2019 в 03:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: