cat > something.txt
Quick 및 Ctrl+ close를 사용하는 것은 터미널에 붙여넣거나 수동으로 입력한 파일에 빠르게 무언가를 쓰고 싶을 때 D좋은 단축키입니다 . 그러나 이는 물론 명백한 오류가 있는 경우 커서를 이동할 수 없으므로 텍스트 편집기(예: vim 또는 nano)를 열 수 없습니다. 그러나 이는 터미널 멀티플렉서를 사용하지 않는 한 화면을 차지하며 내 사용 사례에는 약간 불편하거나 과도합니다. 커서를 움직이는 고양이에 대한 대안이 있습니까? 화면을 차지하지 않고 Ctrl+ 하기 전까지는 실제로 텍스트 버퍼일 뿐인 작은 편집기가 있습니까 D?
hel SomeScript
나의 더 큰 사용 사례는 터미널에 입력 할 수 있도록 작은 도우미 스크립트를 만드는 것입니다. 그러면 ~/bin
경로에 해당 이름의 스크립트가 자동으로 생성되고 상단에 shebang이 추가된 다음 chmod+x
작업이 완료됩니다. 일단 cat > ~/bin/$1
시작해서 실수가 너무 많다고 판단하고 nano로 전환했지만 화면을 잡아서 뒤로 스크롤하지 않고 터미널에서 이전에 무엇을 했는지 볼 수 없었고 vim 키를 사용하려고 했습니다. 저는 편집장이에요, 하하.
답변1
"빠른" 접근 방식을 고수하고 교육을 배우고 싶지 않은 경우 다음을 사용할 수 있습니다.
cat > test <<'EOF'
...
EOF
물론 이것은 완전한 편집기는 아니지만 입력 중인 줄을 편집할 수 있습니다(Enter 키를 누르기 전).
답변2
rlwrap으로
rlwrap cat
(을 통해) readline을 올바르게 구성하면 ~/.inputrc
rlwrap은 readline을 사용하는 bash 및 기타 프로그램과 동일한 키 바인딩을 사용합니다.
그리고vi
만약에모달 vi 키 바인딩과 편집기의 "개방 모드"( 또는 과 같은 부적절한 복제가 아닌 vi
실제 ) 에 익숙해집니다 .vi
vim
nvi
그리고zsh
zsh 명령줄 편집 인터페이스를 사용하면 전체 화면을 차지하지 않고도 여러 줄 편집이 가능합니다.
vared
다음은 zsh의 내장 기능(변수 편집이 목적)을 사용하는 빠른 편집기의 "구현"입니다 .
# in .zshrc
bindkey -N for-qe emacs
bindkey -M for-qe \
"^M" self-insert-unmeta \
"^J" self-insert-unmeta \
"^X" accept-line
qe(){
local e=$(cat $1; echo x); e=${e%x}
vared -M for-qe e && printf %s $e > $1
}
# usage
% qe some_file
# Enter, ^M, ^J = insert a newline
# ^X = save & exit
# ^C = abort editing
답변3
Python을 사용하면 비슷한 것을 얻을 수 있습니다.prompt_toolkit
도서관. 다음은 짧은 스크립트입니다.
#! /usr/bin/env python3
import sys
from prompt_toolkit import PromptSession
from prompt_toolkit.output import create_output
from prompt_toolkit.key_binding import KeyBindings
bindings = KeyBindings()
@bindings.add('c-d')
def _(event):
event.app.current_buffer.validate_and_handle()
# This will allow it to work when re-directing stdout, by using stderr instead.
output = create_output(always_prefer_tty=True)
session = PromptSession(output=output)
text = session.prompt(
message='', # No prompt.
multiline=True,
key_bindings=bindings,
enable_history_search=False,
vi_mode=True, # Change to False, if you prefer emacs-style editing shortcuts.
)
sys.stdout.write(text)
sys.stdout.flush()
누구든지 적절한 이름을 제안할 수 있다면 기꺼이 패키지하여 PyPI에 게시하겠습니다.