굵은 글씨나 밑줄 친 텍스트를 검색하는 방법은 무엇입니까? 이는 종종 강조 표시되는 키워드를 검색할 때 유용합니다. 예를 들어, 다음 발췌문에서 bash(1)
:
read
또는 을 검색하고 싶을 수도 있지만 timeout
검색만 하면 무시해야 할 쓸모없는 결과가 수십 개 제공됩니다 n
. 이를 줄이기 위해 사용할 수 있는 몇 가지 "트릭"(예: 검색 <Space>read<Space>
또는 read \[
)이 있지만 이것이 모든 맨페이지나 키워드에 항상 작동하는 것은 아닙니다.
나는 이것에 특별히 집착하지 않습니다 less
. 그냥 다른 호출기를 사용하세요. less
그것은 단지 기본 호출기일 뿐입니다.
답변1
Vim을 MANPAGER
창의적인 용도로 사용합니다.숨다그리고iskeyword
, 다음과 같이 할 수 있습니다.
setlocal nowrap
setlocal conceallevel=3
setlocal concealcursor=nvic
exe "setlocal iskeyword+=\b,_"
syntax match BACKHIDE '.\b' conceal contained
syntax match BOLD '\(.\)\b\1' contains=BACKHIDE
syntax match Underlined '_\b.' contains=BACKHIDE
highlight BOLD cterm=bold
백스페이스와 같은 키가 여전히 존재하므로 검색어를 사용하면 다음 *
과 같이 강조 표시된 단어만 일치합니다.
man
볼드체는 발견되었지만 man
현재 행의 법선은 발견되지 않았습니다.
그리고자세한 설정(뻔뻔한 플러그) Vim은 편안한 호출기를 제공 man
하며 less
.
Vim에 관련 설정을 적용하려면 다음과 같이 하세요:
- 환경 변수가 적절한 경우
MANPAGER='vim -'
. 에는
~/.vim/vimrc
최소한 다음이 있습니다.set nocompatible filetype plugin on syntax on if !empty($MAN_PN) autocmd StdinReadPost * set ft=man | file $MAN_PN endif
man
를 사용하여 실행된 명령의 경우MANPAGER
맨페이지 이름이 환경 변수에 제공됩니다MAN_PN
. 이를 사용하여 Vim이 사용되는 시기를 감지MANPAGER
하고 맨페이지 이름을 찾을 수 있습니다.존재하다
~/.vim/ftplugin/man.vim
:setlocal nolist setlocal buftype=nofile setlocal bufhidden=hide setlocal noswapfile setlocal readonly setlocal nomodifiable setlocal nowrap setlocal conceallevel=3 exe "setlocal iskeyword+=\b,_" setlocal concealcursor=nvic nnoremap q :q!<CR> nnoremap <Space> <PageDown>
이러한 옵션은 수정 불가능한 읽기 전용 스크래치 버퍼를 생성합니다(참조:스테이징 버퍼는 어떻게 생성되나요? Vim 위키피디아에서), 스왑 파일을 비활성화합니다. 그런 다음 이 문서의 시작 부분에 나열된 설정을 적용하고 편의를 위해 일부 매핑을 추가합니다. 에 표시된 대로
q
현재 맨페이지가 닫히고 한 페이지 아래로 이동됩니다 .Spacebarless
존재하다
~/.vim/after/syntax/man.vim
:syntax match BACKHIDE '.\b' conceal contained syntax match BOLD '\(.\)\b\1' contains=BACKHIDE syntax match Underlined '_\b.' contains=BACKHIDE highlight BOLD cterm=bold
이 문서의 시작 부분에 있는 구문 및 강조 표시 명령은 다음과 같습니다.
다음과 같은 최소 설정만 있으면 됩니다.
맨 윗줄이 어떻게 강조되어 있는지 살펴보세요. Vim 자체에는 맨페이지 구문 강조가 포함되어 있으며 col -b -x
백스페이스 키를 제거하면(예를 들어 를 사용하여) 이를 볼 수 있습니다. 하지만 이런 방법으로 얻는 것보다 잃는 것이 훨씬 더 많습니다. 왜냐하면 Vim은 밑줄이나 굵은 글씨로 표시된 모든 것을 알 수 있는 방법이 없기 때문입니다.
내 자신의 개인 설정을 사용하여몰로카이 색 구성표, set number
, 항공사 플러그인 및 다음 항목의 다양한 강조 표시 BOLD
:
highlight link BOLD Constant
그리고 터미널 설정에서 투명도를 활성화했기 때문에(스크린샷에는 표시되지 않음) 색상이 여기 보이는 것보다 더 부드럽고 만족스럽습니다.
:set number
저처럼 줄 번호( )를 활성화하는 경우 전체 텍스트를 보기 위해 옆으로 스크롤할 필요가 없도록 다음 MANWIDTH
보다 작은 값으로 설정하세요 . 80열 터미널에 적합합니다. 저는 화면만큼 넓은(해상도에 따라 160~240열) 드롭다운 터미널을 사용하므로 고정 터미널이 저에게 잘 맞습니다.COLUMNS
MANWIDTH=75
MANWIDTH=80
답변2
내가 아는 한, 깨끗한 방법은 없습니다.
밑줄/굵게 표시에 대한 백스페이스의 특수 처리를 해제한 less
다음 이스케이프된 백스페이스를 사용하여 원하는 문자열을 검색할 수 있습니다.
- 덜 열림(예
man less
: ) - OFF 밑줄-특수(TYPE
-U<Enter>
) <C-v>
백스페이스 문자로 이스케이프 처리된 검색 문자열을 입력합니다 .
예를 들어 밑줄이 그어진 텍스트의 경우 다음을 입력할 수 있습니다.
/_<C-v><C-h>l_<C-v><C-h>e_<C-v><C-h>s_<C-v><C-h>s<Enter>
...밑줄 친 단어 "less"를 검색하세요.
굵은 텍스트의 경우 다음을 입력할 수 있습니다.
/l<C-v><C-h>le<C-v><C-h>es<C-v><C-h>ss<C-v><C-h>s<Enter>
...굵은 단어 "less"를 검색하세요.
내가 말했듯이, 아니깨끗한방법.
편집하다:Stephane이 주석에서 지적했듯이 리터럴 대신 점(모든 문자와 일치)을 사용할 수 있으므로 <C-h>
입력이 더 쉬워집니다.
/l.le.es.ss.s
굵은 글씨로 검색하고,
/_.l_.e_.s_.s
밑줄 친 것을 검색하세요.
여전히 UNDERLINE-SPECIAL을 먼저 꺼야 합니다. 그러면 밑줄이 그어진/굵게 표시된 텍스트를 읽기가 어렵습니다.
답변3
굵게 표시되거나 밑줄이 그어져 있는 경우 검색이 불가능할 수 있습니다.현재의.
예를 들어 텍스트가 서식이 지정된 맨페이지에서 나온 경우 쿵쿵 문자를 다음과 같이 해석하여 생성됩니다.
- 굵게(각 문자가 백스페이스 및 반복으로 인해 지나치게 두드려지는 경우) 또는
- 밑줄(모든 문자가 밑줄 문자 위에 쓰여지는 경우)
이것less
호출기 FAQ 의견에 따르면설명하다굵은 글씨/밑줄 그어짐. 실제 굵은 글씨/밑줄을 표시하기 위해 터미널 비디오 속성을 사용합니다.
렌더링하는 동안 일반적인 호출기(예:)는 less
저장만 하는 것처럼 가장합니다.텍스트(굵게/밑줄 친 부분은 텍스트가 아닙니다).
텍스트 편집기에서 백스페이스 패턴을 검색할 수 있습니다. 어쩌면 일부 특정 편집기(예: emacs)에는 이를 수행할 수 있는 기능이 있을 수 있습니다. 즉, 텍스트를 검색하지만(굵게/밑줄이 표시된 경우) 검색 속성으로 굵게/밑줄을 고려합니다.
백스페이스 키를 읽는 것은 그리 즐겁지 않습니다. 이것은 질문에서 참조된 맨페이지의 시작 부분입니다.
r^Hre^Hea^Had^Hd [-^He^Her^Hrs^Hs] [-^Ha^Ha _^Ha_^Hn_^Ha_^Hm_^He] [-^H> _^Hp_^Hr_^호_^Hm_^Hp_^Ht] [-^Ht^Ht _^Ht_^안녕_^Hm_^헤_^호_^Hu_^Ht] [-^Hu> 표준 입력 또는 파일에서 한 줄 읽기 -^Hu^Hu 옵션>에 인수로 제공되는 설명자 _^Hf_^Hd 첫 번째 단어는 first_^Hn_^Ha_^Hm_^He에 할당되고, 두 번째 단어는 > 두 번째_^Hn_^Ha_^Hm_^He 등, 나머지 단어와 해당 > ing 구분 기호는 마지막 _^Hn_^Ha_^Hm_^He에 할당됩니다. 만약 있다면 > 이름, 나머지 이름보다 입력 스트림에서 읽은 단어
답변4
bash
귀하의 질문에 대한 직접적인 대답은 아니지만 이와 같은 큰 매뉴얼에서 문서를 더 쉽게 찾을 수 있도록 다음 대안을 시도해 볼 수 있습니다.
다음과 같은 다양한 형식을 사용하세요.info
대부분의 GNU 소프트웨어 매뉴얼과 마찬가지로 이 bash
매뉴얼은 다양한 형식(man, info, pdf, html...)이 파생되는 texinfo로 작성되었습니다.
맨 페이지는 다음과 같습니다.페이지몇 가지 이유. 글꼴 서식(들여쓰기, 굵게, 밑줄, 모두 대문자)을 통해 유일한 구조가 수행되는 단순한 텍스트 파일입니다.
이 정도 규모의 매뉴얼을 위해서는책하나보다페이지.
man
깨달았 지만페이지예시, 구현된 정보책예. 장, 목차, 참고문헌, 색인 등의 개념을 가지고 있으며, 모두 검색이 가능합니다.
Bash에 관한 책에서 read
내장 기능을 이해하려면 인덱스를 살펴봐야 합니다. 에서 info
를 입력한 i
다음 read
(완료 가능)을 입력하면 내장 문서에 대한 문서로 직접 이동됩니다 read
( ,
포함된 다음 색인 항목으로 이동하는 데 사용됨 read
). info
로 시작할 수도 있습니다 info bash read
.
책에서 내장 함수에 대한 부분을 보고 싶으면 색인을 다시 확인하거나, 목차를 보면 된다. 및 info
와 동일합니다 .i
g
검색하다
HTML은 또 다른 하이퍼텍스트 형식( info
웹과 HTML보다 우선함)이며 대규모 매뉴얼에 이상적입니다. 웹 브라우저는 일반적으로 한 번에 한 페이지만 검색할 수 있어 성능이 떨어지지 info
만 온라인에서는 duckduckgo나 google과 같은 검색 엔진을 사용하여 설명서를 검색할 수 있습니다.
bash read builtin site:gnu.org
또는 인덱싱 read
을 사용할 수 있습니다.https://www.gnu.org/software/bash/manual/html_node/Builtin-Index.html#Builtin-Index
다른 형식을 기반으로 매뉴얼 페이지 검색
다음을 시도해 볼 수도 있습니다.
read
줄의 시작 부분에서 검색:/^\s*read
- 또한 완전한 단어로:
/^\s*read\>/
또한 목차 형식을 얻기 위해 섹션 헤더의 들여쓰기가 덜하다는 사실을 활용할 수도 있습니다.
페이지네이터 에서 들여쓰기된 텍스트를 숨기면, 최소 4열만큼 들여쓰기된 텍스트를 숨길
most
수 있습니다 .1:od
4:od
less
다음을 사용 하여 동일한 작업을 수행 할 수 있습니다. 그러면 다음과 같은 내용이 표시됩니다.&^\S
&^ {,3}\S
[...] RESERVED WORDS SHELL GRAMMAR Simple Commands Pipelines Lists Compound Commands Coprocesses Shell Function Definitions COMMENTS QUOTING [...]
관심 있는 섹션으로 더 쉽게 이동할 수 있습니다(그런 다음
&
전체 텍스트를 다시 보려면 공백을 입력하거나:od
에 입력하면 됩니다most
).