![Vim에서 매뉴얼 페이지 보기](https://linux55.com/image/143430/Vim%EC%97%90%EC%84%9C%20%EB%A7%A4%EB%89%B4%EC%96%BC%20%ED%8E%98%EC%9D%B4%EC%A7%80%20%EB%B3%B4%EA%B8%B0.png)
Bash에 함수를 작성하여 확인했습니다.남성Vim의 페이지:
viman () { man "$@" | vim -R +":set ft=man" - ; }
이것은 잘 작동합니다. 존재하지 않는 매뉴얼 페이지를 전달하면 유일한 문제가 발생합니다. 맨페이지가 존재하지 않지만 여전히 vim
빈 버퍼로 열린다고 인쇄됩니다.
그래서 오류 코드( 16
여기에 있음)를 확인하고 페이지가 없으면 종료하도록 기능을 변경했습니다. 수정된 함수는 다음과 같습니다.
viman () { man "$@" | [[ $? == 16 ]] && exit 1 | vim -R +":set ft=man" - ; }
그러나 이제는 효과가 없습니다.
매뉴얼 페이지가 존재하지 않으면 프로그램을 종료하고, 그렇지 않으면 vim
.
답변1
이것을 시도해 보세요: vim이 성공적으로 시작된 경우 man 출력 캡처
viman () { text=$(man "$@") && echo "$text" | vim -R +":set ft=man" - ; }
답변2
반환 코드를 확인하는 아이디어는 마음에 들지만 man
파이프를 통해 테스트할 수는 없습니다. 두 번만 실행할 수 있습니다 man
.
viman () { man "$@" >/dev/null 2>&1 && man "$@" | vim -R +":set ft=man" - ; }
man ... | vim ...
첫 번째 호출이 성공한 경우에만 실행 됩니다 man
.
답변3
맨페이지를 표시하려는 명령을 MANPAGER
호출하는 데 사용할 수 있는 환경 변수가 있습니다 . man
이것의 장점은 man
직접 호출할 수 있고 매뉴얼 페이지가 존재하지 않으면 호출기가 전혀 실행되지 않는다는 것입니다.
따라서 다음과 같은 래퍼 스크립트는 다음과 같습니다 ~/bin/vimman
.
#! /bin/sh
vim -R +":set ft=man" -
쉘 초기화 파일 어딘가에:
export MANPAGER="$HOME/bin/vimman"
man foo
Vim에서 직접 맨페이지를 실행할 수 있습니다 .
man
( 사용된 명령 에 따라 다음을 수행할 수도 있습니다.
export MANPAGER='vim -R +":set ft=man" -'
래퍼 스크립트를 직접 사용하는 대신. )
충분히 새로운 Vim이 있다면 이 --not-a-term
옵션을 사용하여 Vim이 stdin이 TTY가 아니라고 불평하는 것을 막을 수 있습니다.
뻔뻔한 플러그 : 내가 썼다작은 플러그인Vim을 매뉴얼 페이지로 사용하는 것이 편리합니다.
답변4
기반으로이 답변버퍼에 아무것도 없으면 vim이 시작되고 종료됩니다. 단점은 vim
시작 시 화면이 "깜박거린다"는 것입니다. 또한 man
페이지를 찾을 수 없을 때 종료 코드를 설정하지 않습니다.
viman () { vim -R +':set ft=man|exe !search(".")?"quit!":""' <(man "$@" 2>/dev/null); }
man
이는 페이지가 존재하는 동안 페이지를 두 번 로드 하지 않는다는 점에서 Jeff Schaller의 답변이 개선된 것입니다 . 또한 vim
이전 예제처럼 불필요하게 로드 되지 않습니다 . 그리고 그것하다man
페이지가 없을 때 종료 코드를 설정합니다 .
viman () { man -f "$@" >/dev/null 2>&1 && vim -R +":set ft=man" <(man "$@"); }
두 예제 모두 "Vim: Reading from stdin..." 메시지를 피하기 위해 Bash 프로세스 대체를 사용합니다.
페이지를 변수로 로드하지도 않습니다.