unix 在`less`中是否有一个词界的快捷方式?

wi3ka0sx  于 2023-03-29  发布在  Unix
关注(0)|答案(5)|浏览(219)

这是我使用的最少的:

less 458 (POSIX regular expressions)
Copyright (C) 1984-2012 Mark Nudelman

在Vim中它是\<\>,在大多数其他正则表达式中它是\b

ohfgkhjo

ohfgkhjo1#

字符类[[:<:]][[:>:]]分别匹配OS X 10.11.5上系统less中的单词开头和结尾。我还没有找到一种方法来使文档中的简写形式\<\>\b工作。
(感谢denis建议检查man 7 re_format

lvmkulzt

lvmkulzt2#

您的less版本是用posix正则表达式构建的,如下所示:

wget http://ftp.gnu.org/gnu/less/less-451.tar.gz
tar zxf less-451.tar.gz
cd less-451
./configure --with-regex=posix
make

然而,显然\<是否工作的原因并不取决于此:

  • 在Debian/Linux中,即使使用上述命令构建,\<也可以正常工作,使用posix regex
  • 在Mac OS X中,我尝试了--with-regex的所有可能值,除了pcre\<不适用于其中任何一个。如果我使用pcre构建,则\b可以工作,而不是\<

总之,我不知道如何使它与\<一起工作。但是你可以用pcre构建自己,然后它应该与\b一起工作。如果你不是系统管理员,你可能想使用--prefix安装在你的主目录下,例如--prefix=$HOME/opt。在make步骤之后,确认它可以在./less /path/to/some/file上工作。如果看起来不错,那么就用make install完成。

6kkfgxo0

6kkfgxo03#

首先查看您的计算机上的man 7 re_format是否有“增强功能”部分,其中列出了\<等。如果有,请更改less-451/pattern.h中的一行:

#define REGCOMP_FLAG  REG_ENHANCED  // not REG_EXTENDED

然后./configure --with-regex=posix; make less将理解\<
这在Macosx 10.8上有效;在其他系统上,请尝试遵循/usr/include/regex.h
(Gnu.org有一打Regular-expression-syntaxes?!)

8mmmxcuj

8mmmxcuj4#

less通常使用vi语法,即\<\>,除非它是使用--with-regex=none配置选项编译的,或者在编译时找到的正则表达式库不提供单词边界搜索。您的系统也可能提供不同的语法。

pxyaymoc

pxyaymoc5#

在我的macOS v12.6.3系统上,以下代码启用了类似vim的\b字边界搜索:

brew install less
echo PAGER='less'
hash -r # in bash, to discover new, homebrew-based less(1) path

Fyi:

$ less --version | head -2
less 608 (PCRE2 regular expressions)
Copyright (C) 1984-2022  Mark Nudelman
$

更多,关于我的测试系统的相关细节:https://gist.githubusercontent.com/johnnyutahh/0ca86ec252f832cfc512eaf56acecc3c/raw

相关问题