如何在不使用鼠标的情况下将文本从 vim 复制到外部应用程序?

如何在不使用鼠标的情况下将文本从 vim 复制到外部应用程序?

我试图避免使用鼠标,只使用键盘,这样我就可以加快速度。另外,我不擅长使用 VIM。我使用 vim 的唯一动机是一切都可以通过键盘实现,这样我就可以更快地完成任务。

我做了什么?

#vim /etc/ssh/sshd_config

1)将光标移至所需行。接下来,我按下 -shift + v

它说现在VISUAL LINE

2)接下来,我按下向下的箭头键来选择一组线条。

3)Pressed y

它说 -" 22 lines yanked" 我相信这意味着它已经复制了我选择的 22 行。

4) 我进入 gedit 并尝试执行,ctrl + shift + v 但没有成功。接下来,我尝试执行ctrl+ v该操作,但同样没有成功。通常的做法是什么?

答案1

我认为你需要在 vim 中编译剪贴板才能使它工作。你可以在 Vim 中使用 :echo has('clipboard') 检查你的 Vim 是否有这个功能(如果输出为 0,则不存在;如果输出为 1,则存在)。

这个答案有更多关于该主题的信息

如果你这样做,.vimrc 中的以下内容可以完成这项工作:

" paste from system CTRL-C clipboard
nnoremap <Leader>p "+p
" paste from system highlghted clipboard (linux only)
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 (linux only)
nnoremap <silent><Leader>Y :call Preserve("normal! Gp\"*dGu")<cr>
            \ :echo 'copied to highlight clipboard'<cr>

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

因此,提取文本后,您可以按下 <leader>y,然后转到其他应用程序并按 ctrl+v,它就会粘贴。

<leader> 键默认是反斜杠,因此您可以输入 '\+y'。

如果你想将从外部应用程序复制的文本粘贴到 vim 中,你可以按 ctrl+shift+v,或者使用上面的映射 p

如果你想在浏览时避免使用鼠标,维美拉是一个很棒的扩展,可以让您使用类似 vim 的键进行浏览。

相关内容