가장 많이 사용되는 vim 명령 / 키 누르기는 무엇입니까?


112

저는 Textmate에서 MacVim으로 전환하려는 Ruby 프로그래밍이고, VIM에서 할 수있는 작업과 모든 키 누르기에서 할 수있는 방대한 목록을 살펴 보는 데 어려움을 겪고 있습니다. 나는 "텍스트를 삽입하려면 'I'를 사용하고 문자 뒤에 텍스트를 추가하려면 'a'를 사용하거나 줄 끝에 텍스트를 추가하려면 'A'를 사용하거나 ..."라는 말을 듣는 데 지쳤습니다. 상상할 수 없습니다. 모든 사람은 텍스트를 탐색하기 위해 20 가지 키 누르기를 모두 사용하고 텍스트를 추가하기 위해 10 개 정도의 키를 사용하며 내부 블록을 시각적으로 선택하는 18 가지 방법을 사용합니다. 아니면 당신!?

내 이상적인 치트 시트는 루비리스트가 매일 사용하는 절대 필수 플러그인과 가장 많이 사용되는 10 개의 명령과 함께 매일 코드를 작성하는 데 사용하는 30-40 개의 가장 많이 사용되는 키 누르기 또는 명령입니다. 이론적으로, 나는이 한 번 내가 TextMate를에서 오전으로 VIM 실력으로되기 시작 나는 나를 만들 것입니다 다른 VIM 명령의 수천 학습을 시작할 수 있습니다 효율적입니다.

아니면 VIM을 완전히 잘못된 방식으로 배우고 있습니까?



1
'루비'를 제거하고 '키보드 단축키'를 추가하도록 태그를 다시 지정했습니다. 더 적절 해 보입니다.

"내가 Vim을 완전히 잘못된 방식으로 배우고 있습니까?" -아니, 그냥 몇 가지 기본부터 시작하고 지금부터 1 년 후에 더 많은 명령을 배우게 될 것임을 기억하세요. 언젠가는 정말로 모든 명령을 사용할 것입니다! 그러나 아무도 처음부터 모두 사용하지 않습니다.
Cascabel 2011 년

답변:


306

다음은 내가 실제로 정기적으로 사용하는 명령과 함께 한 번 작성한 팁 시트입니다.

참고 문헌

일반

  • 거의 모든 명령 앞에 반복 횟수를 표시 할 수 있습니다. 예. 5dd 5 줄 삭제
  • <Esc> 모든 모드에서 벗어나 명령 모드로 돌아갑니다.
  • : 뒤에 오는 명령은 화면 하단의 명령 줄에서 실행됩니다.
  • : 모든 명령에 대한 도움말

항해

  • 커서 이동 : ← hjk l →
  • 단어로 :
    • w 다음 단어 (구두점으로); W 다음 단어 (공백으로)
    • b 뒤로 단어 (구두점으로); B 백 워드 (공백)
    • e 끝 단어 (구두점 사용) E 끝 단어 (공백으로)
  • 라인 :
    • 0 줄 시작; ^ 공백이 아닌 첫 번째
    • $ 줄 끝
  • 단락 별 :
    • { 이전 빈 줄; } 다음 빈 줄
  • 파일 별 :
    • gg 파일 시작; G 파일 끝
    • 123G 는 특정 라인 번호로 이동
  • 마커 별 :
    • mx 마크 x 설정 ; 'X는 표시로 이동 X를
    • '. 마지막 편집 위치로 이동
    • '' 점프 전 마지막 지점으로 돌아 가기
  • 스크롤 :
    • ^ F 전체 화면 앞으로; ^ B 전체 화면 뒤로
    • ^ D 화면 절반 아래; ^ U 절반 화면 위로
    • ^ E 한 줄 위로 스크롤합니다. ^ Y 한 줄 아래로 스크롤
    • zz 중심 커서 라인

편집

  • u 실행 취소; ^ R 다시 실행
  • . 마지막 편집 명령 반복

삽입

모든 삽입 명령은 <Esc>명령 모드로 돌아 가기 위해 종료 됩니다.

  • 내가 커서에서 텍스트를 삽입; 나는 라인의 시작 부분에 텍스트를 삽입
  • 커서 후 텍스트 추가; 라인의 종료 후 텍스트 추가
  • o 아래에 새 줄을 엽니 다. O 위에 새 줄 열기

