나는 종종 vim의 새로운 줄에 물건을 붙여 넣어야합니다. 내가 보통하는 일은 :
o<Esc>p
새 줄을 삽입하고 삽입 모드로 전환하여 삽입 모드를 종료하고 마지막으로 붙여 넣습니다.
세 번의 키 입력. 매우 효율적이지 않습니다. 더 나은 아이디어가 있습니까?
나는 종종 vim의 새로운 줄에 물건을 붙여 넣어야합니다. 내가 보통하는 일은 :
o<Esc>p
새 줄을 삽입하고 삽입 모드로 전환하여 삽입 모드를 종료하고 마지막으로 붙여 넣습니다.
세 번의 키 입력. 매우 효율적이지 않습니다. 더 나은 아이디어가 있습니까?
답변:
:help p그것이 말한 직후 :
:[line]pu[t] [x] Put the text [from register x] after [line] (default
current line). This always works |linewise|, thus
this command can be used to put a yanked block as
new lines.
:[line]pu[t]! [x] Put the text [from register x] before [line]
(default current line).
불행히도 다른 답변에서 제안한대로 키보드 맵과 결합하지 않으면 현재 솔루션보다 짧지 않습니다. 예를 들어, 아무 키나 (조차 p) 매핑 할 수 있습니다 .
:nmap p :pu<CR>
:pu[t]현재 줄 뒤에 :pu[t]!텍스트를 새 줄에 넣고 현재 줄 앞에 텍스트를 새 줄에 넣습니다. 이에 따라 답변을 편집하겠습니다. (Hooray for :help p.)
:nmap p :pu<CR>.vimrc 파일에 넣고 끄십시오. :)
옵션 :
1) yy전체 줄을 잡아 당기려면 사용하십시오 (줄 끝 문자 포함). p그런 다음 현재 줄 다음에 줄을 붙여넣고 P( Shift- P) 현재 줄 위에 붙여 넣습니다.
2) 매핑을하십시오. 그러면 하나 또는 두 개의 키 일뿐입니다.
:nmap ,p o<ESC>p
:nmap <F4> o<ESC>p
3) 매핑의 함수 버전 (실제로 불필요하지만 완전성을 위해) :
:nmap <F4> :call append(line('.'), @")<CR>
" This one may be a little better (strip the ending new-line before pasting)
:nmap <F4> :call append(line('.'), substitute(@", '\n$', '', ''))<CR>
:help let-register
:help :call
:help append()
:help line()
:help nmap
붙여 넣을 버퍼 <C-R>이름을 사용하여 삽입 모드 에서 버퍼를 붙일 수 있습니다. 기본 버퍼는입니다 ".
o<C-R>"
나는 <C-R>"매우 자주 사용하고 그것을 <C-F>내 vimrc에 묶은 것을 발견했다 .
inoremap <C-F> <C-R>"
이것은 여전히 세 번의 키 입력을 사용하지만 Esc보다 쉽습니다.
o<Alt-p>
o를 누른 후 삽입 모드에 있으므로 Alt 수정자를 사용하면 명령을 사용하지 않은 것처럼 사용할 수 있습니다.
이 플러그인 사용 : https://github.com/tpope/vim-unimpaired
]p아래 줄에 붙여 넣기
[p위 줄에 붙여 넣기
장점 :
tpope/vim-unimpaired이것이 작동하기 위해서는 당신이 필요하다고 언급 할 가치가 있습니다 .
개인적으로 다음과 같이 Enter (CR)를 사용했습니다.
nmap <CR> o<Esc>k
이렇게하면 일반 모드에서 직접 줄 바꿈을 할 수 있으며 아래의 줄 바꿈에 붙여 넣기를 원합니다.
<CR>jp
Enter 에서 선호하는 기능에 따라 위의 nmap에서 k 를 건너 뛸 수 있으므로 그냥<CR>p .
나는 또한 jj를 Esc에 이식 했는데이 경우에도 도움이 될 것입니다. Esc 가 vim에서 얼마나 중요한지 홈 행에서 너무 멀리 떨어져 있습니다.
다른 솔루션보다 짧지는 않지만 일부 솔루션보다 덜 울퉁불퉁하다고 생각하며 다른 용도도 있습니다.
전체 줄을 복사 한 다음 전체 줄을 붙여 넣는 Y경우 먼저 줄 바꿈을 포함하여 줄을 잡아 당겨 p붙여 넣습니다. 비주얼 모드의 일반과 달리 V비주얼 라인 모드 인을 사용할 수도 있습니다 v.
나는 이것에 대한 우아한 해결책을 찾았습니다. yank 레지스터를 OS의 클립 보드에 넣는 경우 (어쨌든 좋습니다)
set clipboard+=unnamed
당신이 할 수있는 것보다 o<Ctl-v>.
적은 획일 o<Esc>p뿐 :pu아니라 들여 쓰기를 유지하기 때문에 두 가지 모두에서 향상됩니다 . 다른 옵션은 모두 새 줄에서 문자 0부터 시작합니다.
주의 사항은 OS에 따라 다를 수 있습니다. 내가 아는 전부는 최신 버전의 OS X에서 작동한다는 것입니다. 그러나 클립 보드는 OS 클립 보드에 얽매이는 많은 방법 중 하나 일뿐입니다.
삽입 모드로 종료하려면을 사용하여 삽입 모드에서 붙여 넣을 수도 있습니다 CTRL-R ". https://stackoverflow.com/a/2861909/461834
여전히 세 번의 키 입력이 있지만 이스케이프되지 않고 삽입을 끝내려면 키 입력을 저장하십시오.