새 버퍼에서 명령 출력 열기
오늘은 쿼리 출력을 쿼리가 실행될 때 사용자를 위해 열릴 자체 스크래치 버퍼로 이동하여 플러그인을 조정할 것입니다. 추가 보너스로 데이터베이스뿐만 아니라 모든 외부 명령에 대해 동일하게 작동하도록 플러그인을 일반화할 것입니다.
먼저 플러그인을 검토해 보겠습니다.
def eval-query \
-override \
-docstring "Evaluate current selection using given connection." \
-params 1 \
-shell-script-candidates %{
cat .eval-query.json \
| jq -r '.connections|keys|@sh' \
| sed s/\'//g \
| tr -s " " "\n"
} \
%{
info -title "Query output" %sh{
psql `cat .eval-query.json | jq .connections.$1 | cut -d\" -f 2` \
-c "${kak_selection}" 2>&1
}
}
여기서 중요한 정보는
info
명령입니다. 정보 대화 상자를 표시하는 대신 출력을 캡처하여 |
를 사용하여 set-register
레지스터에 넣습니다. 다음은 수정된 명령 본문입니다.set-register | %sh{
cmd=`cat .eval-query.json | jq .connections.$1 | cut -d\" -f 2`
eval "$cmd "${kak_selection}" 2>&1"
}
우리는
|
레지스터를 사용했는데, 이는 :doc registers
가 서브쉘을 생성하는 명령에 의해 사용되어야 한다고 명시했기 때문입니다. 이게 100% 코셔인지는 잘 모르겠으니 더 잘 아시는 분은 댓글 남겨주세요!다음으로 eval-query-output이라는 새 스크래치 버퍼를 열고 레지스터의 내용을 거기에 붙입니다. 이것은 매우 간단합니다.
edit -scratch *eval-query-output*
exec 'geA<ret><esc>"|p;'
edit
명령은 익숙할 것입니다. 새 버퍼를 엽니다. -scratch
는 kakoune에게 파일과 연결하는 것에 대해 신경 쓰지 않는다고 말합니다. 마지막으로 execute-keys
(줄여서 exec
)를 사용하여 파일의 끝으로 이동하고 새 줄을 추가한 다음 |
레지스터의 내용을 붙여넣습니다.그리고 그게 다야! 아래에서 실제로 확인하십시오.
쿼리를 실행하는 메커니즘이 매우 일반적이기 때문에 이 플러그인을 사용하여 쿼리 결과에 제한되지 않고 새 버퍼에서 무엇이든 쉽게 열 수 있습니다. 단순히
connections
를 commands
로 이름을 바꾸고 구성 파일을 업데이트하면(또한 "버퍼 평가"를 위해 플러그인 이름을 beval
로 변경했습니다) 가능성이 무한해집니다!새 버퍼에서 디렉토리 목록을 열 수 있는 고급
ls
명령을 추가해 보겠습니다.{
"commands": {
"ls": "ls -lah"
}
}
마지막으로
eval
키를 추가하여 원하는 명령을 실행할 수 있습니다.{
"commands": {
"eval": "eval"
}
}
현재 우리가 기본적으로 가지고 있는 것은
|
스테로이드(그리고 덜 잘 설계된)입니다. 계속해서 이것을 리팩토링하여 "파이프에서 버퍼로"기능을 독립 실행형으로 분리해 보겠습니다.def eval-to-buffer \
-override \
-docstring "Evaluate current selection into scratch buffer." \
-params 1..1000 \
%{
set-register | %sh{ eval "$@ 2>&1" }
# Open our output buffer
edit -scratch *command-output*
# Put output into the buffer
exec '%"|pd'
}
def beval \
-override \
-docstring "Evaluate current selection using named command into scratch buffer." \
-params 1 \
-shell-script-candidates %{ cat .beval.json | jq -r '.commands|keys|@sh' | sed s/\'//g | tr -s " " "\n" } \
%{
eval-to-buffer %sh{
cmd=`cat .beval.json | jq .commands.$1 | cut -d\" -f 2`
echo "$cmd \"${kak_selection}\""
}
}
이제 프로젝트별 구성은 출력을 버퍼로 파이핑하는 메커니즘과 독립적입니다. 둘 다 서로 다른 상황에서 유용하기 때문입니다.
물론 추가 개선이 있지만 지금은 여기에 남겨두겠습니다. 읽어 주셔서 감사합니다!
Reference
이 문제에 관하여(새 버퍼에서 명령 출력 열기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/staab/open-output-in-a-new-buffer-2dak텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)