Emacs

使用,扩展或开发Emacs的人员的问答

1
如何知道缓冲区的可见/聚焦状态?
我正在编写一个与外部进程进行对话的扩展,因此可以在缓冲区不集中时降低“嘿”消息的请求量。 那么,什么是最好的识别方法: 当我的缓冲区可见并集中时 当我的缓冲区可见但不集中时 当我的缓冲区既不可见也不集中时
16 elisp  buffers  focus 

2
如何作用于行尾以外的矩形?
这是Vim的文档必须说的: 虚拟编辑意味着可以将光标定位在没有实际字符的位置。这可以是制表符的一半,也可以是行的结尾。在可视模式下选择矩形和编辑表时很有用。 我最好希望将其实现为次要模式或内置设置。

1
Emacs是否有“本地撤消”扩展?
我经常要撤消本地更改或逐行更改。例如,当我在源代码中更改多行并且只想还原其中的一行时,那么我必须遍历整个撤消树以找到要返回的状态。如果我只能还原标记的区域或该点所在的线会更好。像这样的东西已经存在了吗?
16 editing  undo 

1
跳到函数的开头然后回到当前点的最佳(最小击键)方法?
有时我在一个长函数中,该函数的开始不可见。我最近了解到(which-function-mode)在modeline中哪个告诉我函数的名称,但我希望能够快速跳转到函数的开头,然后尽可能轻松地返回。 到目前为止,我已经找到了两种解决方案。 使用标记 C-SPC 标记当前点 C-M-a 向后移动以启动功能 C-x C-x 与当前点交换标记(跳回来) C-g 取消标记区域 使用寄存器 C-x r SPC p 将当前点保存在寄存器“ p”中 C-M-a 向后移动以启动功能 C-x r j p 跳转到寄存器“ p”中保存的点 有没有更好的办法?我不反对在.emacs文件中添加一些省略号。

2
使用Org Babel纠缠为变量文件名
如果我有一个缠结到文件的代码片段,但是我希望文件名会随着时间变化,那么是否有比Query-replace更干净的方法来更改文件名? 例如,说我将代码纠缠到〜/ dir / my-file.el: #+BEGIN_SRC emacs-lisp :tangle ~/dir/my-file.el (setq myvar1 "value1") #+END_SRC #+BEGIN_SRC emacs-lisp :tangle ~/dir/my-file.el (defun foo (bar) ... ) #+END_SRC etc. 后来我意识到该文件最好放在另一个位置: #+BEGIN_SRC emacs-lisp :tangle ~/dir/my/file.el (setq myvar1 "value1") #+END_SRC #+BEGIN_SRC emacs-lisp :tangle ~/dir/my/file.el (defun foo (bar) ... ) #+END_SRC etc. 有没有办法将参数动态更改为:tangle。 我已经调查并发现,我可以将elisp输入到:tangle参数中。如果我评估(setq myfile "~/dir/file.el)然后纠结以下内容: #+BEGIN_SRC emacs-lisp …

1
我想在组织模式下为我的博客添加<kbd>标签
我用org-mode和org-page编写和发布我的博客。问题是,我想写有关Emacs的文章,并且我想突出显示击键,就像Stack Exchange对该&lt;kbd&gt;标记所做的那样。得到这个:C-x C-f而不是其他! 我可以通过哪种方式或方法来实现?
16 org-mode 

2
如何检测是否在配对中?
问:有没有一种通用的方法来检测点是否在匹配的字符对内? 也就是说:是否有一个通用的谓词功能(或某些功能)可以确定点是在匹配对之间还是某些任意选择的字符之间?我正在考虑一种可以参考t以下情况的评估方案!: "!" (quotes in general) ``!'' (LaTeX quotes) $!$ (LaTeX math) (!) (lisp parens) *!* (org emphasis) 编辑:syntax-ppss似乎是一个很好的起点,但对我来说尚不清楚如何使它适应多字符匹配对(例如``LaTeX引号'',甚至是matched &lt;b&gt;html tags&lt;/b&gt;)。我想知道是否有一个通用的解决方案,或者是否需要一个专用的解析器。
16 elisp  syntax 

1
如何阻止帧被分割?
目前,我使用ruby和rspec。我真的很喜欢在另一个监视器中显示我的编译缓冲区的单独框架的想法。我当前的设置使用“代码”框架(在其中进行实际工作)和“测试结果”框架(在其中查看rspec结果) 问题是,当我尝试在“测试结果”框架中打开某些编译错误或文件时,窗口会在该框架中拆分。我真正想做的是在“代码”框架中打开它。 我已经使用了option display-buffer-reuse-frames。我也尝试设置编译结果窗口dedicated,但是每当emacs尝试打开一个新窗口时,都会创建一个新框架(如果使用Helm,这特别糟糕。) 有一些简单的方法可以做到这一点吗?
16 window  frames 

