“less”中是否有单词边界的快捷方式?

时间:2014-03-30 05:05:28

标签: unix

这是我使用的较少:

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

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

4 个答案:

答案 0 :(得分:8)

字符类[[:<:]][[:>:]]分别在OS X 10.11.5上的系统less中匹配单词的开头和结尾。我还没有办法让记录的简短表单\<\>\b正常工作。

(感谢denis有关检查man 7 re_format的建议。)

答案 1 :(得分:4)

您的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完成。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

首先查看您计算机上的<A>m()是否具有&#34;增强功能&#34; 列出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;在其他系统上,请尝试关注\< (Gnu.org有十几个 Regular-expression-syntaxes?! )