Vim에서 줄 끝으로 어떻게 이동합니까?


1192

일반적으로 명령 모드에서 특히 줄로 이동하는 방법을 알고 있습니다. 그러나 현재 현재 줄의 끝으로 이동하는 명령은 무엇입니까?


19
10 분 미만의 기본 vim 명령
다루기

14
Vimtutor를 통해 몇 분을 보내는 데 무엇이 문제입니까? 이미 Vim 설치의 일부이며 기본 사항을 보여줍니다.
dash-tom-bang

@ dash-tom-bang 글쎄, 그들은 여기에서 꽤 높은 점수를 얻었습니다 ... :) 네, 맞습니다 vimtutor. 아마 그들은 몰랐 을까요?
Pryftan

답변:


2050

그냥 $ (달러 기호) 키를 누릅니다. A줄 끝으로 이동하고 편집 모드 (추가)로 전환하는 데 사용할 수 있습니다 . 공백이 아닌 마지막 문자로 이동하려면 g다음 _키를 누를 수 있습니다 .

그 반대 AI(라인 시작 부분에 삽입 모드)입니다. 를 누르면 ^커서가 줄의 첫 번째 공백이 아닌 문자에 놓입니다.


81
마지막으로 비 비어로 이동g_
SergioAraujo

2
g_빈 문자를 포함하지 않기 때문에 변형 이 더 유용 할 때가 있습니다
rogercampos

6
_g 변형은 비주얼 모드에서 작업 할 때 실제로 유용합니다. 끝에 줄 바꿈없이 줄을 사용할 수 있기 때문입니다.
Greg Robbins

2
홈 및 최종 키가 일반 키보드에 작업하는 동안 당신은 노트북 :) 사용할 때, $는 및 ^이 필요하다
스리 Sarnobat

^를 목록에 추가해야합니다.
Tek

304

많은 사람들이 말했듯이 :

  • $ 줄의 끝으로 당신을 가져옵니다

또한 :

  • ^또는 _공백이 아닌 첫 번째 문자로 이동합니다.
  • 0(0)은 줄의 시작 부분으로 이동합니다. 공백

나는 알았다 | 우리를 줄의 시작으로 데려가지만 나는 0을 알지 못했습니다. 그래서 0과 | 정확히 같은 일을하세요
Kamran Bigdely

8
@kami : 설명이 다르지만 동일하게 작동하는 것으로 보입니다. 그러나 파이프 |명령은 개수를 계산할 수 있습니다 (예 : 3 | 세 번째 열로 이동합니다.
Paul Ruane

136
  • $ 줄의 마지막 문자로 이동합니다.
  • g _ 공백이 아닌 마지막 문자로 이동합니다.

  • g $ 화면 라인의 끝으로 간다 (버퍼 라인이 여러 화면 라인에 걸쳐있을 때)


저는 g_가 $ b와 같은 느낌입니다
Dave Aaron Smith

3
@DaveAaronSmith : b전혀 같지 않은 이전 단어의 시작 부분으로갑니다. 대략와 같습니다 $ge.
Paul Ruane

9
내가 사용 _하고 g_같은 시각 /를 확 잡아 당기는 위해 $도 복사합니다 / 새로운 라인 (LN) 문자를 삭제합니다.
어니스트

나를 위해 $는 현재 스크린 라인의 끝으로 간다 (포장시). 나는 그 이유를 알아낼 수 없었다. g_내가 실제로 줄의 끝을 찾은 유일한 방법입니다.
ezuk

@ezuk $는 나를 감싸 줄 때조차 줄의 끝으로갑니다. 나는 그 행동을 조정할 설정이 없다는 것을 알고 있습니다. 아마도 .vimrc에 의해 다시 매핑 g$되었습니까?
Paul Ruane

66

주요 질문-줄의 끝

$ 줄의 끝으로 가고 명령 모드를 유지합니다.

A 줄 끝으로 가고 삽입 모드로 전환

반대로-줄의 시작 (기술적으로 첫 번째 공백이 아닌 문자)

^ 줄의 시작으로 이동하고 명령 모드를 유지합니다.

I (대문자 i) 줄의 시작으로 이동하고 삽입 모드로 전환

추가-줄의 시작 ( 공백에 관계없이 기술적으로 첫 번째 열 )

0 영 (0)은 줄의 시작으로 이동하고 명령 모드를 유지합니다.

0i (0 뒤에 소문자 i)가 줄의 시작으로 이동하고 삽입 모드로 전환

vi를 배우기 시작하는 사람들을 위해 전형적인 Windows GUI 편집기 커서 이동 및 단축키에 대한 vi 명령을 나열하여 vi에 대한 좋은 소개가 있습니다.

Windows 사용자를위한 vi 편집기


3
에 아날로그은 I하지 않습니다 0^, 두로 I^처음으로 이동 비 공백의 줄의 문자하지만 0(그 이름에서 알 수 있듯이) 0 열로 이동합니다.
wchargin

@ wchargin 사실, 아날로그가 무엇인지 알 수 없다고 생각 0했습니까? (행의 첫 번째 문자 (= 열 0)로 이동하여 삽입 모드로 이동)
franssu

@ franssu : 내가 아는 유일한 것은 0i입니다. :-)
wchargin