3
在`ibuffer`中设置列宽
有没有一种方法可以自定义列的宽度ibuffer?具体来说,我想扩大Name列,以便能够在截断缓冲区名称之前读取更多缓冲区名称。我试过了Buffer-menu-name-width,但是似乎Buffer-menu变量没有被使用ibuffer。我也尝试过,M-x customize-group RET ibuffer RET但似乎没有任何意义。

1
切换窗口分割方向,最快的方法
假设您有两个这样打开的缓冲区: ------------------------------------ | | buffer 1 | buffer 2 | | | ------------------------------------ 切换缓冲区以使您获得此最快的方法是什么: ------------------------------------ buffer 1 | | ------------------------------------ buffer 2 | | ------------------------------------
16 buffers  window 

1
如何使用艺术家模式绘制unicode?
我想用艺术家模式制作unicode艺术。但似乎艺术家模式仅支持ASCII艺术。 如何配置演出者模式以代替 +---------------+ | | | +-------+--+ | | | | | | | | | | | | +-------+-------+ | | | | | | | +----------+ 这个 ┌───────────────┐ │ │ │ ┌───────┼──┐ │ │ │ │ │ │ │ │ │ │ │ │ └───────┼───────┘ │ │ │ …
16 unicode 

2
如何设置eshell以使用常春藤完成制表符?
我非常喜欢ivy完成功能,我喜欢一个简单的(ivy-mode 1)方法足以让ivyEmacs使用某种完成功能的任何地方(completeing-read我相信它是通过覆盖实现的)。但这并不安装eshell到使用ivy的标签完成。我喜欢eshell的完成候选人列表,但希望ivy用户界面在其中选择。是否有某种方法可以重用eshell所做的任何事情来产生候选候选人并将其交给“常春藤”?
16 eshell  ivy 

1
setq-local是做什么的,什么时候应该使用它?
即使在阅读了SX上的所有文档和大量帖子之后,我也不太清楚缓冲区局部变量的所有变体。 以下是我的理解摘要: (defvar foo ..)为文件声明一个动态变量。但是该变量是(1)其他文件不知道的变量,除非它们也包含一条defvar 语句,并且(2)该变量的作用域是全局的,而不是局部于缓冲区的。 (make-variable-buffer-local foo)之后,defvar上述告诉编译器和其他人,变量foo是被当作缓冲区局部处处设置了,当它是集。因此,此模式是声明缓冲区局部变量,将两个语句背靠背放置在文件中的好样式。 (defvar xxx ...) ;declare xxx with global scope (make-variable-buffer-local 'xxx) ;but now make it buffer-local everywhere 为了方便起见,该(defvar-local xxx ...)表格可以用作一行,代替上面的两行: (defvar-local xxx ...) ;make xxx buffer local everywhere 一旦如上所述声明,变量xxx就可以像setq语句中的任何其他变量一样使用。 如果我只想拥有一个已经是全局动态变量的局部缓冲区变量的实例,则可以使用以下声明。第一个声明全局变量动态变量,第二个语句仅在当前缓冲区中创建该变量的本地缓冲区版本的一个实例: (defvar xxx ...) ;declare xxx with global scope (make-local-variable 'xxx) ;make xxx local …

2
Orgmode导出:如何防止注释行换行
目前,我的orgmode(v8.3.4)在导出为LaTeX(也许还有其他格式,但我尚未检查)时,为注释行或一行连续的注释行生成新行。这是不可取的,因为在LaTeX中会创建一个新段落。在撰写本文时,我经常需要在段落中间注释一两行,但又不想将该段落分成两部分。当前,由于orgmode的这种行为,我必须将这些注释行移动到该段落之后,这在我修改文本时可能会造成混淆。 下面是一个最小的示例。orgmode来源是: First sentence. # Commented sentence. Last sentence. 通过orgmode导出为LaTeX的方式(省略前言): \begin{document} \tableofcontents First sentence. Last sentence. \end{document} 第一个句子和最后一个句子之间有一个空行,这导致两个段落而不是一个段落。 有什么方法可以阻止这种orgmode行为吗?注释行或注释行块应导出为0字节/字符,甚至不能导出为新行。这是LaTeX在处理注释时的行为。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.