Vim에서 두 줄을 어떻게 바꾸나요?
나는 이것을 가지고있다:
pick 887b66f add 222 Dziewiecsil to flowers new title
pick dc331cb new name of beginning commit
그리고 나는 이것을 얻고 싶다.
pick dc331cb new name of beginning commit
pick 887b66f add 222 Dziewiecsil to flowers new title
키보드 단축키를 사용하여이 작업을 빠르게 수행 할 수있는 방법이 있습니까?
현재 행을 다음 행으로 바꾸려면 ddp
명령 모드에서 입력 하십시오.
- dd-줄을 삭제하고 (실제로 다른 편집기에서는 cut이라고 함) 레지스터에 저장
- p-레지스터에서 줄 붙여 넣기
dd
현재 줄을 삭제 한 다음을 사용하여 제거 된 줄을 붙여 넣을 수 있습니다 p
. 사용하는 다른 방법이 있습니다 m
. 으로 m
당신은 즉, 주변의 라인을 이동할 수 있습니다
:m 1
현재 행을 1 행 뒤로 이동합니다.
:m 0
현재 줄을 맨 위로 이동합니다.
:m $
현재 줄을 맨 아래로 이동합니다.
귀하의 예에서 커서를 첫 번째 줄에 놓고 다음을 입력하십시오. :m $
추가 정보 : http://vim.wikia.com/wiki/Moving_lines_up_or_down
질문이 꽤 오래되었고 답변으로 표시 되었음에도 불구하고 Sven Marnach에서 다음 과 nnoremap
같이 제공 한 일반 모드 명령을 사용할 수 있다고 말하여 답변을 확장하고 싶습니다.
:nnoremap <C-Up> <Up>ddp<Up>
:nnoremap <C-Down> ddp
이렇게하면 파일 내에서 Ctrl+ Up및 Ctrl+가 Down있는 행을 이동할 수 있습니다. 그러나 이것은 @"
마지막으로 복사 한 문자열 / 단어 / 문자 / 등을 저장하는 레지스터 를 덮어 씁니다 . 따라서 앞에 "(reg) dd
와 p
명령 을 추가 하여이 문제를 해결할 수 있습니다.
:nnoremap <C-Up> <Up>"add"ap<Up>
:nnoremap <C-Down> "add"ap
여기에서 "a
삭제하기 전에 명령을 추가 하고 @a
레지스터에 우리 줄을 저장 하므로 기본 복사 레지스터를 덮어 쓰지 않습니다. 그러나 @a
레지스터의 내용을 덮어 쓸 수 있습니다 (누가 알고 있지만 유스 케이스에서 중요한 일에 사용할 수 있지만이 단계는 편집증이므로 원하는 경우 건너 뛸 수 있습니다).
:nnoremap <silent><C-Up> :let save_a=@a<Cr><Up>"add"ap<Up>:let @a=save_a<Cr>
:nnoremap <silent><C-Down> :let save_a=@a<Cr>"add"ap:let @a=save_a<Cr>
( <silent>
우리의 명령이 하단의 메시지 라인에 반향되는 것을 방지하기 위해 필요합니다.)
이제 키보드 단축키를 사용하여 파일 내에서 줄을 이동할 수있는 두 개의 매핑이 있습니다. 당신은 버튼을 다시 정의 할 수 있습니다, 내가 사용 Alt+ j/ k이 될 것이다, <A-j>
그리고 <A-k>
그 명령에 대해. 그러나 모든 터미널 에뮬레이터가 Alt 키 매핑 AFAIK를 지원하는 것은 아닙니다.
참고 URL : https://stackoverflow.com/questions/28178239/how-do-i-swap-two-lines-in-vim
'program story' 카테고리의 다른 글
pycharm을 사용한 대화 형 쉘 디버깅 (0) | 2020.10.26 |
---|---|
Math.max.apply ()는 어떻게 작동합니까? (0) | 2020.10.26 |
jQuery에서 일치하는 요소의 요소 유형을 어떻게 확인할 수 있습니까? (0) | 2020.10.26 |
COUNT (*)해야합니까? (0) | 2020.10.26 |
파이썬에서 -0400 시간대 문자열로 날짜를 구문 분석하는 방법은 무엇입니까? (0) | 2020.10.26 |