配置极简,几乎等于没有配置。但对写 C 代码的人来说却是够用的。(他似乎从来不用 lsp )
这哥也是个大神,他的意思是连调试功能都不需要,只要编译器的错误提示信息足够好。
我同意他的观点。
其实我的感受是,全键盘操作类editor编程,调试用gdb、pdb这种命令行工具就很方便,对于dap+图形界面的那种模式好像也没有实质上提高什么。dap我倒是配了,但基本没咋用过。lsp似乎用的也没那么必要,反而tag类的补全、跳转用很多。
很好奇大家什么实践模式,想听听大家分享经验哇å
不过他提到一个功能确实是神器, 就是compile这个命令, 通过compile执行的命令, 只要输出里面行首符合如下格式,跳转都很方便, 这就通用化了, 写什么语言,编译运行的时候都能快速跳到错误的行
文件名:行数
甚至都不只是编译, rg之类的命令输出也可以方便的跳转
1 调试方面, 我个人喜欢打log, 因为对于异步程序来说, 调试还是比较困难, 直接打log反而更直观看到程序执行到哪里开始出问题
2 lsp相比tag跳转的优点有两个, 一是查看第三方库中的声明比较方便, 除非把第三方库的源码也索引一下, 二就是第三方库的补全, tag也没法做到
Emacs内置的gdb调试器前端也很强大,gud-gdb是gdb最好的前端没有之一,GUD(general unified debugger)本身也是一个调试器前端框架,可以对接pdb等其它调试器。
我是小白, 刚看到一开始todsing配置很少,但是感觉编辑起来很顺畅。 感觉我的emacs默认移位只有c-n,p,f,b m-f,b感觉可以锚定的点很少,操作很不顺畅,定位到一行里面想要到的地方也很慢。 有佬能说一下仅仅基础的emacs还有什么移动光标的进阶一点的操作或者教程吗?还是说tosding就是手敲的很快? 感谢先。
首先他是大神,你学不来。
我给你举个例子好了,这个视频评论第一个评论有个时间点说duplicate-line的操作,我可以直白地说,绝对不是他说的那样。我复刻了一个命令来实现
(defun duplicate-line-and-stay (n)
"Duplicate the current line N times (N defaults to 1) and keep cursor column
on the first duplicated line so you can edit in-place.
If N <= 0, do nothing."
(interactive "p")
(when (> n 0)
(let* ((col (current-column))
(line-text (buffer-substring-no-properties
(line-beginning-position) (line-end-position)))
;; point after end-of-line before insertion
(insert-point nil))
;; move to end of current line and remember that location
(end-of-line)
(setq insert-point (point))
;; insert N copies
(dotimes (_ n)
(newline)
(insert line-text))
;; go to the first duplicated line and restore column
(goto-char insert-point)
(forward-line 1) ; move to the first inserted line
(move-to-column col))))
你得绑定一个按键才能像他那样。
学大神习惯不靠谱,你就原生的vim/emacs按键尝试,早晚能明白自己想要什么。
emacs 内置了 duplicate-line 命令。
不一样,我这个光标会跟着下来。
duplicate-line 和 duplicate-dwim 使用 duplicate-line-final-position 变量来指示复制后的光标位置。
Where to put point after ‘duplicate-line’ or ‘duplicate-dwim’. When 0, leave point on the original line. When 1, move point to the first new line. When -1, move point to the last new line. The same column is preserved after moving to a new line.
例如,绑定一个快捷键:
(setq duplicate-line-final-position 1) ; move point to the first newline
(define-key my-meta-k-map (kbd "M-d") #'duplicate-dwim)
厉害,亏我还找ai帮我复刻了一个。。这下俩动作都有了,还知道了些小知识。其实我也用不上,只是想尝试复刻。
就是APM高, 对输入有预期输出, 对输出有预期输入
把C-a C-e M-f M-b M-a M-e C-M-f C-M-b给用熟就行了。
定位最快的其实还是C-s C-r M-g g M-< M->这些。
如果感兴趣入门手册里没提到的,可以试试C-M-@ C-x h M-) M-m M-^ M-\ M-SPC S-<backspace> C-x C-t 这些键绑定。
一般同一个功能只要加前缀C-u就可以让光标停在begin而不是end。
实话讲,我有很多命令是根本不绑定的,直接M-x搜。如果真的要按键用,我才临时绑定。
也许你可以根据函数的使用频率自动设置默认绑定,不过那需要先实现一个在启动时显示当前键盘绑定布局的的函数。
我喜欢尽可能用键绑定去组合函数而不是直接写Lisp,键绑定是Emacs交互模式的精髓,这差别就像用拼音输入法和五笔输入法一样,拼音简单,但是五笔更快。
对,我原来就是使用vim,感觉vim能够定位的点更多,相对更顺手,感觉vanilla emacs的光标移动快捷键好像不怎么方便和智能,原来是要配置吗
有时看别人的代码,又不想改别人的代码,调试还是很方便的。还是喜欢IDE的调试功能,可以单手鼠标点点。