문제

다음의 정확한 목적에 대해 잘 모르겠습니다. Rampion의 코드. 커서 위치에서 명령을 실행해야합니다.

# man-word.screen

# prevent messages from slowing this down
msgminwait 0

# copy word starting at cursor
copy                         # I am not sure why we need this
stuff " e "

# open a new window that waits for a word to run man on
# (and uses 'read' to pause on error)
screen -t man /bin/sh -c 'cat | xargs man || read'       # option -c seems to mean execute

# feed that window the copied word
# be sure to enter '^M' as 'CTRL-V ENTER' and '^D' as 'CTRL-V CTRL-D' (in vim)
paste '.'
# should display as 'stuff "^M^D"'
stuff " "

# turn message waiting back on
msgminwait 1

# vi: ft=screen

코드는 아래에 묶여 있습니다 ^g 그렇게

bindkey -m ^f source /Users/masi/bin/screen/edit-file-under-cursor.screen

그것은 동일합니다

bind f source /Users/masi/bin/screen/edit-file-under-cursor.screen

내 커서가 다음 줄의 시작 부분에 있으므로 코드를 실행합니다.

vim ~/.zshrc

나는 새로운 버퍼를 얻습니다

Alt Text http://files.getdropbox.com/u/175564/screen-rampion.png

명령의 목적은 무엇입니까??

도움이 되었습니까?

해결책

따라서 명령은 임의 코드를 실행하지 않습니다. 그 일은 실행됩니다 man <whatever> 커서가 단어를 끝내면 새 화면 창에서 <whatever>.

이유 copy 명령은 무언가를 복사하려는 화면을 알려야한다는 것입니다. 경로를 넘어 서면 항상 화면 복사 모드에 있지 않을 수 있습니다. 예를 들어 VIM을 사용할 수 있고 경로 위에 VIM의 커서가있을 수 있습니다. 이미 복사 모드에 있다면 No-OP입니다.

screen -t man /bin/sh -c 'cat | xargs man || read'
  • screen :: 새 창을 엽니 다
  • -t man :: 제목을 줘 man
  • /bin/sh -c 'cat | xargs man || read' :: 새 창에서 기본 쉘을 열지 않고 새 창 에서이 명령을 실행하십시오.
    • /bin/sh :: 쉘 프로그램
    • -c 'cat | xargs man || read' :: 대화식 모드에서 열지 않고 주어진 문자열을 스크립트로 실행합니다.
    • cat | :: 사용자 입력 (Newline 및 Ctrl-D로 종료)을 기다린 다음 다음 명령에 사용자 입력으로 파이프
    • xargs man :: 전화 man, 표준 입력에서 읽은 내용을 명령 줄 인수로 사용하여 man
    • || read :: 이전 명령이 0이 아닌 반환하면 사용자가 ENTER를 누를 때까지 기다립니다.

출력에서

  1. 그만큼 -c 새로운 쉘처럼 보이기 때문에 명령의 일부가 실행되지 않습니다 ( $ 힌트).
  2. 그만큼 stuff "^M^D" 부분은 올바르게 기록되지 않았습니다. 다음 이외의 비고 된 라인 paste '.' Keystroke의 KeyStroke를 입력해야합니다.

    's', 't', 'u', 'f', 'f', ' ', '"', <CTRL-V>, <ENTER>, <CTRL-V>, <CTRL-D>, '"'
    

당신이 있었다면 파일을 다운로드했습니다, 그것을 기록하지 않고, 당신은 그러한 문제가 없을 수 있습니다.

또한, bindkey -m ^f 동일하지 않습니다 bind f. 그리고 명령을 구속하지도 않습니다 ^g.

  • bindkey -m ^f 명령을 묶습니다 <CTRL-f>, 그러나 복사 모드에있을 때만.
  • bind f 명령을 묶습니다 <CTRL-A> f, 모든 모드에서.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top