为什么Emacs项目C-CP未定义?
我是Emacs的新手。我已经安装了射弹 当我做为什么Emacs项目C-CP未定义?,emacs,projectile,emacs-projectile,Emacs,Projectile,Emacs Projectile,我是Emacs的新手。我已经安装了射弹 当我做C-cp时,它会说: C-c p is undefined 想知道怎么了 下面是我的~/.emacs文件 (require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) (package-initialize) (defvar required-packages
C-cp
时,它会说:
C-c p is undefined
想知道怎么了
下面是我的~/.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)
编辑
我的.投射文件
-/venv
-*.pyc
-*.pyc~
-.git
-.gitignore
-.DS_Store
编辑2
C-h v
投射物键映射前缀的输出如下所示:
projectile-keymap-prefix is a variable defined in `projectile.el'.
Its value is "^Cp"
Documentation:
Projectile keymap prefix.
You can customize this variable
编辑3
我正在使用OSX10.10.4。我从命令行$emacs
启动emacs。我使用以下命令安装了Emacs:
brew install emacs --with-cocoa
而且,第一次(当我启动emacs时)。如果执行
M-x
,我不会得到project-switch-project
,而是得到project-switch-to-buffer
。切换缓冲区后,我可以切换项目。投射物的默认键映射前缀由变量投射物键映射前缀定义。您可以使用C-hv
查看该变量的值。如果未设置或不是^Cp
,您可以使用下面的代码将其设置为C-Cp
(setq projectile-keymap-prefix (kbd "C-c p"))
或者任意键绑定。您需要在~/.emacs
文件中手动激活投射模式:
(projectile-mode 1)
我最近遇到了一个类似的问题,投射物全局模式
在我将投射物
包固定到melpa稳定存档(版本为v0.14.0
)后,它的工作方式与以前不同
以前,投射全局模式
的行为方式是,当打开时,任何缓冲区都可以使用键绑定,但现在我无法让它在emacs启动后的初始屏幕(处于基本模式)中工作,就像Menno Smits在注释中指出的那样
出于好奇,我git bisect
sparlode的源代码历史,以找出哪个提交引入了此行为更改并最终获得,它不再使用define globalized minor mode
来定义全局minor mode,而是使用(定义次要模式xxxxxx:global t)
,从定义全球化次要模式的文档中可以看出差异,我认为:
全局启用该模式也会影响随后通过访问文件创建的缓冲区,和使用基本模式以外的主模式的缓冲区;但它不会在基本模式下检测到新缓冲区的创建
不确定这是否相关,但我就是这样想出来的,希望它能帮助任何与我有相同困惑的人。您现在需要显式启用它并设置前缀。启用带有C-C-p
前缀的射弹的步骤:
(projectile-mode +1)
(define-key projectile-mode-map (kbd "C-c C-p") 'projectile-command-map)
这在2018年发生了几次变化。Boris曾将C-C-p
设置为默认的领导者,然后将其更改为C-C-p
,以符合(项目符号2提到了它。)但是现在它被完全删除了,所以你应该自己设置它。你有.sparlet
文件吗?如果你不在项目中,我的理解是这可能不起作用。我还应该指出,你的.init
代码在安装sparlet
和将命令发送到fu方面对我很有效nction.尝试重新启动emacs,也许吧。嗨,我确实在Directory中有.sproject文件。我在基本模式下看到了划痕缓冲区的相同行为。如果我尝试在初始划痕缓冲区中使用C-C p,它不起作用,但在编辑其他文件时会起作用。是否在emacs启动时您正在初始划痕缓冲区中尝试C-C p?O显然,如果C-Cp也能在scratch缓冲区中工作,那将是一件好事,但这并不是什么大问题。你好,Tinker,似乎已经为SprojectKeyMap prefix
设置了^Cp
变量。我在上面的问题中添加了edit2。哦,这很奇怪。让我看看。你能先执行Sprojection find file命令吗
查看它是否工作。然后使用C-h f
查看绑定键。作为我的计算机,它是C-C p f
。因此我可以使用它来执行投射命令。一切都很好,但您仍然有问题,那么我对此一无所知。投射查找文件
按预期工作。C-h f
也可以工作。但是C-C p f
不起作用。这很奇怪。也许你可以在错误上切换调试
,看看内部发生了什么。对此我不太熟悉。很抱歉,我无法提供更多帮助。你引用的键绑定约定的链接似乎没有说C-C-p
与C-C-p
有任何不同,所以我很抱歉只是想知道,使用C-C p
感觉也一样好。它似乎没有打破任何惯例。@DanielDinnyes,C-C
对于任何大写或小写字母都是为最终用户保留的(如手册链接页上所述,这是要点2)。任何库绑定这样的序列都是一个缺陷。