如何将拖动的文本粘贴到Vim命令行中

如何将拖动的文本粘贴到Vim命令行中,vim,copy-paste,Vim,Copy Paste,我想把被拉出来的文本粘贴到Vim的命令行中。可能吗?是的。点击Ctrl-R,然后点击“。如果你在你拉出来的内容中有文字控制字符,使用Ctrl-R,Ctrl-O,” 下面是关于如何使用寄存器的说明。你能用寄存器做的事情是非同寻常的,一旦你知道如何使用它们,你就离不开它们了 寄存器基本上是字符串的存储位置。Vim有许多以不同方式工作的寄存器: 0(拖动寄存器:在正常模式下使用y时,在不指定寄存器的情况下,拖动的文本会转到那里,也会转到默认寄存器) 1到9(移动删除寄存器,当您使用c或d等命令时,已

我想把被拉出来的文本粘贴到Vim的命令行中。可能吗?

是的。点击Ctrl-R,然后点击“。如果你在你拉出来的内容中有文字控制字符,使用Ctrl-R,Ctrl-O,”

下面是关于如何使用寄存器的说明。你能用寄存器做的事情是非同寻常的,一旦你知道如何使用它们,你就离不开它们了

寄存器基本上是字符串的存储位置。Vim有许多以不同方式工作的寄存器:

  • 0
    (拖动寄存器:在正常模式下使用
    y
    时,在不指定寄存器的情况下,拖动的文本会转到那里,也会转到默认寄存器)
  • 1
    9
    (移动删除寄存器,当您使用
    c
    d
    等命令时,已删除的将进入寄存器1,寄存器1中的将进入寄存器2,等等)
  • (默认寄存器,也称为未命名寄存器。这就是“在Ctrl-R中出现”的原因)
  • a
    to
    z
    供您自己使用(大写的
    a
    to
    z
    用于附加到相应的寄存器)
  • \uu
    (与
    /dev/null
    (Unix)或
    NUL
    (Windows)类似,您可以对其进行写入,但它会被丢弃,当您从中读取时,它始终为空)
  • -
    (小删除寄存器)
  • /
    (搜索模式寄存器,当您使用
    /
    *
    #
    查找文本时更新;您也可以对其进行写入以动态更改搜索模式)
  • (通过
    Q
    存储最后一个VimL键入的命令,只读)
  • +
    *
    (系统剪贴板寄存器,您可以写入它们以设置剪贴板并从中读取剪贴板内容)
请参阅
:帮助寄存器
,以获取完整参考

您可以随时使用
:registers
显示所有寄存器的内容。此命令的同义词和缩写为
:display
:reg
:di

在Insert或命令行模式下,Ctrl-R加上寄存器名可插入此寄存器的内容。如果要按字面插入(无自动缩进,无需将控制字符(如
0x08
转换为backspace等),可以使用Ctrl-R、Ctrl-O、寄存器名。 有关更多参考信息,请参见
:帮助i_CTRL-R
和以下段落

但您也可以做以下操作(我可能忘记了寄存器的许多用法)

  • 在正常模式下,点击“:p”。vim中使用的最后一个命令将粘贴到缓冲区中。
    让我们分解:
    是一个普通模式命令,允许您选择下一次拖动、删除或粘贴操作期间要使用的寄存器。因此”:选择冒号寄存器(存储最后一个命令)。那么p是一个您已经知道的命令,它粘贴寄存器的内容

    参见
    :help“
    :help quote.

  • 您正在编辑一个VimL文件(例如您的
    .vimrc
    ),并且希望立即执行两行连续的命令:yj:@“Enter.
    在这里,yj将当前和下一行(这是因为j是一个逐行运动,但这超出了这个答案的范围)拉入默认寄存器(也称为未命名寄存器)。然后,
    :@
    Ex命令播放作为参数存储在寄存器中的Ex命令,
    是您引用未命名寄存器的方式。另请参见此答案的顶部,它是相关的

    不要将此处使用的
    与上一示例中的
    混淆,后者是正常模式命令

    参见
    :help:@
    :help quote\u quote

  • 以插入模式将最后一个搜索模式插入到文件中,或使用Ctrl-R、/,将最后一个搜索模式插入到命令行中

    参见
    :帮助引用
    帮助i\u CTRL-R

    推论:保留您的搜索模式,但添加一个备选方案:
    /
    Ctrl-R,/
    \\124;备选方案

  • <>你在Visual模式中选择了两个单词,用“代码”> y>代码>,它们在未命名的登记表中。现在你想在你所在的地方打开一个新的行,用这两个词:<代码>:PU<代码>。这是<>代码>:放“< /代码>。<代码>:放< /Cord>命令,就像许多EX命令一样,只在线路上工作

    cf.
    :帮助:放置

    您也可以这样做:
    :调用setreg(“,@”,“V”)
    然后调用
    p
    setreg
    函数将寄存器的名称设置为第一个参数(作为字符串),使用第二个参数的内容对其进行初始化(您可以使用寄存器作为变量,名称为
    @x
    ,其中
    x
    是VimL中的寄存器名称),并将其转换为第三个参数中指定的模式,
    V
    用于行方式,字符方式不含任何内容,而文字
    ^V
    用于块方式

    参见
    :help setreg()
    。反向函数是
    getreg()
    getregtype()

  • 如果您使用
    qa
    q
    录制了一个宏,那么
    :echo@a
    将告诉您键入的内容,并且
    @a
    将重播该宏(可能您知道,为了避免重复任务,该宏非常有用)

    参见
    :help q
    help@

    上一个示例的推论:如果剪贴板中有
    8go
    ,则
    @+
    将以宏的形式播放剪贴板内容,从而转到文件的第8个字节。实际上,这几乎适用于所有寄存器。如果上次插入的字符串是插入模式下的
    dd
    ,则
    @.
    将(因为
    寄存器包含上次插入的str
    :call VimuxRunCommand("python")
    
    vnoremap y:call VimuxRunCommand("<c-r>"")<cr>
    
    vnoremap y:call VimuxRunCommand(@")<cr>