바꾸다

  • r 단일 문자를 대체합니다. R은 여러 문자를 대체합니다.
  • s 단일 문자 변경
  • cw 변경 단어; C 줄 끝으로 변경; cc 전체 라인 변경
  • c<motion> 는 모션 방향으로 텍스트를 변경합니다.
  • ci ( 괄호 안의 변경 ( 더 많은 예제는 텍스트 객체 선택 참조 )

삭제

  • x 문자 삭제
  • dw 삭제 단어; D 줄 끝까지 삭제합니다. dd 전체 줄 삭제
  • d<motion> 모션 방향으로 삭제

잘라내어 붙여 넣기

  • yy 붙여 넣기 버퍼에 행 복사; dd 컷 라인을 붙여 넣기 버퍼로
  • p 커서 줄 아래에 버퍼를 붙여 넣습니다. P 커서 줄 위에 버퍼 붙여 넣기
  • xp 두 문자 교체 ( x 는 한 문자를 삭제 한 다음 p 는 커서 위치 뒤에 다시 넣습니다)

블록

  • v 시각적 블록 스트림; V 시각적 블록 라인; ^ V 시각적 블록 열
    • 대부분의 모션 명령은 블록을 새 커서 위치로 확장합니다.
    • o 커서를 블록의 다른 끝으로 이동
  • d 또는 x 블록을 붙여 넣기 버퍼로 잘라 내기
  • y 블록을 붙여 넣기 버퍼에 복사
  • > 들여 쓰기 블록; < 들여 쓰기 블록
  • gv 마지막 시각적 블록 다시 선택

글로벌

  • : % s / foo / bar / g "foo"의 모든 항목을 "bar"로 대체
    • %는 파일의 모든 행을 나타내는 범위 입니다.
    • / g는 첫 번째 대신 한 줄의 모든 항목을 변경하는 플래그입니다.

수색

  • / 앞으로 검색;? 뒤로 검색
  • * 커서 아래의 단어를 앞으로 검색합니다.# 커서 아래에있는 단어를 뒤로 검색
  • n 같은 방향으로 다음 경기;반대 방향으로 N 다음 경기
  • fx 다음 문자 x 앞으로 ; 이전 문자로 뒤로 Fx x로
  • ; 같은 방향으로 같은 캐릭터로 다시 이동합니다. , 반대 방향으로 다시 같은 캐릭터로 이동

파일

  • : w 디스크에 파일 쓰기
  • : w name 과 같이 디스크에 파일 쓰기name
  • ZZ 디스크에 파일 쓰기 및 종료
  • : n 새 파일을 편집합니다. :엔!현재 변경 사항을 저장하지 않고 새 파일 편집
  • : q 파일 편집을 종료합니다. :큐!변경 사항을 저장하지 않고 편집 종료
  • :이자형 동일한 파일을 다시 편집합니다 (vim 외부에서 변경된 경우).
  • : e.디렉토리 탐색기

윈도우

  • ^ Wn 새 창
  • ^ Wj 다음 창으로 이동; ^ 이전 창으로 이동
  • ^ W_ 현재 창 최대화; ^ W = 모든 창을 같은 크기로 만들기
  • ^ W + 창 크기를 늘립니다. ^ W- 창 크기 줄이기

소스 탐색

  • 일치하는 괄호 / 대괄호 / 중괄호 또는 언어 모듈이로드 된 경우 언어 블록으로 % 이동
  • gd 커서 아래의 지역 기호 정의로 이동합니다. ^ O 이전 위치로 돌아 가기
  • ^] 전역 심볼 정의로 이동 ( tags파일 필요 ); ^ T 이전 위치로 복귀 (임의의 위치 스택 유지)
  • ^ N (삽입 모드) 자동 단어 완성

로컬 변경 사항 표시

Vim에는 소스 제어에서 기본 버전에서 변경된 라인을 쉽게 강조 할 수있는 몇 가지 기능이 있습니다. 이것을 쉽게 만드는 작은 vim 스크립트를 만들었습니다 : http://github.com/ghewgill/vim-scmdiff


1
+1 비교적 최소한이지만 창 명령을 사용하거나 화살표 키 / 페이지 업 / 페이지 다운 / 홈 / 종료 및 gg / G 이외의 다른 것으로 탐색하지 않는다는 것을 인정해야합니다. 아, 그리고 줄 번호 탐색을 위해 : 123 (명령 모드)을 사용할 수도 있습니다.

2
좋은 치트 시트. 나는 창을 순환하기 위해 ^ w ^ w 를 추가하고 , 일관성을 위해 ZZ 대신 : x , 문자 앞에 앞으로 tx , 뒤로 Tx를 추가 합니다.
romainl 2011 년

이것은 내가 사용하는 것의 기본 일 뿐이라는 점에 유의해야 합니다. 저는이 목록을 다른 사람들에게 vim을 가르치기위한 도구로 만들었습니다. 나는 다른 많은 명령을 덜 자주 사용하고 vim을 더 효과적으로 사용할 수 있도록 다양한 별칭과 매크로를 설정했습니다.
Greg Hewgill 2011 년

