Questions tagged «cut-copy-paste»

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


15
如何删除大块文本而不计算行数?
在vim中,我经常需要删除或拉大文本块。 我可以计算文本的行数,然后输入类似50dd删除50行的内容。 但这有点痛苦。如何删除此大块文本,而不必事先知道要删除多少行?

3
如何提取(复制)光标所在的单个字符?
我知道很多复制方法: yiw=在当前单词中 yaw拉动=在所有单词中拉动(包括尾随空格) yy =在当前行中 3yy拉动=从当前行开始拉动三行=在 yap所有段落中拉动(包括尾随换行符) 我还可以删除或更改单个字符: x=删除光标下方的字符 r=替换光标下方的字符 但是,您究竟如何在光标下简单地复制一个字符呢? 我的动机是我正在Perl 6中进行编程,其中一些运算符是Unicode字符。现在,例如,我正在使用tadzik的Perl 6 Config :: INI代码作为自定义解析器的起点,并且我希望从该行复制仅一个法语引号(一个超级运算符): my %hash = $<sections>».ast; 我可以使用hyper运算符的两个字符的“ Texas”版本>>,但是我认为它>»看起来比>>>: my %hash = $<sections>>>.ast;



5
在不清除寄存器的情况下执行某些操作
通常,在配置文件中,我可能会复制并粘贴一行行,然后我希望对该行进行一些小的更改。粘贴后,我x用来删除要删除的字符,然后继续粘贴下一个块。除了x将已删除的字符放在剪贴板上之外,因此我不得不再次重新复制行块。 有没有一种方法而无需进入插入模式?

2
为什么Y是yy而不是y $的同义词?
是否有特定的历史原因? 背景 -(如果您已经理解了这个问题,则可以跳过此部分。) 作为中级/高级vi用户会知道,y是在“抽出”命令它猛拉(份)由下面的移动命令指定的文本。*因此ye猛拉到字的结束时,y0从光标位置猛拉到行的开始,y_拖动整个当前行,y$从光标位置拖动到当前行的末尾,依此类推。 的d(删除)命令和c(变化)命令都可以与所有这些运动的被使用。 dd是的同义词,d_并删除整个当前行。同样,cc是的同义词c_,并将更改当前行(即它将删除所有文本,并在行的开头将您置于插入模式)。** “ yank”命令遵循此约定;yy会像一样拉动整个当前行y_。 还有另一组同义词:D是的同义词,d$将从光标位置到行尾将其删除。 C是的同义词c$,它将文本从光标位置更改到行尾,使您进入插入模式以键入新文本。 但是,Y是或的另一个同义词,它将使整行yyy_(而不是象从Cand D模式中所期望的那样)从光标移至行的结尾。 我了解在Vim中一直保持这种方式来保持与向后的兼容性vi,如Vim帮助中所述:help Y: 如果您希望“ Y”从光标到行尾(更合逻辑,但不兼容Vi),请使用“:map Y y $”。 因此,这是来自的延期vi。精细。 但是,为什么命令最初是这样设计的?有没有逻辑呢? *具体来说,它将文本放置在寄存器0中,并将未命名的寄存器指向寄存器0。 **尽管这不是有关我的问题,S是另一个同义词cc或c_。


4
在正常模式下如何用拉动的单词替换单词
当我不得不用一个我以前想过的单词替换一个单词时,我通常使用对我来说似乎不自然的工作流程: 假设我有这段文字: foo bar buzz 我想拉动foo并替换bar为以前拉过的东西。 拉动之后foo,我看到以下选项: 选项1 将光标放在bar与w 把foo前面的bar有P 将光标放在b其余的上,bar然后用删除该单词de 选项2 将光标放在 w 使用de来擦除bar 将寄存器0的内容放入"0P(因为我已经擦除了bar,foo所以不再可以通过简单的来访问它p) 这两种方法对我来说似乎都过于复杂,我敢肯定有一种更有效的方法来完成此操作,但我找不到方法。这个想法是只将delete和put动作组合在一起,或者至少避免将已删除的单词保留在yank寄存器中,这样我就可以将所需的单词简单地放入p。 我也知道替换模式触发了,R但是它不允许放置被拉的东西。 TL; DR:如何用yank寄存器的内容替换单词?

