抓心挠肝spacemacs visual line mode自动换行的问题

在emacs里面有逻辑行和屏幕行两个概念,有时候在网上复制一段很长的逻辑行,这时候我的emacs默认是开启truncate-line-mode,也就是超出屏幕后面的不显示,例如下面这张图,后面的没显示

后来开启了visual-line-mode,也就是所谓的自动折行模式,这时候的确是能够根据界面的宽度自动折行了,如下图 但是我发现这个模式下仅仅是在显示上进行了折行,整体还是当作一行来看待,也就是并没有在屏幕行的结尾自动换行,导致行号还是1行,但我想要的是显示成5行而不是1行,这样方便我对每一行进行操作,现在的情况下我不能使用类似快捷键j进行下移一行的操作,因为这样一下就跑到下一个逻辑行了。这个问题怎么解决呢,试了auto-fill-mode 也没有任何的效果,希望有人能帮忙解答,难受死了

谢谢回复,这帖子我看了,有点逗的是他想要实现的操作就是我现在的默认操作,例如我现在上移一个屏幕行需要按gk,按k的话会直接移动到上一个逻辑行的开头,这样操作有些别扭,其实主要的问题在于当我想要修改文件中的某一句话,而这句话又属于一个很长的逻辑行,我现在就无法直观的通过行数进行定位,只能先定位到逻辑行对应的行号,再进行调整,这样就很不方便,我觉得合理的行号应该是按照屏幕行来标注吧,也就是按照我屏幕的宽度实际几行就标第几行,所见即所得,这样能实现么

实际上我想让刚才的那个长句子在自动折行后变成下面的样子,但是下面张图是我自己手动在每一个屏幕行的结尾加了一个换行符才实现的样子,怎么设置能让它自动这样显示呢

试试aggressive fill paragraph 吧,我知道那个包不完美,但是它是我知道的最接近楼主想要的效果的包了。我一直在orgmode下用那个包,感觉还不错。

1 个赞

谢啦 我去试试看

打开了auto-fill-mode要按下M-q 才会重排段落的每行字数。当然,这个每行字数是可以自己设定的。

试了居然可以,感谢感谢,萌新要学的东西还很多啊哈哈

当然可以啦,auto-fill-mode很厉害的。

https://www.gnu.org/software/emacs/manual/html_node/emacs/Auto-Fill.html

嗯 看来还是要仔细看官方文档啊,下的功夫还不够,感谢

我总结了一下看到各位的答案,图片好像不是很清楚,如有有需要可以移步我的博客用ctrl-=放大看吧 :joy: Emacs文本模式排版汇总

5 个赞

根据window-width来hack一下上下键绑定就可以啦😊

truncate off + visual-line-mode 遇到中英混排还是不完美,我还是先M-q吧。