@wchargin-기술적 정확성에 감사드립니다. 게시물을 업데이트했습니다.
ap-osd

42

현재 줄이 보이는 화면 주위를 다음 줄로 줄 바꿈하는 경우 g $ 를 사용 하여 화면 줄 끝까지 갈 수 있습니다 .


3
방금 g make vim을 사용하여 위쪽 및 아래쪽 명령 앞에 선을 추가하는 대신 커서를 화면 기반으로 이동시키는 것을 발견했습니다 . 즉, gjgk를 사용하면 긴 줄에서 위아래로 이동할 수 있습니다. 정말 유용합니다.
Druckles

1
또한 gw를 입력하면 jk가 영구적으로 이와 같이 작동하는 것으로 보입니다 . 어떻게 또는 왜 확실하지 않습니다. 누구든지 이것을 설명 할 수 있습니까?
Druckles

4
@Druckles는 : A는 늦은 응답의 비트,하지만 여전히 궁금해하는 경우 (또는 다른 사람이이 독서 경우) gwgq있는 명령이 다시 포맷의 텍스트입니다. ( :h gw및 참조 :h gq) gw{motion}화면 라인이 실제 라인과 일치하도록 텍스트를 변경하고 변경 한 것 같습니다 .
pandubear


13

많은 경우에, 우리가 문자열 안에있을 때 큰 따옴표로 묶거나 문장을 작성할 때 escape를 누르고 화살표 키로 해당 줄의 끝으로 이동하고 세미콜론 ( ;) 을 눌러 끝내기를 원하지 않습니다 라인. vimrc 파일 안에 다음 줄을 작성 하십시오.

imap <C-l> <Esc>$a

라인은 무엇을 말합니까? Ctrl + l을 일련의 명령에 매핑합니다. Esc(명령 모드), $(라인 끝), a(추가)를 한 번에 누르는 것과 같습니다 .


그거 고마워 나는 어떻게 나의 첫번째 기계와 didnt가 알고에 같은 라인의 끝으로 이동 나의 정력하려면 Ctrl-E 백을 추가하고자 한
tristanbailey

1
수락 된 답변에서 알 수 있듯이 A를 눌러 동일한 작업을 수행 할 수 있습니다.
trysis

4
@trysis 당신이 오해했다, 이것은 꽤 좋은 편집 모드에서 멀어지지 않습니다.
Marconi

2
네가 옳아. vim확실히 당신은 이런 것들로 훨씬 적은 시간에 훨씬 더 많은 일을 할 수 있습니다. @razorxpress, 사소한 조정 imap <C-l> <Esc>A은 Ctrl + l을 누르는 것과 Esc(삽입 모드 종료) A(줄 끝에 추가)와 동일합니다.
trysis

3
나는 이것을 관용적으로 표현하는 더 관용적 인 방법이 될 것이라고 생각한다inoremap <C-l> <C-o>A
bennyty

12

'End'키의 장점은 일반 모드와 삽입 모드에서 모두 작동한다는 것입니다.

'$'는 일반 / 명령 모드에서만 작동하지만 클래식 vi 편집기에서도 작동합니다 (vim을 사용할 수없는 경우 알 수 있음).


38
에 대한 인서트 모드는 무엇입니까?! 낮에는 평범한 괜찮은 시민이 없습니다. 거기에서 무슨 일이 일어나는지 아십니까? 코드가 사라집니다. 사라지고 다시는 들리지 않습니다.
Rook

