为什么Emacs项目Cc p未定义?

Eli*_*isa 14 emacs projectile emacs-projectile

我是Emacs的新手.我安装了Projectile.

当我这样做时C-c p,它说:

C-c p is undefined
Run Code Online (Sandbox Code Playgroud)

想知道出了什么问题?

以下是我的~/.emacs档案.

(require 'package)

(add-to-list 'package-archives
                      '("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)

(defvar required-packages
  '(
    projectile
    ) "a list of packages to ensure are installed at launch.")

(require 'cl)

                    ; method to check if all packages are installed
(defun packages-installed-p ()
  (loop for p in required-packages
    when (not (package-installed-p p)) do (return nil)
    finally (return t)))

                    ; if not all packages are installed, check one by one and install the missing ones.
(unless (packages-installed-p)
                    ; check for new packages (package versions)
  (message "%s" "Emacs is now refreshing its package database...")
  (package-refresh-contents)
  (message "%s" " done.")
                    ; install the missing packages
  (dolist (p required-packages)
    (when (not (package-installed-p p))
      (package-install p))))

(require 'projectile)
(projectile-global-mode)
Run Code Online (Sandbox Code Playgroud)

编辑

我的.projectile文件

-/venv
-*.pyc
-*.pyc~
-.git
-.gitignore
-.DS_Store
Run Code Online (Sandbox Code Playgroud)

编辑2

C-h v输出projectile-keymap-prefix如下:

projectile-keymap-prefix is a variable defined in `projectile.el'.
Its value is "^Cp"

Documentation:
Projectile keymap prefix.

You can customize this variable
Run Code Online (Sandbox Code Playgroud)

编辑3

我使用的是OS X 10.10.4.我从命令行启动emacs $emacs.我使用以下命令安装了Emacs:

brew install emacs --with-cocoa 
Run Code Online (Sandbox Code Playgroud)

并且,第一次(当我启动emacs时).如果这样做M-x,我不会得到project-switch-project,而是我得到project-switch-to-buffer.切换缓冲区后,我可以切换项目.

Mic*_*ott 9

现在,您需要显式启用它并设置前缀。启用带C-c C-p前缀的弹丸的步骤:

(projectile-mode +1)
(define-key projectile-mode-map (kbd "C-c C-p") 'projectile-command-map)
Run Code Online (Sandbox Code Playgroud)

这在2018年发生了两次更改。鲍里斯(Boris)曾经设置C-c p为默认领导者,然后将其更改为C-c C-p符合emacs键盘绑定约定(第2号项目提要)。但是现在它已被完全删除,因此您应该自己设置。

  • @DanielDinnyes,用于*任何*大写或小写字母的`Cc <letter>`保留给最终用户(如手册链接页上所述-第2点)。任何库绑定这样的序列实际上都是一个错误。 (3认同)

Tin*_*Sun 0

Projectile 的默认键盘映射前缀由变量 定义projectile-keymap-prefix。您可以使用C-h v查看该变量的值。如果没有设置或没有设置^Cp,可以使用下面的代码将其设置为C-c p

(setq projectile-keymap-prefix (kbd "C-c p"))
Run Code Online (Sandbox Code Playgroud)

或您喜欢的任何其他键绑定。