Psy*_*aut 6 linux gnu command-line less
像大多数人一样,我将less
其用作终端寻呼机。有时,我会查看由很长的纯文本或标记文本行组成的文件。默认情况下,这些线会在终端窗口边缘less
折叠。也就是说,最后一列的单词被破坏,导致文本难以阅读。有没有什么方法可以在字边界less
处换行fmt
,就像 Emacs 视觉行模式一样?
我知道我可以fmt
在查看之前简单地通过管道输入输入,尽管这需要我提前知道我的终端宽度。我希望有某种方法可以less
很好地换行,并在调整终端窗口大小时自动重新格式化它们。
否。要进行验证,请下载最新的less
源代码并查看input.c
第 178 行附近的内容:
177 /*
178 * The char won't fit in the line; the line
179 * is too long to print in the screen width.
180 * End the line here.
181 */
182 if (chopline || hshift > 0)
183 {
184 do
185 {
186 if (ABORT_SIGS())
187 {
188 null_line();
189 return (NULL_POSITION);
190 }
191 c = ch_forw_get();
192 } while (c != '\n' && c != EOI);
193 new_pos = ch_tell();
194 endline = TRUE;
195 quit_if_one_screen = FALSE;
196 } else
Run Code Online (Sandbox Code Playgroud)
从性能角度来看,以这种方式进行格式化fmt
并不简单。该fmt
算法大约向前和向后扫描50行以获得最优布局。此外,fmt
如果您想要的宽度明显大于实际内容,则该算法看起来(IMO)很奇怪,因此它可能不太适合一般情况。
man
默认情况下使用less -is
IMO 相当不错,但不是您想要的。
所以......我认为唯一的方法,虽然不可否认它不遵循终端大小调整,是:
fmt -w $(tput cols) | less
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1711 次 |
最近记录: |