[unix] 엄마가 말하지 않은 Vim의 어두운 구석은 무엇입니까? [닫은]

사람들이 일반적인 트릭, 특히 ” Vim + ctags 팁과 트릭 “에 대해 이야기하는 많은 질문이 있습니다.

그러나 나는 Vim을 처음 접하는 사람이 멋지게 사용할 수있는 일반적으로 사용되는 바로 가기를 언급하지 않습니다. 저는 유닉스 사용자 (개발자, 관리자 등)가 우리 중 99 %가들은 적이 있거나 꿈꿔 본 적이없는 것을 알고 있다고 생각합니다. 작업을 더 쉽게 할뿐만 아니라 COOL 및 hackish 입니다. 결국, Vim 은 세계에서 가장 어두운 구석이 많은 OS에 상주하므로 소수의 특권 자만 알고 공유하고 싶어하는 복잡성을 가져야합니다.



답변

Vim 사용자의 99 %가 알지 못하는 것일 수도 있지만 매일 사용하는 것으로 Linux + Vim 파워 유저가 알아야 할 사항입니다.

기본 명령이지만 매우 유용합니다.

:w !sudo tee %

쓰기 권한이없는 파일을 편집하기 전에 sudo를 잊는 경우가 종종 있습니다. 해당 파일을 저장하고 권한 오류가 발생하면 임시 파일에 파일을 저장하지 않고 파일을 저장 한 다음 다시 복사하기 위해 해당 vim 명령을 실행하면됩니다.

sudo가 설치되어 있고 sudo 권한이있는 시스템에 있어야합니다.


답변

최근에 내가 발견 한 것이 매우 멋졌다는 것을 발견했습니다.

:earlier 15m

문서를 15 분 전의 상태로 되돌립니다. 롤백하려는 시간 동안 다양한 인수를 취할 수 있으며 실행 취소 레벨에 따라 다릅니다. 반대 명령으로 되돌릴 수 있습니다:later


답변

:! [command] Vim에있는 동안 외부 명령을 실행합니다.

그러나 콜론 뒤에 점을 추가 :.! [command]하면 명령의 출력이 현재 창에 덤프됩니다. 그게: . !

예를 들면 다음과 같습니다.

:.! ls

입력하는 문서에 현재 날짜를 추가하는 것과 같은 작업에 이것을 많이 사용합니다.

:.! date


답변