2
당신이 피하려면 Esc키를 (그리고 RSI는?), 당신은 사용할 수 있습니다 ^[. ^c작동합니다 (단, 약어를 확장하지는 않음). 출처 : vim.wikia.com/wiki/Avoid_the_escape_key
리안

22

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

이것은 VIM을 배우는 데있어 가장 위대한 것입니다.


명령이 무엇을하는지 아는 후에는 이것을 본 적이 없습니다.
amccormack 2011 년

3
하지만 쿼티 키보드가 없다면 "그래픽"부분은 쓸모가 없습니다.
romainl 2011 년

5
그것은 다른 포스터에 넣어 여분의 마일을가는 동안 링크 게시 (이미 죽음에 게시되어 있습니다 BTW) 무승부 ...이 많은 관심을하지 않는 있다고 날 놀라게
리벤 Keersmaekers

정력 게시물의 확실한 승자 : stackoverflow.com/questions/1218390/...
저스틴 토마스


4

Vim의 내장 튜토리얼을 살펴 보셨습니까? 그렇지 않은 경우 명령 줄로 이동하여vimtutor . 초기 명령을 배우는 좋은 방법입니다.

Vim은 엄청난 유연성과 성능을 가지고 있으며, 대부분의 vim 사용자와 마찬가지로 새로운 명령을 많이 배우고 오래된 명령은 잊어 버린 다음 다시 배우게됩니다. 내장 된 도움말은 훌륭하고 새로운 것을 배우기 위해 주기적으로 탐색 할 가치가 있습니다.

인터넷에 vim에 대한 몇 가지 좋은 FAQ와 치트 시트가 있습니다. vim + faq및을 (를) 검색하는 것이 좋습니다 vim + cheatsheet. Cheat-Sheets.org # vimVim Tips 위키 와 마찬가지로 좋은 소스 입니다 .


방금 알게되었고 고맙게도 Mac에 설치되었습니다. 지금 사용해보기 (오전 1시…)
클린턴

저는 오랫동안 vim을 사용해 왔으며, 기계에 처음으로 설치하는 것 중 하나입니다. Mac OS에서 MacVim 은 매우 좋습니다. 나는 대부분의 배포판이 최신 버전이 아니거나 언어 지원이 제대로 설정되어 있지 않기 때문에 내가 사용하는 대부분의 Linux 상자에서 소스에서 vim을 컴파일하는 경향이 있습니다. 나는 무언가를 설정해야 할 때를 위해 현재 버전의 ~/.vimrc, ~/.gvimrc~/.vim디렉토리를 tar-ball에 보관합니다. 그것을 복사하고 파일을 추출하면 Windows, Mac 및 Linux에서 몇 분만에 모든 일반적인 명령과 색상 화학으로 vim을 실행할 수 있습니다.
틴 남자

3

무엇 대부분의 사람들이하는 일은 어쩌면처럼 베어 기초로 시작입니다 i, yw, yy,와 p. 계속해서 화살표 키를 사용하여 이동하고, 마우스로 텍스트를 선택하고, 메뉴를 사용하는 등의 작업을 수행 할 수 있습니다. 그런 다음 속도가 느려지는 경우 더 빠른 방법을 찾아보고 점차적으로 더 많은 명령을 추가합니다. 잠시 동안 하루에 하나의 새 명령을 배운 다음 일주일에 하나씩 새어 나올 것입니다. 한 달 안에 상당히 생산적으로 느껴질 것입니다. 1 년 후에는 꽤 견고한 레퍼토리를 갖게되고 2-3 년 후에는 손가락이 입력하는 내용을 의식적으로 생각조차하지 못하며 누군가를 위해 철자를 써야한다면 이상하게 보일 것입니다. 1993 년에 vi를 배웠지 만 여전히 1 년에 2 ~ 3 개의 새로운 명령을 선택합니다.


3

@Greg Hewgill의 치트 시트는 매우 좋습니다. 몇 달 전에 TextMate에서 전환을 시작했습니다. 이제 저는 TM을 사용했을 때와 마찬가지로 생산성이 뛰어나고 Vim의 힘에 끊임없이 놀랐습니다.

전환 방법 은 다음과 같습니다 . 아마도 당신에게 유용 할 수 있습니다.

Grosso modo, 근본적인 전환을하는 것은 좋은 생각이 아니라고 생각합니다. Vim은 매우 다르며 점진적으로 진행하는 것이 가장 좋습니다.

그리고 당신의 subquestion에 대답하기 위해, yes, 저는 iaIAoO삽입 모드로 들어가기 위해 매일 사용 합니다. 처음에는 확실히 이상해 보이지만 잠시 후에는 생각하지 않습니다.

프로그래밍 관련 작업에 매우 유용한 일부 명령 :

  • rR문자를 대체
  • <C-a><C-x>증가와 숫자가 감소합니다
  • citHTML 태그의 내용을 변경하는 그 변종 ( cat, dit, dat, ci(, 등)
  • <C-x><C-o>,,omnicompletion을 위해 (에 매핑 됨 )
  • 시각적 블록 선택 <C-v>
  • 등등…

Vim 방식에 익숙해지면 다른 편집기 또는 텍스트 필드에서 텍스트를 편집 할 때 o또는 x항상 누르지 않는 것이 정말 어려워집니다 .


2

모든 사람이 텍스트를 탐색하는 데 20 개의 다른 키 누르기, 텍스트 추가를 시작하는 데 10 개 정도의 키, 내부 블록을 시각적으로 선택하는 18 가지 방법을 모두 사용한다고 상상할 수 없습니다. 아니면 당신!?

나는한다.

이론적으로는 일단 내가 Textmate에서와 마찬가지로 VIM에 능숙 해지기 시작하면 더 효율적으로 만들 수있는 수천 개의 다른 VIM 명령을 배울 수 있습니다.

이것이 올바른 방법입니다. 기본 명령으로 시작한 다음 생산성을 향상시키는 명령을 선택하십시오. 나는 vim으로 생산성을 향상시키는 방법에 대한 팁을 위해이 블로그 를 팔로우하는 것을 좋아합니다.


2

tuxfiles.org 는 꽤 좋은 치트 시트를 보유하고 있습니다. 명령을 배우는 데 몇 가지 요점이 있다고 생각합니다.

  • 치트 시트를 정기적으로 읽으십시오. 모든 키를 사용하거나 모든 키를 기억하는 것에 대해 걱정하지 말고 명령이 존재한다는 사실 만 알면됩니다. 명령을 찾아보고 반복적 인 작업을 할 때 사용하십시오.
  • 특정 문자 뒤의 전체 줄을 삭제하는 것과 같이 정기적으로 무언가를하고있는 d$경우 빠른 Google 검색으로 이동하여 해당 명령을 찾을 수 있는지 확인하십시오.
  • 유용하다고 생각되는 명령을 기록하고 코드를 작성하는 동안 볼 수있는 곳에 목록을 보관하십시오. 나는 무언가를 인쇄하는 것에 반대하고 대신 한 번에 몇 가지 명령에 대해서만 포스트잇 노트를 사용하도록 권장합니다.
  • 가능하다면 다른 프로그래머가 vim을 사용하는 것을보고 흥미로운 일을하는 것을 보면서 어떤 명령을 사용하는지 물어보십시오.

이 팁 외에도 이해해야 할 몇 가지 기본 개념이 있습니다.

  • vim은 동일한 문자를 사용하여 동일한 기능을 나타냅니다. 예를 들어, 문자 뒤의 줄을 삭제하려면 d$. 특정 문자 뒤의 줄을 강조하려면을 사용하십시오 v$. 따라서 $현재 커서가있는 곳에서 줄 끝까지 무언가를 할 것임을 나타냅니다.
  • u실행 취소되고 ctrl+r다시 실행됩니다.
  • 명령 앞에 숫자를 입력하면 반복적으로 실행됩니다. 3dd커서가있는 줄과 그 뒤에 오는 두 줄을 마찬가지로 삭제합니다.3yy 커서가있는 줄 복사합니다.
  • 버퍼 사용을 탐색하는 방법을 이해하는 :ls버퍼를 나열하고 :bn, :bp그들을 통해 순환.
  • :help This is the best way to learn the ropes ', and the rest of the commands will learn through usage.에 있는 자습서를 읽어보십시오 .

2

이것을 .bashrc에 넣어 마지막 편집 라인에서 마지막으로 편집 한 파일로 vim을 엽니 다.

alias vil="vim  +\"'\"0"

1

Vim 으로 효율적인 편집으로 이동 시작하는 데 필요한 사항을 알아보십시오. 이 페이지의 모든 것이 시작하는 데 필수적인 것은 아니므로 원하는 것을 선택하십시오.

거기에서 모든 것에 vim을 사용하십시오. "hjkl", "y"및 "p"는 가장 효율적인 방법은 아니지만 먼 길을 안내합니다. 효율적으로 (또는 전혀) 수행 할 수있는 마법의 열쇠를 모르는 작업에 직면했을 때 몇 번 이상 수행하는 것을 발견하면 찾아보십시오. 조금씩 제 2의 천성이 될 것입니다.

나는 많은 달 전에 vim이 (마지막에 "m"이 없었던 때로 돌아가서) 힘들다는 것을 알았지 만, 효율적으로 사용하는 데는 약 1 주일 밖에 걸리지 않았습니다. 나는 여전히 작업을 수행하는 가장 빠른 편집기라고 생각합니다.


"vim을 사용한 효율적인 편집"에 대한 링크는 이제 죽었습니다. 나는 대안에서 찾을 수 있습니다 생각 robertames.com/files/vim-editing.html
데미안 파월
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.