7
移动文本块的更快方法
这是我通常复制一段文本或代码的方式: 用可视模式(V)选择块,然后用删除 d; 或者,如果仅是一行,则使用 dd。 转到我想要的文字是,我太傻记住的区别p和P,所以我得到的时间的50%这一权利。(如果我弄错了:请重试一次)。 有时,缩进需要调整,因此我V再次进入可视模式 并重新选择相同的块,然后使用>或 <修复它。 有没有更简单的方法?在某些编辑器中,我看到您可以“拾取”一段文本,然后四处移动;这是Emacs的示例(但我在其他编辑器中也看到了此示例): 也许还有另一种(甚至更好)的方法?

2
追加到剪贴板的一个如何在vim中注册?
我已经知道您可以使用以下命令将某些内容复制到寄存器中:(加上抽出,删除等命令) "a 我也了解您可以使用以下方法将其附加到寄存器中: "A 另外,我了解如何使用以下方法将内容复制到剪贴板寄存器: "+ 我键入什么来附加到剪贴板寄存器? 我的vim版本: VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jan 2 2014 19:39:59) Huge version with GTK2 GUI.

1
如何映射d [count] d?
注意:这不是“ d3fg”命令如何工作的重复项?请在投票关闭前阅读它! 我寻求小删除像大删除一样陷入僵局。我遇到的问题是我不知道如何重新映射类似的命令d3d。实际上,我什至无法理解它们的工作原理,也无法在Vim的帮助下找到它们的任何提法。* d3j很简单:将d操作员应用于3j运动, 3dd也很简单:它dd以3的“ count” 运行命令。 d3d 看起来应该很简单,它将d运算符应用于...,但是什么是3d?这不是一个议案。如果您3d自己输入,Vim会将其视为一个运算符,然后是一个运算符,并耐心等待进一步的输入。 而且您不能将运算符应用于其他运算符。dd在帮助中并未描述为两个运算符的序列。这是一个单独的两键命令。(请参阅dc,它什么都不做。) 对于需要两次击键的命令,计数的位置似乎也不是灵活的:2gj将光标向下移动两行屏幕,但是g2j完全丢弃前两次按键并向下移动一行光标。 那么它是怎样工作的?这只是Vim内部代码中的一种特殊情况吗?有什么办法可以创建d[count]d映射? 编辑:这是一个文本对象吗?:h text-objects不包括在“文本对象选择命令”列表中,但随后它确实包含DD在“从小分组,以大物”删除列表。并d2aw确实删除了光标下的单词和随后的单词。另一方面,c2d什么也不做。 *我确定必须提到它们,但是我找不到。我已经阅读了:help deleting,:help motion.txt并尝试:helpgrep dNd了从1到9的所有N值。

4
如何用拉动的文本替换内部文本
我经常遇到的一种编辑模式如下:我想拉引号或方括号内的一段文本,并替换另一对引号/方括号内的一段文本。 例如,如果我想复制类名foo bar并将其粘贴到其他地方: <span class="foo bar"> <div class="this-should-be-replaced-with-foo-and-bar"> 我所知道的是:如果我在span的类内移动,我通常会yi"在引号内插入文本。 现在,我将其保存在寄存器中,因此应该可以用它替换div的类内容。但是我找不到方便的方法。 如果我使用ciw它,最终会覆盖内容以更改内容,因此我会丢失被选中的文本。 我能想到的最好的办法是移至div类的第一引号p,然后单击,然后删除至下一个引号dt"。 通常,我通常会弄乱自己的位置,然后将其粘贴到合并两个字符串的引号中的某个位置,这会使事情变得混乱。 我希望可以通过某种方式进行“请用需要替换的内容替换内部文本”组合,以使此操作更容易。

4
从光标删除直到字符x的第n次出现
我知道我可以从光标中删除字符x,直到并且包括该字符的第一个出现d/x<CR>,v/x<CR>d如果要先看到选择内容,然后再删除。如何从当前光标位置删除直到出现x的第n个? 例如,如果光标在中的第一个空格之后 yada yada yada yada yada yada yada x yada yada yada yada x yada yada yada x xx 和I型指令,以除去对第三个X的结果需要是: 亚达 xx

1
“ dap”会删除所有内容吗?
我熟悉“ dd”和“ d {motion}”命令,但是在vim的help.txt中找不到“ dap”。在正常模式下,“ dap”有什么作用?为什么?(或者,我怎么能自己找到这种东西?)

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.