VIM 초고속 탐색


91

다른 편집기를 사용하면서 내가 놓친 유일한 것은 마우스로 내 자리를 찾는 것입니다. 파일의 특정 영역을 눈으로 볼 수 있고 마우스를 움직이고 거기에있는 클릭으로 볼 수 있습니다. VIM을 사용하면 jjjjkkkkkkjjjjhhhh ... 거의 다 왔어 hhhhh oh crap 나는 3 개의 문자를 놓쳤다, lll.

나는 마크하는 법을 배우고 있으며 훌륭한 북마크 플러그인을 찾았습니다. 마커를 만들고 파괴하고 <f3>불행히도 파일이 닫히면 마크가 잊혀집니다.

모두 어떻게 파일을 슈퍼 탐색합니까? 5j7k4j5h 등도 할 수 있다는 것을 알고 있지만, 내 눈을 읽을 수 있고 내가 정말로 필요한 곳에 커서를 놓을 수있는 플러그인이 있어야합니다 ..

또한 / %를 사용하여 특정 용어를 검색하는 방법도 배웠습니다. 도움이되지만 일치하는 모든 문자가 문서 전체에서 강조 표시됩니다.


모두 훌륭한 대답이지만, 우리가 여전히 주제에 대해 이야기하고있는 동안 나는 nG (행 번호로 이동) f % (내가 찾고있는 것의 첫 번째 문자를 찾거나 누군가가 제안한대로 w를 사용하여 앞으로 나아갈 수있는 것과 같은 것을 실험 할 수 있다고 생각했습니다. 다음 단어에.
헬무트 란다

답변:


173

시험 $ vimtutor . 시작하는 데 필요한 모든 것을 알려줍니다.

hjkl 적어도 제 경우에는 빙산의 일각이며 거의 사용되지 않습니다.

wWEe그리고 BbgegE모두 단어 단위로 이동할 수 있습니다.

  • w그리고 e앞으로 이동 WE계정에 공백 및 구두점을

    " here the * marks the default location of the cursor
    " and each letter shows where you jump when you hit the key.
    
    Latin: Lorem ipsum dolor sit amet.
                       *   e   e    e
                       *   E   E     E
    *    w w     w     w     w   w   w
    *      W     W     W     W   W   W
    
  • b그리고 ge뒤로 이동, BgE계정으로 공백 및 구두점을

    Latin: Lorem ipsum dolor sit amet.
    b    b b     b     *
    B      B     B     *
         ge    ge    ge*
        ge
         gE    gE    gE*
    

fFtT특정 문자의 손이 닿지에 사용되는 현재의 라인;,에 대해 같은 방향으로 그 동작을 반복하는 데 사용되는 ;반대의 방향에서 ,:

  • fm다음 m앞으로 점프 , F뒤로 이동

    Latin: Lorem ipsum dolor sit amet.
    *          fm    ;            ;
               ;     Fm          *
    
  • tm다음 m앞으로 이동 , T뒤로 이동

    Latin: Lorem ipsum dolor sit amet.
    *         tm    ;            ;
              ;     Tm           *
    

/? 현재 커서 위치에서 패턴의 첫 번째 발생으로 이동하는 데 사용됩니다.

  • /pattern 앞으로 나아 간다

    Latin: Lorem ipsum dolor sit amet.
    *            /ips
    
  • ?pattern 뒤로 이동

    Latin: Lorem ipsum dolor sit amet.
    ?Lat             *
    

0$ 줄의 첫 번째와 마지막 문자로 이동하는 데 사용됩니다.

    (whitespace)Latin: Lorem ipsum dolor sit amet.(whitespace)
    0                  *                                     $

^g_ 줄의 첫 번째 및 마지막 인쇄 가능한 문자로 이동하는 데 사용됩니다.

    (whitespace)Latin: Lorem ipsum dolor sit amet.(whitespace)
                ^      *                         g_

단일 및 결합 ()[]{} 은 구문별로 또는 단락별로 또는 코드 블록별로 코드 블록을 이동하는 데 사용됩니다.

<C-b><C-f> 전후 화면을 스크롤하는 데 사용된다.

<C-u><C-d> 전후 반 화면 스크롤하는 데 사용된다.

H, ML 커서를 뷰포트의 상단, 중간, 하단으로 각각 이동합니다.

zt, zz 하고 zb커서 아래의 선을 각각 뷰포트의 상단, 중간, 하단으로 이동합니다.

등등.

:help motion.txt 당신의 마음을 날려 버릴 것입니다.


17
나는 일반적으로 이것을하지 않지만이 의견은 이것이 훌륭한 대답이라는 것을 알려줍니다!
jojo

어떤 이유로 H, M 또는 L을 사용한 적이 없었습니다.
Chris

그 추가 ]}[{끝에 (2 키 입력) 점프를하거나 (범위의 시작으로 정의 예를 들어, 한{ ... }
마태 우

3
글쎄, 이것은 여전히 ​​OP의 질문에 실제로 대답하지 않습니다 how to jump to a line he's seeing like using a mouse. 나는 당신이 항상 언급 한 모든 키 바인딩을 알고 사용합니다. 그러나 먼 거리에서 점프 할 때 마우스를 가리키는 것만 큼 효율적이지 않습니다.
Penghe Geng

예 H, M, L은 쉽게 기억할 수 있습니다 : 높음, 중간, 낮음;)
@Chris

25

vim의 모션 명령 외에도 vim 플러그인이 있습니다. EasyMotion 이 탐색에 매우 유용하다는 것을 알았습니다. vimperator 또는 pentadactyl에 익숙하다면 EasyMotion은 힌트 모드를 vim으로 다시 가져옵니다. 여기 에 애니메이션 데모가 있고 여기 에 비디오 튜토리얼이 있습니다. 도움이 되었기를 바랍니다.


easymotion의 장점은 3 번의 키 입력만으로 화면 어디든 갈 수 있다는 것입니다.
Xavier T.

+1 : EasyMotion은 Vim의 움직임을 보여주는 제트 팩입니다. (. 그런데, PreciseJump 너무 사실, EasyMotion는 PreciseJump의 아들)
드미트리 프랭크

2
어떻게 EasyMotion의 작성자가 데모에서이 멋진 상태 표시 줄을 얻었습니까?
Cyrille

1
'Super awesome status line'은 'Powerline'이라는 플러그인입니다. 여기 : vim.org/scripts/script.php?script_id=3881
DEzra

애니메이션 데모 URL을 업데이트 해 주시겠습니까? 그것은 더 이상 작동하지 않습니다
brauliobo

20

vim에서 이동하는 방법은 무수히 많습니다. 이것은 정말 강력한 영역 중 하나입니다. 나는 그 방향으로 다음 빈 줄로 위아래로 움직이는 {and }많이 사용 합니다.%모든 종류의 일치하는 대괄호로 앞뒤로 이동할 때 유용합니다. WB 는 "단어"앞으로 다시 이동합니다.

Vim 매뉴얼 의 이동 섹션을 검토하는 것이 좋습니다 .


4
아마도 언급 할 가치가있는 것은 각각 Ctl + U 및 Ctl + D를 사용하여 페이징 업 및 다운하는 것입니다.
Nick

10

vim은 마우스를 지원합니다! 이것을 시도해보십시오 (.vimrc에서) :

set mouse=a

사이드 노트 : 화면 사용자로서 저는

set ttymouse=xterm2

이것이 작동하도록.


4
알아두면 좋겠지 만 마우스 없이도 완벽한 빠른 탐색을 계속해서 찾을 것입니다.
Helmut Granda

9

개인적으로 사용하는 것을 선호합니다 :

"/<chars><enter>" to quickly move to somewhere   ( extremely fast! trust me! )
":<number>" to go to some line, 
"ctrl + f/b" to forward/back
"g;" to move to the last editing place.
"w/b" to move by word
"jklh" to move your cursor to the exact position

5

옵션 relativenumber( : help relativenumber-Vim 7.3에 포함됨 )을 사용하면 a [count]k또는 [count]j움직임으로 눈 밑의 라인에 도달 할 수 있으며 , ftweb@romainl에서 설명한 것과 같은 움직임으로 현재 라인에서 이동할 수 있습니다 .


훌륭한 옵션. easymotion보다 빠릅니다.
Penghe Geng

5

외에도에서 {, }, (, ), <number>cb, <number>cB, <number>cW그리고 %, 나는 그런 탐색 기술을 사용 :

  • ciw, diw( ciW, diW). 등 커서 아래에있는 단어를 빠르게 편집 / 삭제 (공백이 아닌 문자 포함)
  • ci(, ci"( ca(, ca") 등을 사용하여 괄호, 따옴표 (괄호, 따옴표 포함)를 빠르게 편집 할 수 있습니다. 동일하게 적용됩니다d .
  • 대문자로 표시하여 전역 (파일 간) 및 영구적으로 (버퍼가 닫힐 때) 설정합니다. 예를 들어, 명령 으로 사용할 수있는 mA글로벌 마크 A를 생성합니다 'A(또는`A 열을 존중하기 위해).
  • gf 커서 아래의 파일로 빠르게 이동
  • f, t( F, T)는 문자 오른쪽 (왼쪽) 앞의 문자로 이동합니다 ( ;반복 할 때 사용 ). 이는 dc명령 ( .반복 하는 데 사용) 에 특히 유용합니다 .
  • ^]태그 ^T로 이동하고 뒤로 이동합니다.

그리고 다른 많은 이동 방법 :)