정확히 모호하지는 않지만 다음과 같이 매우 유용한 몇 가지 “삭제”명령이 있습니다.

  • diw 현재 단어를 삭제
  • di( 현재 Parens 내에서 삭제
  • di" 따옴표 사이의 텍스트를 삭제하려면

다른 곳에서 찾을 수 있습니다 :help text-objects


답변

de 를 눌러 단어 끝까지 모든 것을 삭제합니다. 당신의 마음의 소원에.

ci (xyz [Esc] -이것은 이상합니다. 여기에서 ‘i’는 삽입 모드를 의미하지 않습니다. 대신 괄호 안의 의미이므로이 순서는 괄호 안의 텍스트를 잘라 내고 . “XYZ”는 또한 내부 광장과 그림 괄호를 작동 -.. 단지 CI [또는 CI를 {방금 입력 아무것도하지 않고 모든 텍스트를 삭제하려면 상응 당연히, 당신은 (디를 할 수있는 당신도 할 수있는 할 a대신에 i당신이 경우 내부의 텍스트뿐만 아니라 괄호도 삭제하려고합니다.

ci “ -현재 따옴표로 텍스트를 자릅니다.

ciw- 현재 단어를 잘라냅니다. 이것은 (로 대체되는 것을 제외하고 는 이전과 동일하게 작동합니다 w.

C- 나머지 줄을 자르고 삽입 모드로 전환하십시오.

ZZ- 현재 파일을 저장하고 닫습니다 (현재 탭을 닫으려면 Ctrl-F4보다 빠름)!

ddp- 현재 행을 한 행 아래로 이동

xp- 현재 문자를 한 위치 오른쪽으로 이동

U- 대문자이므로 viwU단어를 대문자

~ -대 / 소문자를 전환하므로 viw~전체 단어의 대 / 소문자 를 반대로 바꿉니다.

Ctrl + u / Ctrl + d를 누르면 화면이 반 화면 위로 또는 아래로 스크롤됩니다. 두 화면의 관계를보다 쉽게 ​​확인할 수 있기 때문에 일반적인 전체 화면 페이징보다 더 유용한 것 같습니다. 한 번에 전체 화면을 계속 스크롤하려는 경우 앞으로는 Ctrl + f, 뒤로는 Ctrl + b를 사용하십시오. Ctrl + Y와 Ctrl + E는 한 번에 한 줄씩 아래로 스크롤합니다.

미친하지만 매우 유용한 명령은 zz 입니다.이 줄이 가운데에 표시되도록 화면을 스크롤합니다. 이것은 작업중 인 코드를 관심의 중심에 두는 데 탁월합니다. 형제 명령 (zt 및 zb)은이 라인을 sreen에서 맨 위 또는 맨 아래로 만듭니다.

% 는 일치하는 괄호를 찾아서 점프합니다.

de- 커서에서 단어 끝까지 dE삭제 (다음 공간까지 삭제할 수도 있음 )

bde- 현재 단어를 왼쪽에서 오른쪽으로 구분 기호를 삭제

df [space] -다음 공간을 포함하여 다음 공간을 포함하여 삭제

dt. -다음 점까지 삭제

dd- 이 전체 줄을 삭제

ye (또는 yE) -여기에서 단어의 끝까지 텍스트를 잡아 당깁니다.

ce- 단어의 끝을 자른다

bye- 현재 단어를 복사합니다 ( “hi”가 무엇을하는지 궁금하게 만듭니다!)

yy- 현재 줄을 복사

cc- 현재 줄을 자르고 S대신 할 수도 있습니다 . 또한 s현재 캐릭터를 자르고 삽입 모드로 전환하는 캡 이 더 낮습니다 .

viwy 또는 viwc . 양키 또는 현재 단어를 변경하십시오. 히트 w이후의 각 단어를 선택 유지하기 위해 여러 번 사용이 b뒤쪽으로 이동

vi { -괄호 안의 모든 텍스트를 선택하십시오. va {-{}을 포함하여 모든 텍스트를 선택하십시오.

vi (p- () 안의 모든 것을 강조 표시하고 붙여 넣은 텍스트로 바꿉니다.

b와 e는 Ctrl + 화살표가 일반적으로하는 것과 비슷하게 커서를 한 단어 씩 움직 입니다. 단어의 정의는 약간의 연속 된 delmiters가 하나의 단어로 취급되므로 약간 다릅니다. 단어 중간에서 시작하는 경우 b를 누르면 항상 현재 단어의 시작 부분으로 이동하고 연속 된 각 b는 다음 단어의 시작 부분으로 이동합니다. 마찬가지로 기억하기 쉬운 e커서는 현재 단어와 그 다음 단어의 끝으로 커서를 가져옵니다.

비슷한에 b/ e자본 BE커서를 단어 구분 기호로 단지 공백을 사용하여 이동합니다.

대문자 D (심호흡) 일반 편집기의 Shift + End / Del과 같이 커서 오른쪽에있는 나머지 행을 삭제합니다 (키 대신 3 번 누르기-Shift + D 참고).


답변

대부분의 Vim 튜토리얼에서 거의 찾지 못했지만 매우 유용합니다 (적어도 나에게는).

g; and g,

변경 목록을 통해 (앞으로, 뒤로) 이동합니다.

어떻게 사용하는지 보여 드리겠습니다. 때로는 CSS 파일에 16 진수 색상 코드와 같은 코드 나 문자열을 복사하여 붙여 넣어야하므로 검색, 점프 (일치하는 부분은 신경 쓰지 않음), 복사 한 다음 뒤로 이동 (g;) 마지막으로 붙여 넣기 위해 코드를 편집하고있었습니다. 마크를 만들 필요가 없습니다. 더 간단합니다.

내 2 센트 만.


답변

:%!xxd

vim을 16 진 편집기로 만드십시오.

:%!xxd -r

돌아가다.

경고 : 이진 (-b)으로 편집하지 않으면 파일이 손상 될 수 있습니다. – 코멘트에서 조쉬 리.