Vim 하드 모드 미세 입자 이동


11

나는 최근에 Vim 하드 모드에 대해 알게되었고 그것을 사용하기로 결정했습니다. 그러나 미세한 입자 이동에 몇 가지 문제가 있습니다.

예를 들어, 한 줄 위로 또는 아래로 움직이고 싶다고 가정 해 봅시다. j그리고 k비활성화되어 있기 때문에 더 좋은 대안이 무엇인지 잘 모르겠습니다.

한두 문자를 오른쪽이나 왼쪽으로 옮기고 싶을 때도 같은 문제가 발생했습니다. 아무도 이러한 유형의 움직임을 어떻게 대체 할 수 있는지 알고 있습니까?

이것은 내가 사용하는 플러그인입니다 : https://github.com/wikitopian/hardmode .


어리석은 플러그인! 어떤 것이 든 사용하십시오.
romainl

나는 romainl에 동의합니다. 파일에서 효율적으로 탐색하는 방법을 배우는 것이 좋지만 이러한 종류의 플러그인을 자신에게 부과하는 것은 필요하지 않은 고통입니다. 아직도 당신은 여기 에 내 대답에 관심이있을 수 있습니다 (더 정확하게 /및에 대한 부분 ?.
statox

1
나는 여기에서 statox와 romainl에 정중하게 동의하지 않을 것입니다. 변경하려는 대상으로 직접 이동하면 전체 효율성이 크게 향상 될 수 있습니다. 예, 처음에는 속도가 느려질 수 있지만 장기적으로는 더 나은 탐색 기능을 사용하여 손실 된 시간을 보충 할 수 있습니다.
Archangel33

실제로 @ Archangel33 나는 다른 방법으로 더 정확하게 탐색 hjkl하는 것이 좋은 것 보다 사실이라는 사실에 대해 동일한 의견을 공유한다고 생각 합니다. 내가 비 승인 한 것은 플러그인 그 자체였습니다. 제 생각에 한 번에 한 번 탐색하는 새로운 방법을 배우는 것이 좋습니다 (동시에 동시에 모든 것을 배울 수는 없습니다). 필요한. 그것은 내 의견 일뿐입니다 : 하나는 동의하지 않을 권리가 있습니다 :-)
statox

1
@Alex 사실 제 의견은 제 개인적인 의견 일뿐입니다. 제가 마지막 문장이었던 이유는 유일하고 보편적 인 해결책을 가지고 있다고 생각하지 않을 것 That being said it is only my opinion: one has right to disagree입니다. 이제 논쟁은 끝이 없을 것입니다. 물론 어떤 사람들은 이런 종류의 플러그인을 사용하는 반면 다른 사람들은 좌절하고 학습에 해를 끼칠 것입니다. 당신이 그것에 대해 이야기하고 싶다면 나는 기꺼이 채팅에서 당신과 이야기 할 것이지만 우리는 이런 종류의 토론으로 질문에 대한 의견을 스팸으로
보내지 않아야합니다

답변:


17

이것들은 vim이 할 수있는 몇 가지 동작에 불과합니다.

TL; DR

  1. 사용 빔은에 도움말 기능을 기본적으로 제공 navigation또는 더 나은 아직usr_03.txt
  2. Google 검색 vim advanced movements
  3. 단어와 함께 / 말로 탐색
  4. 여기로 이동

동정

vim에서 돌아 다니는 방법에는 여러 가지가 있습니다. 검색하여 찾은 일부 vim advanced movements와 내가 항상 사용하는 일부를 나열 했습니다. 당신이 이것들의 대부분을 알고 있다고 확신하지만 당신이 생각하고 싶은 것은 탐색이라는 단어입니다.

라인 내에서 탐색 할 수있는 몇 가지가 있습니다.

  • 0 – 현재 행의 시작으로 이동하십시오.
  • ^ – 행의 첫 번째 비 공백 문자로 이동하십시오.
  • $ – 현재 행의 끝으로 이동하십시오.
  • g_ – 행의 마지막 비 공백 문자로 이동하십시오.

단어 탐색은 매우 유용 할 수 있습니다. 보다 세분화하려면 다음을 사용하여 단어와 관련하여 탐색해야합니다.

  • e – 현재 단어의 끝으로 이동하십시오.
  • E – 현재 WORD의 끝으로 이동하십시오.
  • b – 이전 (이전) 단어로 이동합니다.
  • B – 이전 (이전) WORD로 이동하십시오.
  • w – 다음 단어로 가십시오.
  • W – 다음 단어로갑니다.