자세한 내용은 http://www.thegeekstuff.com/2009/03/8-essential-vim-editor-navigation-fundamentals/ 를 확인하십시오 .

PS Rails 사용자에게는 매우 유용한 rails-vim 플러그인이 있습니다.


3

이것은 주요 내비게이션 명령을 배우기에 좋은 곳입니다. vim의 힘 / 속도 중 일부는 동작과 동작의 조합에서 비롯됩니다. 즉 cw-> 단어 변경, d10j-> 10 줄 아래로 삭제 등입니다. 또한 이것이것은 흥미로운 읽기입니다.


2

당신은 할 수 있습니다 :set nohlsearch검색 문자의 강조 표시를 끌 .

나는 ctags를 많이 사용하여 탐색합니다.


github.com/richoH/dotfiles/blob/master/vimrc 거기에서 다른 유용한 것들을 찾을 수 있습니다.
richo

팁을 주셔서 감사합니다. 귀하의 vimrc를 살펴보고 이메일이나 문서를 작성할 때 80 자에 도달하면 해당 줄을 강조 표시하도록 설정 한 메모를 찾았습니다. VIM으로 이메일을 작성하는 이유는 무엇입니까? 개인적인 용도로 문서를 이해할 수 있지만 이메일에 대해서는 잘 모르겠습니다.
Helmut Granda

