AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 430691
Accepted
Steven Lu
Steven Lu
Asked: 2018-03-17 14:13:08 +0800 CST2018-03-17 14:13:08 +0800 CST 2018-03-17 14:13:08 +0800 CST

运行级别 3 中的系统范围 vim 粘贴缓冲区

  • 772

有点不好意思问这个问题,不过这个话题好像特别难搜。

在 Linux 系统上,我几乎只使用终端并通过终端模拟器使用 SSH 访问系统(最常来自 macOS)。

在一般意义上,当涉及终端多路复用器时,从日志等中复制和粘贴代码片段和错误是一个跨系统遍历缓冲区的棘手问题,这通常通过终端仿真器自身的选择功能进行复制和使用客户端操作系统的粘贴缓冲区。这个问题与此无关。

我的问题是当我在单个 Linux 服务器上打开大量 vim 实例时。我处于运行级别 3 并且不运行 GUI。我没有可用的 xclip,主要是因为没有安装 X。

当我在这个工作流程中时,我发现需要拉出部分文件并将它们粘贴到同一个删除框的其他 vim 中。Vim 的内置+和*复制/粘贴缓冲区不起作用。(这些系统上未启用 vim 中的剪贴板编译选项)

但是,如果我在一个 vim 实例中拉出一些文本,退出它,然后打开另一个 vim 实例,然后粘贴就可以了。因此,有关退出 vim 的某些内容会在某处保留缓冲区。我认为,如果我可以让这个系统实时运行而无需关闭 vim,那就太好了。我想避免必须在 yanks 和 deletes 上进行绑定来实现我自己的 yank/paste 实现。

linux vim
  • 2 2 个回答
  • 279 Views

2 个回答

  • Voted
  1. Best Answer
    Michael Homer
    2018-03-17T14:39:19+08:002018-03-17T14:39:19+08:00

    这是.viminfo文件 ( :h viminfo)。

    当您退出 vim 时,它会写出当前状态,例如命令历史记录和该文件的寄存器值。当它启动时,它会读取文件并恢复它所描述的任何状态。这意味着连续的vim 会话(似乎)共享某些状态,但并发的会话不共享。

    可以用:rv/:rviminfo命令强制重新读取 viminfo 文件,用:wv. 因此y :wv,在一个编辑器中,在另一个编辑器:rv p中可以工作,但会有副作用:您的所有寄存器值和命令历史记录可能会被重置,以及很多其他事情,这对您来说可能很重要,也可能无关紧要。

    这也可能是一个优势:您可以使用全范围的寄存器在编辑器之间获取多个复制缓冲区,这是系统剪贴板不提供的。另一方面,除非您重新绑定y以自动执行此操作,否则它并不是非常方便,而且p您可能不想每次都读取文件。我已经读/写了绑定到领导命令的 viminfo,但这只会为我节省一个按键(听起来你会更频繁地使用它)。


    您可以使用其他一些方法,例如自己手动分页到特定文件,这样可以避免副作用。这听起来不像你想要的,但它是一种选择。还有一些插件可以或多或少地完成您正在寻找的工作,以及会话系统。它们不是您问题的直接答案,但它们可能会告知您最终的目标。

    • 6
  2. Steven Lu
    2018-04-09T19:19:17+08:002018-04-09T19:19:17+08:00

    按照承诺:

    linux 特定的脚本(我$HOME/util的在我的$PATH):

    ~/util ❯❯❯ cat linux_pb/pbcopy                                         ✘ 130 master b28083b $ ◼
    #!/bin/bash
    
    # pbcopy impl for linux!
    # pipe the stdin to a file using cat. Not using bash builtins due to concerns
    # about NULs.
    
    FILE="$HOME/.clipboard"
    touch $FILE
    chmod 600 $FILE
    cat > $FILE
    ~/util ❯❯❯ cat linux_pb/pbpaste                                              master b28083b $ ◼
    #!/bin/bash
    
    # pbpaste impl for linux!
    # just use the content of the file.
    
    cat ~/.clipboard
    

    vim 绑定:

    vnoremap <silent> <Leader>y :w !pbcopy<CR><CR>
    " the leader y works like normal yy (but for my clipboard)
    nnoremap <silent> <Leader>y :.w !pbcopy<CR><CR>
    nnoremap <Leader>p :read !pbpaste<CR>
    

    幂等 shell 别名脚本(我从 bash 和 zsh 获取此别名脚本):

    if [ "$(uname)" = Linux ] && ! [[ "$PATH" = *"/linux_pb"* ]]; then
        PATH="$PATH:$HOME/util/linux_pb"
    fi
    

    当我开始使用带有 X 的实际 linux 时,我可能会更加充实 Linux 配置,这样我也可以利用它的粘贴缓冲区。它需要某种机制来创建pbcopy和pbpaste程序类似的。

    该方法是程序级别的统一性之一,因此 Vim 可以像我现在可以从 shell 一样利用该功能。

    • 1

相关问题

  • 有没有办法让 ls 只显示某些目录的隐藏文件?

  • 使用键盘快捷键启动/停止 systemd 服务 [关闭]

  • 需要一些系统调用

  • astyle 不会更改源文件格式

  • 通过标签将根文件系统传递给linux内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve