답변:
readline 편집을 emacs (기본값) 또는 vi ( set -o vi
)로 설정하면 쉘과 선택한 편집기에서 편집 명령을 기본적으로 표준화 할 수 있습니다 1 .
따라서 쉘에서 명령을 편집하려면 텍스트 편집기에있을 때와 동일한 명령 2 를 사용하십시오 . 즉, 하나의 명령 구문 만 기억하면되고 (충분하지 않은 경우) 두 환경 모두에서 편집 속도가 빨라지고 오류가 발생하기 쉽습니다.
쉘 히스토리에서 명령을 가져 와서 Escape명령 모드로 들어간 다음을 누르면 vi 모드에서이 관계를 더욱 활용할 수 있습니다. 그러면 vvim의 모든 기능을 사용하여보다 복잡한 편집을 위해 명령이로드되어 $ EDITOR가 열립니다. 명령을 만족스럽게 편집하면 :wq쉘에서 명령이 다시 실행됩니다.
물론 Emacs 또는 Vi / m을 편집기로 사용한다고 가정합니다.
또는보다 정확하게는, 그 하위 집합
set -o vi
대부분의 사람들이 모르는 최고의 기능 중 하나입니다 . 여러 명령 행 명령과 같이 다른 인수로 동일한 명령을 여러 번 발행하려는 경우 특히 그렇습니다.
set -o vi
. set -o EMACS
Cx, Ce 의 기본 설정 $EDITOR
에서 명령을 실행하기 전에 명령을 편집 할 수 있는 emacs 창 (또는 설정된 경우)이 나타납니다.
Vi 모드는 Android 용 ConnectBot와 같은 모바일 SSH 클라이언트를 사용하는 경우 유용성이 크게 향상되었습니다.
수정 자 키에 대한 의존도가 감소했기 때문입니다.
Vim은 안드로이드 UI에 내장 된 기본 편집 방법을 포함하여 스마트 폰이나 태블릿의 가상 키보드를 사용하는 것보다 훨씬 쉽습니다. 아이러니하게도 SSH 세션에서 Vim을 사용하여 C 소스를 편집하는 것이 플랫폼 목적의 편집 위젯으로 인스턴트 메시지를 편집하는 것보다 쉽습니다.
Shell vi 모드는 비슷한 이점을 제공합니다.
vi 모드와 조작을 사용하여 명령 행에서 내용을 편집 할 수 있습니다.
예를 들어 훨씬 명확하게 만들 수 있습니다.
당신은 입력 cp tmp/some_other_long_directory/file1.xt /tmp2/some_other_xtra_long_dir/
그러나 오류가 발생했습니다-입력 file1.txt
하지 않아야합니다file1.xt
이 옵션을 설정 하지 않으면 위쪽 화살표를 누른 다음 왼쪽 화살표를 누르고 ...에 도달 할 때까지 35 번 반복 .xt
한 다음 extra를 입력하십시오 t
. 총 키 스트로크 : 37 .
함께 이 옵션을 사용하면 키를 누릅니다 (예를 들어)를 한 번 위쪽 화살표 수 있습니다 설정 한 다음 줄의 시작으로 이동 명령 모드, 0 탈출 한 후 /xt[return]
받는 얻기 위해 xt
그리고 당신은 입력 할 수 i
삽입 모드 및 누락 t를 입력합니다. 이것은 어떤면에서 미친 듯이 복잡해 보이지만 vim 사용자 인 경우 이러한 명령은 이미 잘 알려져 있습니다. 총 키 스트로크 : 9
Alt+B
또는 A Ctrl+Alt+]
.
를 사용할 수 있으므로 이것은 나에게 강력한 예가 아닙니다.
Up
, Ctrl+Alt+]
, .
, Right
, t
, Enter
= 8 바이올렛 모드 : Up
, F
, .
, a
, t
, Enter
= 7 :
Esc
.
직접적인 이점이 있는지 확실하지 않습니다. 저는 vi
20 년 넘게 사용자였습니다. 나는 또한 screen
더 오랫동안 사용자이며 vi
키 를 사용하는 다른 프로그램을 사용 합니다. bash에서 "vi"모드를 설정하는 것을 선호하는 것은 당연합니다. 그러나 나는 또한 내 업무에서 수백 대의 서버에서 작업하며 대부분은 기본 "emacs"모드로 설정되어 있습니다. 따라서 두 모드를 모두 사용해야합니다. 그러나 그것은 실제로 선호의 문제입니다.
ssh
합니다. 물론, 내 .bashrc
물건 이없는 로컬 컴퓨터를 사용할 때 도움이되지 않습니다 .
주요 이점은 명령 줄을 모달 편집하는 것입니다. Vim에 익숙하고 철학이 마음에 든다면 이점이 분명해야합니다. 당신이 그것에 경험이 있다면, 손가락의 근육 기억이 당신을 bash 명령을 매우 빠른 속도로 편집하게 할 것입니다.
주의 : 모달 편집이 마음에 들지 않으면 (기본) emacs 모드를 활용하는 법을 배워야합니다. 와 같은 모든 프로세스에서 작동하는 멋진 키보드 단축키는 다음 과 readline
같습니다 bash
.
아마도 파티에 늦었을 수도 있지만 vi 모드를 사용하는 것은 대화 형 스크립을 만들 때 더 중요합니다.
for i in `ls | grep -v gz`
do
echo $i
gzip $i
done
매우 복잡한 것의 아주 간단한 예입니다.를 사용 ESCkv하면 스크립트를 수정할 수있는 vi 세션으로 이동 한 다음 :wq
실행됩니다.
vi
모드에서 bash를 사용하는 좋은 예일 수 있지만 bash 코드의 나쁜 예입니다. (1) 출력을 ls
다른 종류의 처리에 대한 입력으로 사용 하는 것은 나쁜 생각입니다. (2) $(…)
명령 대체 `…`
구문 은 구문 보다 읽기 쉬운 것으로 널리 간주됩니다 . (3) 타당한 이유가없는 한 항상 쉘 변수를 인용해야하며 자신이하고있는 일을 확실히 알고 있어야합니다.