我通过ssh访问服务器,我运行vim来编辑文件.当我尝试将文本从vim本地放入我的mac(lion)本地编辑器时,或者使用y或"+ y它不起作用.我最终得到了我在本地复制的文本.如果我只是在内部使用p,它确实有用嗯好吧.
rom*_*inl 51
为了扩展Ray的答案......
当您通过SSH 在远程服务器上使用Vim 时,您在Vim中执行的所有操作都在远程服务器上完成.您在其上运行的远程服务器和远程Vim对本地计算机及其系统剪贴板缺乏实用知识.
因此,y永远不会将拉出的文本放在本地剪贴板中.
为了将一大块文本从远程Vim 复制到本地计算机的剪贴板,您有三个选择:
用鼠标选择文本,然后在任何Mac OS X应用程序中点击Cmd+ Clike.
显然,它似乎是最简单的,但至少有三个限制:
它仅限于当前屏幕.如果您想要抽出的文本没有完全显示,您将无法复制所有文本.
它不能很好地发挥作用set mouse=a.使用此选项,任何使用鼠标选择内容的尝试都将导致视觉模式选择无法用Cmd+ 复制C.作为解决方法,您可以使用Alt+鼠标选择文本而无需进入可视模式,或只是从遥控器中删除此设置~/.vimrc.
行号也被复制.
将拉出的文本放在一个临时文件中,scp然后pbcopy将其放入本地计算机并用于将其放入系统剪贴板中.
这个解决方案似乎有点复杂,但它有效(问题本身也有点复杂).多年来,我看到了很多不同的实现,从简单的一个内衬到客户端/服务器设置.这是一个,随时谷歌周围的其他人.
如果可用,使用X-forwarding将本地剪贴板连接到远程剪贴板.
Dea*_*ean 12
我的首选解决方案是通过scp从本地计算机上使用vim编辑文件.
:e scp://remoteuser@server.tld//path/to/document
Run Code Online (Sandbox Code Playgroud)
这样可以使缓冲区保持在本地状态,并且可以轻松复制到本地剪贴板.
另一个优点是你可以使用你的本地vim设置(.vimrc设置,插件等)
小智 12
有这个问题 - 从OSX通过SSH登录到linux盒子,无法从文件复制文件,用vim打开.
我的解决方法是 :set mouse=i
默认情况下,在所有模式下都启用鼠标.当您将其设置为仅在插入模式下启用时,您可以在不编辑时滚动并复制(正常模式),但是当您开始编辑(通过按I或插入键)并进入插入模式时,鼠标将用作光标放置你不能从终端复制.
您可以在〜/ .vimrc中设置该选项
有关可以设置的值和模式的详细信息,请参阅:帮助鼠标.
https://github.com/ojroques/vim-oscyank + iTerm2 + tmux 在我的案例中有效,这是我的工作流程:
我的 .vimrc 的某些部分
Plug 'ojroques/vim-oscyank' " clipboard over ssh through tmux
" yank operation don't need to use the *" register (system clipboard)
set clipboard+=unnamedplus
autocmd TextYankPost *
\ if v:event.operator is 'y' && v:event.regname is '+' |
\ execute 'OSCYankRegister +' |
\ endif
Run Code Online (Sandbox Code Playgroud)
小智 8
我在stackoverflow上的第一个答案,但我觉得这是一个很酷的(虽然很小)技巧,值得张贴.所以这就是我的工作:
cat <filename>
Run Code Online (Sandbox Code Playgroud)
当文本打印到终端上时,我用鼠标选择所有文本(鼠标滚动工作,因为我们在终端窗口上).然后用Cmd+ 复制该文本C并粘贴到我的本地文本编辑器中.
这个技巧的唯一缺陷是,如果您的文件长达数万行是不切实际的,因为用鼠标选择所有行本身就是一项任务.但是对于大约2k行的文件,它运行良好.
iTerm2 Shell Utilities 附带it2copy允许从远程服务器复制到客户端剪贴板。在远程服务器上安装 Shell Utilities 并确保您已Applications in terminal may access clipboard检查。

然后,进入visual mode,选择文本并执行<,'>:w !it2copy
| 归档时间: |
|
| 查看次数: |
25675 次 |
| 最近记录: |