Questions tagged «cut-copy-paste»

有关剪切,复制和粘贴文本的问题。在Vim中,“剪切”也称为“删除”,“复制”也称为“猛击”,“粘贴”也称为“放置”。

3
如何在netrw中复制文件?
当前的工作目录为./A/B/。键入时vim,将打开一个空文档,并使用命令打开netrw :e.。窗口被分割vs.,并且我可以导航到上一级目录,即./A/。现在,我要将文件a_file.jpg从复制./A/B/到./A/。 我yy在目标文件和p目标窗口(目录)中进行了尝试,但没有达到我的目标。 有什么方法可以在不安装额外插件的情况下实现目标?

4
增量时粘贴和粘贴
我正在Vim中编辑.sql文件: INSERT INTO apps_forms (app_id, form_id) VALUES (1, 1), 我想做的是拉线(1, 1),并将其粘贴137次。但是,我希望括号中的第二个数字每次都增加。输出如下: INSERT INTO apps_forms (app_id, form_id) VALUES (1, 1), (1, 2), (1, 3), ... (1, 137), 有没有办法在Vim中做到这一点,如果可以,我将使用什么命令? 谢谢!


1
为什么p将复制的行粘贴在当前行之后而不是在当前单词之后?
假设我有以下四行: line1 line2 line3 line4 现在,如果我去line1执行yy复制行的a,然后去开始line3并使用'p'粘贴,我会得到 ... line3 line1 line4 .... 为什么粘贴line1后line3在新行? 我最初的想法是因为换行符$附加在第3行上,并且当我按pvim 时line3$,它被视为一个单词,因此粘贴到了它之后line3$。但是,似乎我的理解是错误的。因为如果执行此操作line3 $,然后p在行的开头执行a ,则会得到相同的结果。 为什么要p创建新行并在其后粘贴新行line3?

2
从光标删除直到第一个字符x(跨多行)
我知道我可以从光标中删除,直到并包括一个字符x的第一次出现dfx。这仅适用于一行。当x不在同一行中时,如何从当前光标位置删除直到x第一次出现? 例如,如果光标在中的第一个空格之后 yada yada yada yada yada yada yada yada yada yada x 我输入dfx的结果需要是: 亚达

3
WSL上的Vim:同步系统剪贴板吗?(设置剪贴板^ =未命名)?
在使用WSL /猛砸对于Windows我希望能够使用y yy 3y并p以同样的方式,他们总是在vim的工作,而是连接到所有的应用程序共享系统剪贴板,而不是Vim的内部剪贴板......我已经有同上管理剪贴板历史。 看来Vim已经有一个内置选项,可以将复制/粘贴缓冲区与系统剪贴板同步...但是,运行WSL时的问题是您实际上需要使用它/mnt/c/Windows/System32/clip.exe来访问剪贴板...因此,即使我想能够使用: set clipboard^=unnamed 它似乎还没有WSL支持。 我知道neovim确实有这个选项,但是我现在真的不想尝试neovim ... 目前,与我发现的解决方法最接近的是: nnoremap <silent> <leader>y :call system('/mnt/c/Windows/System32/clip.exe', @0)<CR> vnoremap <silent> <leader>y :call system('/mnt/c/Windows/System32/clip.exe', @0)<CR> 但是在我看来,这是一个非常可怕的解决方案...它使复制过程分为两个步骤... 当然,我可以使用mouse / shift + ins进行一些复制和粘贴,但是我认为必须有一种方法可以使这种同步在Vim中正常工作。

3
如何在vim中插入细微差别的重复文本?
我想插入这样的文本: similar text wordA similar text ... similar text wordB similar text ... similar text wordC similar text ... 我知道我可以多次粘贴文本,然后使用替换为每行更改单个单词,但是我仍然发现此方法非常不便。 有没有一种方法可以将单词或单词列表保存到“变量”中,然后使用此变量生成相似的文本? 编辑我在原始问题中做了一些不清楚的事情,实际上,我正在尝试进行一些非常相似的函数定义,因此wordA wordB...在每个文本克隆中可能会出现很多次,并且文本可能包含很多行。模式完全是这样的: similar_text1 wordA similar_text2 wordA similar_text3 ... similar_text1 wordB similar_text2 wordB similar_text3 ... similar_text1 wordC similar_text2 wordC similar_text3 ... (文本可能包含换行,并且wordA,wordB ...可能存在多次) 第二次编辑 每次我做这样的工作时,“ similar_text”部分可能会有所不同,因此该工作的解决方案最好是可重用的。因为我试图做出非常相似的函数定义,或者将字符串映射到函数映射表。 阅读答案和实践后,我发现将这项工作视为某种替代更为方便,因为可能包含换行符的单独“ part1”,“ part2” ...“ …

