1

Итак, я пытаюсь решить проблему получения содержимого дерганного регистра из сеанса SSH в Vim для перехода в буфер обмена Windows.

Вот сценарий:

  • SSH в среду разработки
  • Используйте Vim для редактирования файлов на сервере (не с локальным Cygwin Vim)
  • Текст янки

Что я хочу сделать, так это использовать встроенный /dev/clipboard в Cygwin, чтобы получить извлеченное содержимое, чтобы я мог начать делиться между ними.

Есть VimScript, чтобы сделать это локально (т. Е. У вас есть прямой доступ к /dev/clipboard):

function! Putclip(type, ...) range
  let sel_save = &selection
  let &selection = "inclusive"
  let reg_save = @@
  if a:type == 'n'
    silent exe a:firstline . "," . a:lastline . "y"
  elseif a:type == 'c'
    silent exe a:1 . "," . a:2 . "y"
  else
    silent exe "normal! `<" . a:type . "`>y"
  endif
  "call system('putclip', @@)
  "As of Cygwin 1.7.13, the /dev/clipboard device was added to provide
  "access to the native Windows clipboard. It provides the added benefit
  "of supporting utf-8 characters which putclip currently does not. Based
  "on a tip from John Beckett, use the following:
  call writefile(split(@@,"\n"), '/dev/clipboard')
  let &selection = sel_save
  let @@ = reg_save
endfunction

vnoremap <silent> <leader>y :call Putclip(visualmode(), 1)<CR>
nnoremap <silent> <leader>y :call Putclip('n', 1)<CR>

http://vim.wikia.com/wiki/Using_the_Windows_clipboard_in_Cygwin_Vim

То , что я хотел бы сделать , это посмотреть , если есть способ , которым я могу поговорить с Cygwin здесь, или если я могу scp содержимого (или что - то вдоль этих линий). Я не могу / не буду хранить пароли / парольные фразы, и в идеале я хочу, чтобы это было как можно более "прозрачным".

Кроме того, я запускаю это через tmux, если это открывает доступ где-либо. Не уверен, что это актуально, так как я только начал играть с tmux вчера (может быть, я чего-то не знаю).

Мысли?

2 ответа2

0

Хотя это не дает прямого ответа на ваш вопрос, это решение, которое я использую для того же сценария (ssh/tmux/vim).

Я рекомендую консольное окно Mintty Cygwin вместо стандартного. Это позволяет копировать и вставлять. В mintty, выделение левой кнопкой мыши также копирует и вставляет среднюю мышь.

Если у vim есть видимые номера строк, вам придется либо временно их отключить, либо я просто делаю cat в новом окне tmux.

http://cygwin.com/faq/faq.html#faq.using.copy-and-paste

0

Вот мое решение:

function! WinCpy ()
    let s:wincpy = exists('s:wincpy') ? !s:wincpy : 1

    if !s:wincpy
        :q
    else
        silent exec "normal \<C-w>S"
        silent exec "normal \<C-w>T"
        silent exec "set nonu"
        silent exec "set wrap"
    endif
endfunction


vnoremap <leader>y :call WinCpy()<CR>
nnoremap <leader>y :call WinCpy()<CR>

Он хорошо работает для того, что делает: создает новую вкладку, получает скрытый (развернутый) текст и сохраняет макет буфера.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .