터미널 명령줄에서 커서를 이동하는 가장 빠른 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/657130

  •  19-08-2019
  •  | 
  •  

문제

터미널의 매우 긴 명령줄에서 이동하는 가장 좋은 방법은 무엇입니까?

화살표 키를 사용했다고 가정해 보겠습니다. Ctrl 키-아르 자형 이 긴 명령줄을 얻으려면:

./cmd --option1 --option2 --option3 --option4 --option5 --option6 --option7 --option8 --option9 --option10 --option11 --option12 --option13 --option14 --option15 --option16 --option17 --option18 --option19 --option20 --option21 --option22 --option23 --option24 --option25 --option26 --option27 --option28 --option29 --option30 --option31 --option32 --option33 --option34 --option35 --option36 --option37 --option38 --option39 --option40 --option41 --option42 --option43 --option44 --option45 --option46 --option47 --option48 --option49 --option50 

이제 커서를 (줄의 처음이나 끝에서 시작하여) 이동해야 합니다. --option25 거기에서 뭔가를 수정하려면.

거기까지 가는 가장 빠른 방법은 무엇입니까?내가 평소에 하는 일은 Ctrl 키- 처음으로 이동한 후 반복적으로 Alt-에프 한 마디씩 앞으로 나아가다(또는 Ctrl 키-이자형 끝까지 가서 Alt- 그런 다음 뒤로 이동합니다).하지만 긴 줄에서는 시간이 너무 많이 걸립니다.수정해야 할 부분을 검색하고 바로 이동할 수 있는 방법이 있어야 합니다. option25?

도움이 되었습니까?

해결책

이것은 아직 닫히지 않았으므로 다음은 몇 가지 옵션이 더 있습니다.

  • 사용 Ctrl 키+엑스 그 뒤에 Ctrl 키+이자형 에디터에서 현재 라인을 열려면 $FCEDIT 또는 $EDITOR 또는 emacs (그 순서대로 시도).
  • 이전에 명령을 실행하면 누르십시오 Ctrl 키+아르 자형 역사 검색 및 유형의 경우 option25 (이 경우). 라인이 표시됩니다. 때리다 이 시점에서 편집을 시작합니다.
  • 역사 확장을 사용하십시오 s/// 수정 자. 예를 들어 !-2:s/--option25/--newoption/ 두 번째로 나오는 명령을 다시 실행하지만 옵션 25를 바꾸십시오. 마지막을 수정합니다 ./cmd 명령, 사용 !string 통사론: !./cmd:s/--option25/--newoption/
    임의의 구분자는 대체 대신 / 대신에 사용될 수 있습니다.
  • 이전 줄을 편집하는 경우 빠른 대체를 사용할 수 있습니다. ^--option25^--newoption
  • 캐릭터 검색. 이것은 PAX에 의해 언급되었으며 정기적 인 EMACS 모드에서 수행 할 수 있습니다. Ctrl 키+] 앞으로 검색을 위해 Ctrl 키+대체+] 후진 검색을 위해.

두 번째 옵션을 추천합니다. Ctrl 키+아르 자형 정말 편리하고 빠르며 편집자와는 무시하지 않으며 명령이 실행되기 전에 결과가 히스토리 확장과 달리 표시됩니다.

다른 팁

분명히, 당신은 "커서를 단말기 명령 줄 ". 실제로 원하는 것은 당신의 명령 줄을 탐색하는 빠른 방법입니다. 껍데기 프로그램.

세게 때리다 예를 들어 매우 일반적인 쉘입니다. 사용합니다 읽기 명령 줄 입력을 구현하는 라이브러리. 말하자면, Bash에만 사용되기 때문에 읽기 라인 바인딩을 아는 것이 매우 편리합니다. 예를 들어, GDB는 또한 readline을 사용하여 입력을 처리합니다.

READLINE 문서에서 모든 내비게이션 관련 바인딩 (및 기간)을 찾을 수 있습니다.http://www.gnu.org/software/bash/manual/bash.html#readline-interaction

위의 링크가 다운되면 짧은 사본-페이스트 :

필수 필수 요소

  • Ctrl-B는 하나의 캐릭터를 뒤로 이동합니다.
  • Ctrl-F는 한 캐릭터를 전진합니다.
  • 델] 또는 [백 스페이스] 커서의 왼쪽에 문자를 삭제합니다.
  • ctrl-d 커서 아래의 문자를 삭제합니다.
  • CTRL-_ 또는 CX CU 최후의 편집 명령을 취소합니다. 빈 줄로 되돌릴 수 있습니다.

움직임

  • Ctrl-A 라인의 시작으로 이동합니다.
  • Ctrl-e 라인 끝으로 이동합니다.
  • Meta-F는 단어가 문자와 숫자로 구성된 단어를 앞으로 나아갑니다.
  • 메타 B는 단어를 뒤로 이동합니다.
  • Ctrl-L 화면을 지우고 상단의 현재 라인을 재판합니다.

죽이고 얀크

  • Ctrl-K는 현재 커서 위치에서 라인 끝까지 텍스트를 죽입니다.
  • MD는 커서에서 현재 단어의 끝까지 또는 단어 사이에 다음 단어의 끝까지 죽입니다. 단어 경계는 MF에서 사용하는 것과 동일합니다.
  • m- [del] 커서에서 현재 단어의 시작 또는 단어 사이의 경우 이전 단어의 시작으로 죽입니다. 단어 경계는 MB에서 사용하는 것과 동일합니다.
  • Ctrl-W는 커서에서 이전 공백으로 죽입니다. 단어 경계가 다르기 때문에 이것은 m-와 다릅니다.
  • Ctrl-y는 가장 최근에 죽인 텍스트를 커서의 버퍼로 다시 잡아냅니다.
  • 내 킬 링을 회전시키고 새로운 탑을 잡아 당겼다. 이전 명령이 Cy 또는 My 인 경우에만이 작업을 수행 할 수 있습니다.

M은 메타 키입니다. Max OS X 터미널의 경우 설정/키보드에서 "메타 키로 옵션 사용"을 활성화 할 수 있습니다. Linux의 경우 더 복잡합니다.

업데이트

또한 Readline은 두 가지 모드로 작동 할 수 있습니다.

VI 모드를 사용하도록 Bash를 전환하려면 :

$ set -o vi

Personaly 텍스트 편집에 vim을 사용하기 때문에 VI 모드를 선호합니다.

보너스

MACOS 터미널 앱 (및 ITERM에서도)에서 옵션 클릭하여 커서를 이동할 수 있습니다 (커서는 클릭 된 위치로 이동합니다). 이것은 심지어 내부에서 작동합니다 vim.

옵션 키를 누른 상태에서 커서를 이동하려는 곳을 클릭하고 터미널이 Cursor를 정확한 지점을 돌진합니다.

나는 VI 편집 모드를 선호하는 경향이 있습니다 (키 스트로크가 척수에 포함되어 있기 때문에 WordStar 3.3 :-)의 Ctrl-K, Ctrl-X와 함께 현재 척수에 내장되어 있기 때문입니다. 명령 줄을 사용할 수 있습니다 set -o vi 그것을 활성화하기 위해 (및 set -o emacs 되돌립니다).

VI에서는 (물론 먼저 라인을 얻는 것이 ESC-K) 일 것입니다. "f5;;B"(이중 인용문없이).

물론, 당신은 이것으로 떠나기 위해 줄에 무엇이 있는지 이해해야합니다. 기본적으로, 그것은입니다

f5 to find the first occurrence of "5" (in --option5).
;  to find the next one (in --option15).
;  to find the next one (in --option25).
B  to back up to the start of the word.

EMACS 애호가들이 5 개 미만의 키 스트로크 미만 (종교적 전쟁을 시작하고 싶지는 않지만)을 내놓을 수 있는지 봅시다.

이 끔찍한 긴 명령을 대본에 넣고 싶은지 생각해 보셨습니까? :-)

사실, 나는 그보다 더 잘 갈 수 있습니다. "3f5B""5 "의 세 번째 사건을 찾기 위해서는 단어의 시작으로 되돌아갑니다.

Meta-B / Meta-F를 사용하여 각각 단어로 뒤로 이동 / 앞으로 이동하십시오.

OSX에서 메타는 ESC로 번역되어 짜증납니다.

그러나 터미널 환경 설정 -> 설정 -> 프로파일 -> 키보드를 열고 "메타 키로 옵션 사용"을 확인할 수 있습니다.

명령을 한 번 실행 한 후 실행하십시오 fc

시작됩니다 $EDITOR 이전 명령을 사용하면 일반 편집기를 사용하여 명령을 수정할 수 있습니다. 저장 및 종료되면 파일이 실행됩니다.

.. 그러나 Pax가 말했듯이 - 명령 줄은 터무니없는 긴 줄을 편집하는 데 특히 좋지 않습니다. 왜 명령을 스크립트로 만들지 않습니까?

일정 수의 단어를 앞으로 나아가고 싶다면 M-<n> (M- 메타를위한 것이고 보통 탈출 키) 숫자를 쳤다. 이렇게하면 반복 인수를 읽기 라인에 보냅니다. 따라서 원하는 명령을 반복 할 수 있습니다. 앞으로 나아가고 싶다면 M-<n> M-f 커서는 앞으로 나아갈 것입니다 <n> 단어 수.

예를 들어

 $|echo "two three four five six seven"
 $ M-4
 (arg: 4) echo "two three four five six seven"
 $ M-f
 $ echo "two three four| five six seven"

줄의 시작 부분의 커서에서 나온 예를 들어, M-26 M-f 그리고 당신의 커서는있을 것입니다 --option25| - 또는 라인의 끝에서 M-26 M-b 커서를 넣을 것입니다 --|option25

증분 이력 검색

터미널에 다음을 입력하세요:

gedit  ~/.inputrc

그런 다음 복사하여 붙여넣고 저장하세요.

"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char

이전 명령을 찾기 위해 해야 할 일은 처음 2~3자를 입력하는 것뿐입니다. 위쪽 화살표를 사용하면 원하는 위치로 신속하게 이동할 수 있습니다.

for f in *.mid ; do timidity "$f"; done

내가 해야 할 일은 들어가는 것뿐이야

fo

위쪽 화살표를 누르면 곧 명령이 나타납니다.

하나의 옵션은 사용하는 것입니다 M-x shell 안에 emacs. 그것은 모든 편집 시설과 키 스트로크를 제공합니다 emacs 그렇습니다 C-s 텍스트를 검색하는 데 사용할 수 있습니다 option25, 예를 들어.

(그러나 누군가가 나를 잘 검색하고 편집 할 수 있다면 대신 실제 터미널 쉘에있는 것을 선호합니다.)

마우스를 사용하십시오

때로는 명령 선을 편집하는 가장 쉬운 방법은 마우스를 사용하는 것입니다. 일부 이전 답변은 $ 편집기에서 현재 라인을 열도록 명령을 내립니다. 나를 위해 (grml config with grml config) Alt+e. 편집기에서 마우스를 활성화하면 사용할 수 있습니다.

vim에서 마우스를 활성화하려면 이것을 ~/.vimrc에 추가하십시오.

set mouse=a
set ttymouse=xterm2

그런 다음 터미널에서 텍스트 선택을하려면 (Mouseclick을 VIM으로 전달하는 대신) 클릭하면 Shift를 누릅니다. 물론 이것은 터미널 특이 적입니다.

Sysadmins는 마우스를 두려워해서는 안됩니다.

Cygwin에서는 창을 마우스 오른쪽 버튼으로 클릭하여 이러한 기능을 활성화 할 수 있습니다. 팝업 창에서 선택하십시오 옵션 ... -> 마우스 -> 활성화 클릭을 클릭하여 명령 줄 커서를 클릭합니다 -> 적용.

이제부터 명령 줄의 일부 위치에서 왼쪽 마우스 버튼을 클릭하면 커서가 있습니다.

첫 번째 : 내보내기 편집기 = 'nano -m'

그런 다음 : ctrl+x ctrl+e 순서대로.

현재 라인은 마우스 활성화와 함께 나노 편집기에서 열립니다. 텍스트의 일부를 클릭하고 편집 할 수 있습니다.

그런 다음 ctrl+x로 나가고 y를 사용하여 저축을 확인합니다.

명령 줄을 만들기 위해 스크립트를 만들었습니다 커서 마우스로 이동합니다 :

  1. Xterm 마우스 추적보고를 활성화합니다
  2. 클릭에 의해 생성 된 탈출 시퀀스를 소비하도록 읽기 라인 바인딩 설정

찾을 수 있습니다 github

더 많은 정보 다른 게시물

만약 작동합니다 echo -e "\e[?1000;1006;1015h" # Enable tracking 마우스로 클릭 할 때 터미널의 탈출 시퀀스를 인쇄합니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top