단어는 일련의 문자, 숫자 및 밑줄로 구성됩니다. WORD는 공백으로 구분 된 일련의 공백이 아닌 문자로 구성됩니다. words | WORDS는 vim 설정에 따라 변경 될 수도 있습니다.

WORD와 단어의 차이점을 보여주는 예

192.168.1.1 단일 단어입니다.

192.168.1.1 일곱 단어입니다.

검색 동작도 매우 유용 할 수 있습니다.

  • /pattern – 다음에 나타나는 패턴을 검색하십시오. pattern
    • npattern커서 아래의 다음 일치로 이동합니다.
  • ?pattern– 이전에 나타나는 패턴을 검색하십시오 pattern.
    • Npattern커서 위의 다음 일치로 이동합니다.
  • * – 커서 아래에서 현재 단어의 다음 항목으로 이동하십시오.
  • # – 커서 아래에서 현재 단어의 이전 항목으로 이동합니다.
  • % – 코드 내에서 괄호 또는 괄호로 이동하십시오.

vim을 열기 전에도 명령 줄 Vim +N filename에서 파일을 연 후 N 번째 줄로 이동할 수 있습니다.

vim +10 /etc/passwd

Vim +/pattern filename파일이 첫 줄에 열립니다 pattern. 다음 예에서 vim은 README 파일을 열고 단어 "install"이 처음 나타나는 곳으로 이동합니다.

vim +/install README

Vim +?patten filename파일을 마지막으로 나타납니다 pattern. 다음 예제에서는 README 파일을 열고 단어 "bug"의 마지막 항목으로 이동합니다.

vim +?bug README


8

hardmode에 대한 대안으로, 다음 코드는 사용 할 수 있습니다 h, j, k, 그리고 l정상으로하지만 그들은 연속해서 사용하는 경우 경고 할 경고음을 생산하고 있습니다.

function! s:BeepOnRepeat(key)
    let count1 = v:count1

    if !exists('s:last_time')
        let s:last_time    = reltime()
        let s:repeat_count = 1
    else
        " increment the repeat count if `h`, `j`, `k`, or `l` was pressed
        " within the last second, otherwise reset it
        let now = reltime()
        if str2float(reltimestr(reltime(s:last_time, now))) < 1
            let s:repeat_count += 1
        else
            let s:repeat_count = 1
        endif
        let s:last_time = now

        " produce an audible beep if a sequence of `h`, `j`, `k`, and/or `l`,
        " greater than three, was pressed (within the repeat count time limit)
        if s:repeat_count > 3
            let savebelloff    = &belloff
            let savevisualbell = &visualbell
            let &belloff    = ''
            let &visualbell = 0
            execute "normal! \<Esc>"
            let &belloff    = savebelloff
            let &visualbell = savevisualbell
        endif
    endif

    execute 'normal! ' . count1 . a:key
endfunction

nnoremap <silent> h :<C-u>call <SID>BeepOnRepeat('h')<CR>
nnoremap <silent> j :<C-u>call <SID>BeepOnRepeat('j')<CR>
nnoremap <silent> k :<C-u>call <SID>BeepOnRepeat('k')<CR>
nnoremap <silent> l :<C-u>call <SID>BeepOnRepeat('l')<CR>

hjkl사용 제한에 대한 다른 접근 방법 은 vim-molasses를 참조하십시오 .


3

또는 여전히 "올바른 움직임"을 배우려고 시도 하는 중간 모드 를 사용 하지만 그렇게하는 것이 덜 엄격합니다.

중간 모드는 문자 별 동작을 제한하지만 완전히 비활성화하지는 않는 Vim 플러그인입니다. 기본적으로 중간 모드는 두 개의 연속 문자 방향 동작 만 허용합니다.


1

나는이 같은 문제가 있었고 :help hardmodeLo를 입력 하고 내가 봤다는 것을 보라.

'g:HardMode_level' If set to 'wannabe' 
arrow keys disabled, but not   hjkl etc.                                                                                              

그건 그렇고 나는이 플러그인이 실제로 마우스에서 멀어지기 때문에이 플러그인을 매우 유용하게 생각하는 vim 초보자 중 하나입니다.

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