6
删除Vim然后粘贴而不换行
在vim中,很多时候我想完全删除一行,因此我使用dd。但是,然后我需要将该行粘贴到行中的其他位置,但这会在粘贴之前插入换行符,因此,这对我很难获得所需的结果。例如, while( pasteInHere ) { cin >> n; // Delete this line completely with dd } 当我使用上面的代码执行此操作时,我得到: while( pasteInHere ) cin >> n; // Delete this line completely with dd { } 这与我想要的结果相去甚远...我该如何抑制这种换行行为,或使用另一种方法来非常有效地执行此操作?我认为d $不好,因为我不仅必须转到行首,而且如果我也想删除空行,则需要在另一个寄存器中删除它,我觉得应该有一个更简单的方法!谢谢。

5
如何跨终端复制?
我正在使用Linux系统。在两个终端中打开两个vim。现在我想将文本从A复制到B。一种方法是选择A中的文本,使用鼠标复制,然后切换到B,在插入模式下,命令<c-r>+将粘贴文本。 无论如何,不​​使用鼠标就能执行它吗?像"+yy在A中,当切换到B, o<c-r>+?我徒劳地探索了几种组合。我搜索了“跨终端复制”,但一无所获。 用户@statox建议使用可视化模式,即,一个溶液v$"+y在A中,当切换到B, o<c-r>+。 有没有简单的方法可以在不进入v模式的情况下复制A中的文本?公认进入v模式不会涉及太多击键,只是想知道是否有更好的方法。例如。如果光标在一行的中间,则yy复制整行(以注册"),同时0v$y用额外的击键进行相同的操作。 或者,我的问题可以降低到是否有什么办法比减少击键0v$"+y的副本,这样我可以用<alt-tab>o<c-r>+粘贴。

2
如何从另一行开始粘贴可视块
我花了很长时间才意识到,用放置(粘贴)某物p或用P可视块选择某物并用ctrl+v拖动(复制)该东西可以y保留以前的方式,因此,当复制的文本位于行的中间时,然后将尽可能在其他文本中间复制。相反,select-line with V不会将复制的行粘贴到其他文本中,而是从另一行开始。 例如,假设我现在有: 12/12: Avocado. Apple. 12/13: Bean. Banana. 12/14: Cherry. Citron. 12/15: 12/16: 12/17: 当我想剪切Avocado和Bean和时Cherry,通过选择(选择表示为_) 12/12: ________ Apple. 12/13: ________ Banana. 12/14: ________ Citron. 12/15: 12/16: 12/17: 并按y,然后将光标移动到下一行(以表示的光标_), 12/12: Avocado. Apple. 12/13: Bean. Banana. 12/14: Cherry. Citron. _2/15: 12/16: 12/17: 然后按P。结果: 12/12: Avocado. Apple. 12/13: Bean. Banana. 12/14: …


6
如何将每行的前四个字符复制到同一行的末尾?
给定一系列类似于以下内容的行: 2001 "Some Kind of Title," Author's Name, Publication Name, 1 Mar. 2002 "Some Kind of Title," Author's Name, Publication Name, 12 Oct. 2003 "Some Kind of Title," Author's Name, Publication Name, 8 Apr. 2004 "Some Kind of Title," Author's Name, Publication Name, 3 Jun. 有没有办法我可以抓住前四个字符(年份),然后将它们复制到行的末尾,使其看起来像这样: 2001 "Some Kind of …


2
替换整个缓冲区的最有效方法?
目前,我有两种类似的方法可以用其他一些文本替换整个缓冲区(例如在剪贴板中)。 方法1: 删除所有行::%d。 粘贴文字:("+P或类似文字:):put+。 方法2: 直观地选择所有行:ggVG。 粘贴文字:"+P。 但是,我似乎找不到一种单指令射击的方式来做到这一点。我找到的最接近的是:change命令。但这似乎不适用于寄存器。当然,我可以创建一些功能和/或映射一个键来做到这一点。但是在进行所有这些自定义之前,我需要确保: 是否有一些内置命令将一系列行替换为其他文本?就像,您可以:%replace+用剪贴板中的文本替换整个缓冲区吗?

3
如何将文本从一个寄存器移动到任意数量的寄存器?
有没有办法将文本从一个寄存器“管道”到另一个寄存器或一组寄存器?例如,通过移至"q寄存器。"1"5 我经常希望为同一宏创建稍有不同的版本,因此能够将“模板”宏复制到多个寄存器,然后就地修改每个寄存器,这很有用。 举一个实际的例子,这是促使我想到这个问题的问题。 我需要将以下内容从硬件描述语言转换为许多重复的块, RAM64(in=in, load=load0, address=address[0..5], out=out1); 至 RAM64(in=in, load=load1, address=address[0..5], out=out2); RAM64(in=in, load=load2, address=address[0..5], out=out3); RAM64(in=in, load=load3, address=address[0..5], out=out4); RAM64(in=in, load=load4, address=address[0..5], out=out5); 我有一个宏,它使用增量函数执行此操作,该函数yypW^At)^A存储在register中"a。 有时,我需要递增的模式要稍有不同,例如 RAM512(in=in, load=load1, address=address[0..8], out=out2); RAM512(in=in, load=load2, address=address[0..8], out=out4); RAM512(in=in, load=load3, address=address[0..8], out=out6); RAM512(in=in, load=load4, address=address[0..8], out=out8); 其中,在寄存器中的宏"b会yypW^At)^A^A。 我想要一个寄存器来执行此操作,但是对于从1-5开始的每个增量。"a可以(以某种方式)将该寄存器复制到寄存器b到e。然后,我将每个寄存器粘贴到缓冲区中,进行所需的修改(添加更多项,更改跟随t运动的字符等),然后将修改后的表达式重新拉回到寄存器中。理想情况下,该最后一步甚至可以包含在复制寄存器的命令中 这使我不必重复宏中不需要更改的所有字符。以我的示例为例,这可能是微不足道的,但我可以预见,在某些时候做我想做的事情可能会很有帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.