关于Emacs超级棒的功能有很多噪音.无论是组织模式,Gnus还是Cx Mc蝴蝶.我已经使用Emacs多年了,所以没必要说服我.
我个人发现,没有人谈论......实际编辑文本.你知道的
Emacs是一个不错的操作系统,但它没有一个像样的编辑器.
玩笑?直到我找到Vim,我才真正得到它.
现在,我用Emacs作为我的文本编辑器写了我的论文,所以我的心脏仍然以某种方式依附于它.关于组织模式,我也非常羡慕.所以我想知道是否确实存在我一直缺少的功能?
我将给你一些我一直使用的例子:
o/ O在当前上方/下方打开一个新行,无论我的光标在哪个位置,都会进入插入模式.ci' 删除当前/后面'-string的内容并将我置于插入模式.dat删除当前的HTML标记.cit会删除内容并让我进入插入模式.cstt会让我编辑的标签(例如制作<span>成<div>)cs([ 将周围的"("和")"更改为"["和"]".dai将删除当前缩进块,\\ai将其注释掉(\\是扩展名).是否有一些超级秘密的快捷方式,但在Emacs中可以轻松访问类似这样的东西的快捷方式?Sublime Text 2有一些"扩展选择"功能,虽然不是那么精确,但却采用了相似的方式 - 但它仍然非常有用.
PS请不要提出任何vi仿真,只是不要.
PPS也是出于上帝的缘故,没有Emacs与Vim对战无论战争,我求求你.
jer*_*ahd 13
既然没有人直接说过,我会的.
究其原因emacs的缺乏"体面的编辑器",是因为很大一部分点的emacs的是让你做出理想为自己的编辑器.这不是一项微不足道的工作,其他人已经编写了很多东西,并且有足够的人发现它们可以被包含在它的标准发行版中.
它并不意味着在默认设置下使用.真.它并不意味着你是一个软件,你在这里和那里调整和调整,以及编辑器,你可以将你的行为撕成任何你想要的东西.
所以,是的,是的,有是一个已经存在相当的$feature距离$editor,或假设没有人写过一个尚未你可以在你能实现它的安全知识.
des*_*esu 10
查找此Wiki页面.它有很多很多技巧.他们中的大多数(我突然)在阅读之前就找到了自己,但这篇文章值得一读.
尝试C-h k每一个C-<key> M-<key>.喜欢的东西,M-c, M-l, M-u证明我是有用的,M-z对zap-to-char.白金答案是"学会使用i-search".C-w, C-M-y, M-r在i-search模式下非常有用.
我不知道任何包,这有助于我编辑一些我的观点.有一天,我为自己写了一篇,但事实证明它毫无用处.如果我想再写一些东西,我会做的第一件事 - 想想,我该怎么写.他们的行为怎么样?对于每种类型的括号,它都是N个单独的命令,或者一个,但是聪明吗?它应该如何工作?杀死钥匙圈?(欢迎讨论).
对于~lisp,我使用sexp编辑命令.
我为自己写了一些东西.
(defun cm-fast-step-upward ()
"Step 3 lines up, recenteres the screen."
(interactive)
(forward-line -3)
(recenter))
(defun cm-fast-step-downward ()
"Step 3 lines down, recenteres the screen."
(interactive)
(forward-line 3)
(recenter))
(defun cm-find-any-bracket-forward()
"Search for \"_}_]_'_>_)_end forward"
(interactive)
(re-search-forward "[\"}'>)]\\|\\(end\\)\\|\\]"))
(defun cm-find-any-bracket-backward()
"Search for \"_{_[_'_<_(_begin forward"
(interactive)
(re-search-backward "[\"{'<(]\\|\\(begin\\)\\|\\["))
(defun cm-find-nonspace-backward()
"Search for non tab, space, newline symbol backward."
(interactive)
(if (and
(search-backward-regexp "[
]" (point-min) t)
(search-backward-regexp "[^
]" (point-min) t))
(forward-char)
(goto-char (point-min))))
(defun cm-find-nonspace-forward()
"Search for non tab, space, newline symbol backward."
(interactive)
(if (and
(search-forward-regexp "[
]" (point-max) t)
(search-forward-regexp "[^
]" (point-max) t))
(backward-char)
(goto-char (point-max))))
(defun cm-backward-delete-word(&optional arg)
"DELETE word before cursor. Warning, this word cannot be yanked."
(interactive "p")
(let ((beg (point)))
(backward-word arg)
(delete-region beg (point))) )
(defun cm-delete-word(&optional arg)
"DELETE word after cursor. Warning, this word cannot be yanked."
(interactive "p")
(let ((beg (point)))
(forward-word arg)
(delete-region beg (point))) )
(defun cm-delete-line(&optional arg)
"DELETE line after cursor. Warning, this line cannot be yanked."
(interactive "P")
(if (equal arg '-) (setq arg -1))
(let ((beg (point)))
(if arg (forward-line arg)
(goto-char (point-at-eol)))
(if (= beg (point))
(delete-char 1 nil)
(delete-region beg (point)))))
(defun cm-reverse-region (&optional arg)
"Reverse current region, like this: \"a(bc) d\" -> \"d )cb(a\"."
(interactive "P")
(let ((reversed (apply 'string (reverse (string-to-list (buffer-substring-no-properties (region-beginning) (region-end)))))))
(delete-region (region-beginning) (region-end))
(insert reversed)))
(provide 'cmmove)
Run Code Online (Sandbox Code Playgroud)
我之前从未分享(我应该吗?)这件事,欢迎您发表评论.
默认绑定使用超密钥
(global-set-key [?\H-f] 'cm-find-nonspace-forward)
(global-set-key [?\H-b] 'cm-find-nonspace-backward)
(global-set-key [?\H-\]] 'cm-find-any-bracket-forward)
(global-set-key [?\H-\[] 'cm-find-any-bracket-backward)
(global-set-key [?\H-p] 'cm-fast-step-upward)
(global-set-key [?\H-n] 'cm-fast-step-downward)
(global-set-key (kbd "H-t") 'cm-reverse-region)
Run Code Online (Sandbox Code Playgroud)
我也想知道,你喜欢这个命令的行为.如果他们找不到东西,他们应该发消息还是抛出错误?
你的问题没有答案.
这是一个连续的旅程,你可以通过打字开始M-x help,并经常这样做.
每个人都有一套不同的功能.因此,除了列出所有可用的文本编辑功能之外,请尝试(重新)阅读Emacs之旅,常见问题解答和Emacs手册.查找插件信息的最活跃的地方是Emacs Wiki和Emacs Lisp Package Archive(将与Emacs 24一起分发).
您不知道的99%的功能将在上面的链接中找到.
当然,你也可以看看标准的SO提问/回答:什么是最有用的功能.......
o/O命令是emacs中的两个关键命令.对于o,C-e <return>(行尾,返回创建新行).对于O,C-a C-o(行首,开放行).ffap-copy-string-as-kill(默认情况下不绑定密钥,但很容易修复)执行与您类似的操作ci'.在emacs中,没有"插入模式"的概念.我不会将"("")"更改为"[""]"足以学习它的关键序列.如果我必须这样做,我会先转向query-replace-regexp(C-M-%).
我不会编辑很多python或HTML,但我确信在适当的模式中有巧妙的技巧可以满足您的需求.
编辑回应评论.
我经常使用的更高级的编辑功能:
enum在C中定义一个并快速创建一个switch语句.有关详细信息,请参阅http://www.emacswiki.org/emacs/KeyboardMacros和http://www.emacswiki.org/emacs/KeyboardMacrosTricks.string-insert-rectangle和rectangle-delete是我的好朋友.很难知道你会发现什么有用.每个用户都会有不同的喜爱功能.让我开始使用emacs的功能是M-x compile.使用M-g n跳转到编译输出下一个错误或警告的文件位置.
| 归档时间: |
|
| 查看次数: |
5884 次 |
| 最近记录: |