문제
다음의 정확한 목적에 대해 잘 모르겠습니다. 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를 누를 때까지 기다립니다.
출력에서
- 그만큼
-c
새로운 쉘처럼 보이기 때문에 명령의 일부가 실행되지 않습니다 ($
힌트). 그만큼
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
, 모든 모드에서.
제휴하지 않습니다 StackOverflow