我正在处理两个文件,需要将一个文件的几行复制并粘贴到另一个文件中。我知道如何在同一文件中复制(yy)和粘贴(p)。但是对于不同的文件,这样做无法实现。该如何操作?
此外,是否有剪切-粘贴的方法?我尝试过搜索,但大多数资源只讨论复制-粘贴。
我正在处理两个文件,需要将一个文件的几行复制并粘贴到另一个文件中。我知道如何在同一文件中复制(yy)和粘贴(p)。但是对于不同的文件,这样做无法实现。该如何操作?
此外,是否有剪切-粘贴的方法?我尝试过搜索,但大多数资源只讨论复制-粘贴。
既然你已经知道如何剪切/拷贝文本,下面是一些将其粘贴回另一个文件的方法:
:e /path/to/other/file
),并将其粘贴进去。在拆分窗口中同时打开两个文件,并使用 Ctrl + w、上方向键/下方向键 在它们之间进行导航,可以通过以下方式实现:
vi -o /path/to/file1 /path/to/file2
Ctrl
+ w
,s
。:sp myfile
,它水平分割并打开指定的文件,但如果我希望垂直分割窗口,该怎么办呢? - svassr+
作为跨平台系统剪贴板注册表(适用于Windows和Linux),而 *
则仅适用于Windows(在Windows中,+
的功能与 *
相同)。 - Stephen Swensen*
和+
的效果相同,即在vim实例之间以及从vim复制/粘贴到系统应用程序之间进行复制/粘贴(vim 8.2,带有剪贴板支持)。 - calocedrus使用 d
的变体,如 dd
来剪切。
要将一系列行写入另一个文件,可以使用以下命令:
:<n>,<m> w filename
其中<n>
和<m>
是指定行范围的数字(或符号)。
要使用桌面剪贴板,请查看+g
命令。
ma
,移动到最后一行,输入mb
。然后在使用上述命令时,在标记字母前加上 '
::'a,'b w filename
。 - EchoLynx以下是一种实现方法:
你也可以同时查看两个文件。可以使用Ctrl + w s等快捷键来分屏。
至于剪切,d可以剪切并将被剪切内容放进yank缓冲区。dd将会“剪切”一整行。
:r file_to_be_copied_from
。或者您可以使用缓冲区。或者进入第一个文件,转到要复制的行,输入"qY
,然后进入要粘贴的文件并输入"qP
。
"
buffer_name将内容复制到缓冲区,Y
是复制命令,P
是粘贴命令。希望这有所帮助!:r scp://<host>/<relativepath>
来读取文件。否则它会尝试从本地存储中读取文件。 - mazunki这些都是很好的建议,但如果您知道另一个文件中文本的位置,可以轻松使用sed。 :r!sed -n'1,10 p' < input_file.txt
这将在光标当前位置向已经打开的文件中插入10行。
:r!head -n2 file.py
- Federico Ponzi2017年5月更新:
我刚刚发现,如果您将以下行添加到vimrc文件中,
set clipboard=unnamed
那么Vim将使用系统剪贴板。
我刚刚发现将内容从一个Vim实例窗口复制到另一个窗口时,复制方法不起作用。(至少在我的Vim知识范围内它不起作用。我不知道是否有另一种方法可以使其起作用)。
根据我的测试,复制方法仅适用于在同一窗口中打开多个文件的情况。
如果您想这样做,最好使用操作系统的剪切-复制-粘贴方式,例如在Windows下按 Ctrl +x,Ctrl + c。
P.S:
这些重新映射对我非常有效:
vmap <C-c> "*y " Yank current selection into system clipboard
nmap <C-c> "*Y " Yank current line into system clipboard (if nothing is selected)
nmap <C-v> "*p " Paste from system clipboard
目标: 将一个文件的一部分保存到另一个文件。
解决方案:
将所选文本保存到新文件。输入 :w空格 和新文件的名称。实际上,您会看到
:'<,'>w new.txt
然后按下 Enter