나는 대부분의 이메일을 읽고 쓰기 위해 mutt + vim을 사용합니다. 또한 vim에 많은 웹 콘텐츠를 작성하기 위해 it 's all text 플러그인을 사용합니다. 전자 메일에는 자동 줄 바꿈이 설정되어 있지만 링크 등의 경우 형식이 올바르지 않거나 중첩 된 따옴표가 너무 길면 미리 알림을 보내는 것이 유용 할 수 있습니다.
richo

0

초고속 탐색을 염두에두고 플러그인을 작성했습니다.

https://github.com/anschnapp/move-less

( h j k l-keys) 로 스크롤하여 편하게 홀 파일을 검색 할 수 있습니다 . 홀 사이트를 스크롤하는 동안에는 커서 위치를 변경하지 않습니다 (폴딩 트릭 기반). 검색을 중단하면 시작한 곳에서 바로 검색 할 수 있습니다.

초고속 탐색을 위해 내 플러그인을 사용하여 화면에서 대상 위치를 얻은 다음 easymotion을 통해 올바른 위치로 점프하는 것이 좋습니다 (이미 다른 답변에서 권장 됨).

https://github.com/easymotion/vim-easymotion

당신이 모두 결합하면 당신도 점프 역사의 진보를 취할 수 있으며, 당신은 당신의 기원과 단순히 통해 목표 대상간에 이동할 수 있습니다 <c-o><c-i>.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.