我在Windows程序上使用Ubuntu上的Bash来使用Emacs for C ++。 现在,我可以使用键盘快捷键对所有内容进行编码,但是,我想用鼠标选择文本或用鼠标设置标记,而不是总是使用我的键盘。
要获得X Windows系统,我已经sudo apt-get install xserver -xorg
,但emacs仍然在终端编辑器中运行。
我不知道使用什么其他命令或如何让X Windows开始运行。
答案 0 :(得分:31)
Windows bash不支持X Server。但是,使用Windows X Server端口(如MobaXTerm,XMing或vcXsrv)与Windows bash一起使用。有些东西开箱即用(gvim确实如此),emacs需要更多努力。
以下是我的工作方式:
安装MobaXterm。最有可能你也可以使它与XMing一起使用,但我只测试了MobaXterm。 更新:使用vcXsrv和XMing(付费版本)进行测试。工作方式基本相同,我可能会坚持使用MobaXTerm。
安装emacs 25.1快照。原因是:Ubuntu 14.04附带了emacs 24.3,它不适用于Windows bash和MobaXTerm X服务器(不知道为什么,而且它太老了。)
使用以下命令安装快照:
sudo add-apt-repository ppa:ubuntu-elisp/ppa
sudo apt-get update
sudo apt-get install emacs-snapshot
然后运行
sudo update-alternatives --config emacs
并选择emacs-snapshot
确保设置DISPLAY
export DISPLAY=localhost:0.0
运行MobaXTerm(你不需要做任何事情,只需启动它 - 它将在需要时启动X服务器。)
在bash中运行emacs并享受。
还有一个问题,它在我测试的所有三个软件包(MobaXTerm,XMing和vcXsrv)中都存在。 Emacs坚持初始帧大小,并且在调整窗口大小时不会调整其帧大小。菜单栏也存在同样的问题 - 当菜单栏被禁用时,emacs不会回收其空间,它仍然是一个灰色矩形。这个问题似乎是Windows上的emacs特有的bash - gvim和其他GUI程序似乎工作正常。另外,在Linux上使用Windows上的任何X Server运行emacs 25.1都可以正常工作。我曾尝试使用不同的GUI设置(GTK 2.0等)构建emacs,但Windows上的emacs使bash卡住了。如果我找到解决方法,我会发布更新。
2009年9月24日更新根据Jarett,init.el
中的以下内容应修复帧大小调整问题:
(setq frame-resize-pixelwise t)
我没有带有bash活动的Windows,所以我无法测试它。
答案 1 :(得分:6)
感谢@ Yuri的好答案,它确实有效!经过一些进一步的尝试和错误后,我找到了解决白边问题的方法。您将需要从Emacs v24.5源代码重建(我在git存储库中尝试了一些v25版本,但是如果您使用的是git存储库,checkout标记" emacs-24.5-rc3"则全部失败)。 在配置阶段,您需要选择" lucid" (或" athena",同样的事情)x-toolkit而不是当前" gtk3"。请注意" motif"有同样的问题。
首先,下载Emacs源代码并安装" libxaw7-dev"包。 " libncurses5-dev"以防万一你没有。假设我们在〜/ build-emacs24:
目录中执行所有操作mkdir ~/build-emacs24
cd ~/build-emacs24
wget https://ftp.gnu.org/gnu/emacs/emacs-24.5.tar.xz
sudo apt-get install libxaw7-dev libncurses5-dev
tar xvf emacs-24.5.tar.xz
现在我们有了#ema; -24.5"目录提取。为了防止其他地方报告的D-BUS问题,请在没有它的情况下进行配置,并将其安装在/ usr / local / bin中(默认情况下):
cd emacs-24.5
./configure --without-dbus --without-gconf --without-gsettings --with-x-toolkit=athena
现在,我们已经准备好构建Emacs了。但在此之前,我们需要稍微调整一下内核,否则构建很快就会失败。 (让我们跳过详细信息,如果您有兴趣,请在您的emacs源代码中的" etc / PROBLEMS"中解释。)您只需在构建阶段进行此操作。安装新的emacs后,您不需要再次执行此操作。
sudo sh -c "echo 0 > /proc/sys/kernel/randomize_va_space"
现在让我们进入漫长的构建过程,您可能会在构建过程中遇到整体系统减速,您可以减少构建中使用的线程数量(这里我使用" 4"对于2核4线程Intel CPU,不要使用大于支持的线程数(cat / proc / cpuinfo),否则它将变得更慢。)
time nice make -j 4
只需几分钟?更多内容,现在安装它(记住" sudo"在这里):
sudo make install
整个构建和安装在我的机器上花了不到10分钟,也不错。现在我们有一个工作的Emacs 24.5位于" / usr / local / bin / emacs"。如果您将所有内容设置为@ Yuri的答案,您应该能够立即启动它:
/usr/local/bin/emacs &
现在你可以最大化它并做你想做的事情。这是一个屏幕截图,注意到右上角,它已经最大化了:
不要担心颜色,这是我自己的主题选择。
还有一个问题。让我们再次解决它。有时您选择了一个菜单项和"白色边框"再次袭击!
它现在变小但仍然很烦人。
幸运的是,这次我们可以让它消失。最大化/恢复窗口,它将消失。经过几轮后,它有时会再次停止发生,但并非总是如此。这仍然很烦人。由于调整窗口大小可以解决这个问题,为什么我们不让它自动化呢?也许是一个不太糟糕的解决方法?
现在编辑你的"〜/ .emacs"文件并添加以下代码(当然使用新的Emacs;):
(defvar fix-frame-white-border-last-check 0)
(defun current-sec ()
(let ((currtime (current-time)))
(logior (lsh (car currtime) 16) (cadr currtime))))
(defun fix-frame-white-border-uow (&optional frame)
(when (> (- (current-sec) fix-frame-white-border-last-check) 2)
(setf frame (or frame (selected-frame)))
(let ((width (frame-width frame))
(height (frame-height frame)))
(set-frame-size frame (1- width) height)
(set-frame-size frame width height))
(setq fix-frame-white-border-last-check (current-sec))))
(advice-add 'menu-bar-open :after #'fix-frame-white-border-uow)
(add-hook 'menu-bar-update-hook #'fix-frame-white-border-uow)
代码并不完美,但它有效。当您使用菜单时,它会稍微调整您的框架大小并立即恢复它。它还可以防止自己频繁调整大小。
答案 2 :(得分:1)
默认的emacs可以使用Xming和其他选项。问题是默认替代指向emacs24-nox命令。你需要安装'emacs24',这将删除emacs24-nox。
$ sudo update-alternatives --query emacs
Name: emacs
Link: /usr/bin/emacs
....
Status: auto
Best: /usr/bin/emacs24-nox
Value: /usr/bin/emacs24-nox
$ sudo apt install emacs24
$ sudo update-alternatives --query emacs
Name: emacs
Link: /usr/bin/emacs
...
Status: auto
Best: /usr/bin/emacs24-x
Value: /usr/bin/emacs24-x
确保正确设置$ DISPLAY。
export DISPLAY=localhost:0.0