Vim에서 삭제 후 새 줄없이 붙여 넣기


11

vim에서 여러 번 줄을 완전히 삭제하고 싶기 때문에 dd를 사용합니다. 그러나 그런 다음 해당 줄을 줄 내의 다른 위치에 붙여 넣을 필요가 있지만 붙여 넣기 전에 줄 바꿈을 삽입하므로 원하는 결과를 얻는 것이 매우 어렵습니다. 예를 들어

while( pasteInHere )
{
    cin >> n; // Delete this line completely with dd
}

위의 코드 로이 작업을 수행하면 다음과 같은 결과가 나타납니다.

while( pasteInHere )
cin >> n; // Delete this line completely with dd
{
}

내가 원하는 결과와는 거리가 멀다 ...이 줄 바꿈 동작을 억제하거나 다른 방법으로 매우 효율적으로 사용할 수 있습니까? 줄의 시작 부분으로 가야하기 때문에 d $가 좋지 않다고 생각하지만 빈 줄도 삭제하려면 다른 레지스터에서 삭제해야합니다. 더 쉬운 방법이 있어야한다고 생각합니다! 감사.



1
그것은 내가 더 효율적인 방법은 다음 또한 내가 실제로 개행 문자로 전체 라인 .... 줄뿐만 아니라 내용을 제거 할 라인의 시작에 가고 싶은 말했듯이, 중복되지 않습니다
fYre

아, 지금 무슨 말인지 알 겠어 당신이 성취하려고하는 것이 나에게 분명하지 않았습니다.
EvergreenTree

1
0D줄 바꿈을 제외한 줄을 삭제하십시오. 그리고 gJ라인을 결합하는 것보다 . 이제 빈 줄없이 줄 바꿈없이 텍스트를 넣을 수 있습니다.
Alex Kroll

답변:


9

삭제하려는 줄 위의 줄로 이동 한 다음 원하는 지점 을 눌러 JD붙여 넣을 수 p있습니다.

  • J두 줄을 연결하고 삭제하려는 텍스트의 시작 부분으로 이동합니다. 줄 바꿈 문자와 이동하려는 줄 들여 쓰기가 삭제됩니다.
  • D 현재 커서 위치에서 줄 끝까지 삭제하지만 줄 바꾸기 문자는 유지합니다.

힌트 : 당신이 사용할 수있는 :pu당신이 삭제 한 경우 D또는에 빠지게 y$하고 붙여 넣을 와 함께 새로운 라인.


3

더 간단하지는 않지만 약간 더 효율적이며 두 시퀀스 모두에 대해 노멀 모드 맵을 만들 수도 있습니다.

  • yanking : 이동하려는 라인으로 이동 한 다음 ^D"_dd
  • 붙여 넣기 : 바꾸려는 단어로 이동 한 다음 viwp

2

와 잘 작동하는 것을 얻을 수 있습니다 imap. 에 다음을 추가하십시오 vimrc.

inoremap <c-a> <c-r>1<esc>k$Jxi

이렇게하면 CTRL-a마지막으로 삭제 된 텍스트를 붙여 넣을 수있는 매핑이 만들어 dd집니다. 원하는 경우 매핑에 다른 키를 사용할 수도 있습니다.

참고 문헌 :

:h i_CTRL-R
:h quote1
:h J

1

이것은 나에게도 조금 올라 와서 전에 최적화하지는 않았지만이 매핑은 작동합니다.

nmap dil ^d$

dil"라인 삭제"와 유사하다에 diw, di"


1

줄 바꿈없이 붙여 넣기

이것을 .vimrc 파일에 넣으십시오.

" Paste yanked line without line breaks before/after cursor position
nnoremap gP i<CR><Esc>PkJxJx
nnoremap gp a<CR><Esc>PkJxJx

예:

<span style="color:">danger</span>

이제 커서가 표준 모드 에 있는 동안 gp입력 #D51B3F한 후 입력 할 수 있습니다 .color::

줄 바꿈이없는 양크

flukus의 답변을 사용하십시오.

" Delete current line without yanking the line breaks
nnoremap dil ^d$

내부 줄 삭제의 약어로 . 이것은 또한 들여 쓰기를 제거합니다.


0

를 눌러 복사 할 텍스트를 선택한 다음를 v눌러 버퍼에 y넣은 다음 아무 곳이나 붙여 넣을 수 있습니다 p. 새로운 줄을 삽입하지 않습니다.


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