저는 vim을 처음 접했기 때문에(현재 vim을 사용하고 있습니다 nvim
) 저의 지식 부족을 용서해 주십시오. 많은 질문이 저와 유사하지만 정확히 동일하지는 않습니다.
나는 이것을 원한다:
vim
기본값은 시스템 클립보드가 아닌 버퍼에 잘라내기/복사하는 것입니다.vim
다른 레지스터(내 생각에는 그렇다면+
정정해 주세요*
!)는 시스템 클립보드로 이동해야 합니다.
나는 몇 가지 조사를 해봤지만 (지금까지) 아무 것도 효과가 없었습니다.
정보:
- 제가 사용하는 것은 이렇게 버퍼
tmux
에 밀어넣는 것 입니다.tmux
- 집에 없어서 지금 사용하고
termux
있어요termux-clipboard-get/set
내 상황에 효과가 있다고 생각하는 방법은 다음과 같습니다.
let g:clipboard = {
\ 'name': 'TmuxTermux',
\ 'copy': {
\ '*': ['tmux', 'load-buffer', '-'],
\ '+': ['termux-clipboard-set'],
\ },
\ 'paste': {
\ '*': ['tmux', 'save-buffer', '-'],
\ '+': ['termux-clipboard-get'],
\ },
\ 'cache_enabled': 1,
\ }
이제 잘라내기/복사할 때 tmux
버퍼가 vim
콘텐츠를 공유합니다. 완벽합니다! (거의...) +
그러나 시스템 클립보드를 사용하기 위해 버퍼를 사용할 수 없습니다. "+"를 누르면 커서가 한 줄 아래로만 이동하고 위의 순서를 바꾸면( 대신 termux-clipboard-get/set
레지스터 만들기 ), 누르면 커서가 있는 단어의 모든 인스턴스가 강조 표시됩니다.*
+
*
읽으면서 나는 다음을 기대합니다.
- 기본적으로 레지스터가
vim
사용되는데*
, 이는tmux
버퍼 에 성공적으로 등록dd/yy
하고 붙여넣기p
(또는tmux
내[PREFIX]+[p]
- 다른 레지스터(시스템 클립보드)에 잘라내기/복사/붙여넣기를 원할 경우 붙여넣기 (심지어 )를
+
사용 하지만 작동하지 않습니다.+dd/+yy
+p
*dd/*yy/*p
질문:
위와 같이 +
커서를 한 줄 아래로 이동하고 이를 Register 로 변경할 때 현재 단어와 해당 단어가 나타나는 다른 항목을 강조 표시합니다 *
.*
더 많은 경험이 있는 분들에게 사과드립니다. 방금 겪었습니다 emacs
(아주 아프네요! :)
답변1
저는 vim과 tmux를 사용하고 있으며 시스템 클립보드로 작업하고 있습니다. 다음이 있습니다.
" copy and paste with clipboard
" paste from system CTRL-C clipboard
nnoremap <Leader>p "+p
" paste from system highlighted clipboard
nnoremap <Leader>P "*p
" copy contents of unnamed register to system CTRL-C clipboard
nnoremap <silent><Leader>y :call Preserve("normal! Gp\"+dGu")<cr>
\ :echo 'copied to CTRL-C clipboard'<cr>
" copy contents of unnamed register to system highlghted clipboard
nnoremap <silent><Leader>Y :call Preserve("normal! Gp\"*dGu")<cr>
\ :echo 'copied to highlight clipboard'<cr>
<Leader>y 및 <Leader>Y를 사용하면 vim의 이름 없는 레지스터에서 시스템 클립보드로 내용을 가져올 수 있습니다. 이 두 가지 재맵핑은 다음 함수에 의존합니다(.vimrc에서 재맵핑하기 전에 나타나야 합니다:
" run a command, but put the cursor back when it's done
function! Preserve(command)
" Preparation: save last search, and cursor position.
let _s=@/
let l = line(".")
let c = col(".")
" Do the business:
execute a:command
" Clean up: restore previous search history, and cursor position
let @/=_s
call cursor(l, c)
endfunction
참고로 저는 다음 사항을 테스트하는 데 많은 시간을 소비하지 않았지만 (Linux) 호스트와 호스트(클라이언트가 아님)의 tmux 세션에 ssh를 연결할 때 이러한 재매핑이 가끔 발생한다는 사실을 발견했습니다. 호스트 vim의 이름 없는 레지스터에서 데이터를 검색할 수 있는 것 같습니다. 클라이언트의 시스템 클립보드에 복사됩니다(그 반대도 마찬가지). 이렇게 행동하는 게 좋은데 가끔 두 사람이 말을 안 하는 경우가 있는데 왜 그런 건지 모르겠어요.
어쨌든 누군가에게 도움이 되길 바랍니다!