3
삽입 한 후에는 삽입 모드를 유지하고 싶습니다. 불행히도 내 노트북에는 End 키가 없습니다. :(
ray

12

또한 line (또는 아마도 physical line)과 screen line 의 차이점에 유의하십시오 . 줄 끝 문자 ( "\ n")로 줄이 끝납니다. 화면 줄은 터미널이나 화면에서 한 줄의 문자로 표시되는 모든 것입니다. 화면 너비보다 긴 실제 줄이 있으면 둘이 분리되어 전자 메일을 작성할 때 매우 일반적입니다.

구별은 줄 끝 명령에도 나타납니다.

  • $그리고 0끝이나 각각의 물리적 라인 또는 단락의 시작으로 이동 :
  • g$그리고 g0각각 끝으로 이동하거나 화면 라인 또는 단락의 시작.

후자의 동작을 항상 선호하는 경우 다음과 같이 키를 다시 매핑 할 수 있습니다.

:noremap 0 g0
:noremap $ g$

1
공백이 아닌 마지막 공백을 얻는 방법? (스크린 라인이든 실제 라인이든)
Kamran Bigdely

g_물리 라인 의 마지막 비 공백입니다 . 스크린 라인은 어떻습니까?
trysis

10

A줄 끝에서 시작하여 편집 모드로 들어가려면 누릅니다 .


9

또는 확실한 대답이 있습니다. End키를 사용 하여 줄 끝으로 이동하십시오.


1
예, 맥 터미널은 키를 납치하여 터미널 내부에서 실행되는 물건으로 전달하지 않는 것으로 나타났습니다. Mac을 조금 사용할 때마다 나를 괴롭히는 것 중 하나입니다.
davr

vim을 사용하는 요점은 'End'와 같은 키를 사용할 필요가 없습니다. 절대로 줄을 떠나지 마십시오.
Jon Thoroddsen

7
Mac에는 End 키가 없습니다.
kenorb

1
@kenorb 의견을 게시했을 때가 있었지만 Apple은 수년 동안 기능을 제거하는 것을 좋아합니다. netdna.webdesignerdepot.com/uploads/2009/01/… 이것은 실제로 내가 가장 좋아하는 키보드 중 하나입니다.
davr

9

표준 터미널에서 vim을 사용하기위한 macbook 용 단축키를 볼 수 없습니다. 누군가에게 도움이되기를 바랍니다. macOS 사용자 (macbook pro 2018에서 테스트) :

fn+ -시작 줄로 이동

fn+ -끝줄로 이동

fn+ -페이지 위로 이동

fn+ -페이지를 아래로 이동

fn+ g -커서를 문서의 시작 부분으로 이동

fn+ shift + g -커서를 문서 끝으로 이동

마지막 두 명령의 경우 언젠가 두 번 탭해야합니다.


6

아마도 관련이 없지만 현재 줄 다음에 새 줄을 시작하려면 줄의 어느 곳에서나 o를 사용할 수 있습니다.


3

가장 쉬운 옵션은을 입력하는 것입니다 $. 텍스트의 블록으로 작업하는 경우, 명령을 인식 할 수 {}각각 앞으로 단락 다시 이동하기 위해서이다.


2

Mac에서 지원하지 않는 삽입 모드 (Windows에서 사용하고 Linux에서 사용)에서 줄의 시작과 끝으로 나를 데려가는 데 익숙했습니다. 원격 시스템에서 vim을 사용할 때 쉽게 할 수 없기 때문에 이것은 특히 성가신 일입니다. 약간의 고통스런 시행 착오 후에, 나는 .vimrc똑같은 일을하지만이 줄의 시작을 위해 Ctrl-A와 줄의 끝을 위해 Ctrl-D에 묶인 이 줄을 생각해 냈습니다 . (어떤 이유로 Ctrl-E는 예약되어 있거나 적어도 바인딩 방법을 찾지 못했습니다.) 즐기십시오.

:imap <Char-1> <Char-15>:normal 0<Char-13>
:imap <Char-4> <Char-15>:normal $<Char-13>

여기에 ASCII 제어 문자 코드에 대한 좋은 차트가 있습니다.

http://www.physics.udel.edu/~watson/scen103/ascii.html

Ctrl-V + Ctrl-도 수행 할 수 있지만 이와 같은 곳에 붙여 넣지는 않습니다.

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