:set paste
:set nopaste
:set clipboard=unnamed
insert模式下的复制粘贴
vim normal模式复制黏贴
什么是Vim的寄存器
无名寄存器
命名寄存器
clipboard
set clipboard=unname
% 当前文件名
## 2-9 vim复制粘贴与寄存器的使用
### vim在Normal模式复制粘贴
- Normal模式下复制粘贴分别使用y(yank)和p(put),剪切d和p
- 可以使用v(visual)命令选中所要复制的地方,然后顺遂p粘贴
- 配合文本对象:比如顺遂yiw复制一个单词,yy复制一
### Insert模式下的复制粘贴
- 和其他文本编辑器差不多,但粘贴代码有个坑
- 在vimrc中设置了autoindent,粘贴Python代码缩进错乱
- 这个时候需要使用`:set paste`和`:setnopaste`解决
### 什么是vim的寄存器
- vim里操作的是寄存器而不是系统剪切版,这和其他编辑器不同
- 默认使用d删除或者y复制的内容都放到了“无名寄存器”
- 用x删除一个字符放到无名寄存器,然后p粘贴,可以调换俩字符
### 深入寄存器(register)
- 通过`"{register}`前缀可以指定寄存器,不指定默认无名寄存器
- 比如使用`"ayiw`复制一个单词到寄存器a中,'bdd删除当前行到寄存器b中
- :reg a查看寄存器a中的内容
- "a p粘贴a寄存器中的内容
### 其他常见寄存器
除了有名的寄存器a-z,vim中还有一些其他常见寄存器
- 复制专用寄存器`"0`使用y复制的文本同时会被考呗到复制寄存器0
- 系统剪切版`"+`可以复制到系统剪切版
- 其他寄存器,比如`"%`当前文件名,`".`上次插入的文本
- :set clipboard=unnamed可以让你直接复制粘贴系统剪切版内容
"+y/p 复制粘贴系统剪切板内容
" 可以调用vim 寄存器,可以自行命名,如"ay 即复制至寄存器a
输入ctrl+r,再按 +, 可在insert模式插入系统剪贴板内容
:e! 重新加载当前打开文件
:set paste暂时关闭autoindent,避免粘贴python代码缩进混乱
:set nopaste重新开启autoindent
:set paste
:set nopaste
"+ p 粘贴系统中的
insert 模式下 ctrl +粘贴系统剪切板
:set clipboard=unnamed
vim normal模式下的复制粘贴和insert模式不太一样
normal 模式:
noraml模式下复制粘贴使用y(yank)和p(put), 剪贴d和p
可以使用v(visual)命令选中所要复制的地方,然后使用p粘贴
yiw复制一个单词,yy复制一行
insert模式下的复制粘贴
vimrc设置autoindent,可以自动缩进,但粘贴python代码会格式混乱
这个时候使用:set paste 和:set nopaste解决
vim不使用单一剪贴板进行剪贴,复制与粘贴,而是多组寄存器
通过"{register}前缀可以指定寄存器,不指定默认用无名寄存器
"ayjw复制一个单词到寄存器a中,"bdd删除当前行到寄存器b中。
除了a-z寄存器,系统剪贴板"+
使用系统剪贴板,vim里的内容可以与这个系统内的其他共享,但服务器那边只能:set paste和:set nopaste
:set clipboard=unnamed可以让你直接复制粘贴系统剪贴板内容
:echo has("clipboard")查看系统是否支持clipboard 0为不支持,1为支持
:reg 查看寄存器内容
xp 俩字符互换位置
"" 默认寄存器 "0 复制寄存器 "+ 系统剪贴板 "% 当前文件名 ". 上次插入的文本
:set clipboard=unnamed 直接使用系统剪切板
在插入模式 用<C-r>+粘贴系统剪切板中的内容
y[object] 复制
p 粘贴
d,x并没有真正删除字符,而是把它暂存在寄存器中
yy 复制一行
在插入模式中C-c C-v可用于复制粘贴(GVim没起作用)
"[register]cmd 指定使用[register]寄存器执行cmd命令
:reg [register] 查看[register]寄存器
""/0/+/%/. 无名寄存器/复制寄存器/系统剪贴板/当前文件名/上次插入的文本
:set clipboard=unnamed 统一寄存器和系统剪贴板
插入模式中:
C-r + 粘贴系统剪贴板内容
:e! 重新加载当前文件
:set paste
再次进入插入模式粘贴时缩进不会乱(经常遇到这个问题)
:set nopaste
取消上诉操作,缩进功能回来
小技巧:x:删除当前字符,p 粘贴 xp(互换字符)
"+表示复制到系统剪切板中,这样就可以在 vim 和其他编辑器中来回复制了
:set clipboard=unnamed 可以直接复制粘贴系统剪切板中的内容
:echo has('clipboard')
1 支持 复制到系统剪切板
:set clipboard=unnamed 可以直接复制的系统剪切板
insert 模式下 ctr+r+'+'
:e! 重新加载文件 ,且不保持
简单一下:set clipboard=unnamed 就可以直接使用y/p在normal模式下粘贴
常见寄存器
reg a 查看a寄存器
"a p
vim normal
+号代表系统剪贴板,双引号,加号,y,可以将VIM里面的内容复制到系统剪贴板,反之,将系统剪贴板内容复制到VIM里面可以用双引号,加号和P
设置 :set clipboard=unnamed,就不需要复杂的加号双引号了,可以直接粘贴复制。
我这个笔记是不是够简单暴力么文化哈哈
按住shift,然后依次按"(双引号),+(加号),P 可以将系统剪贴板的内容复制到VIM
insert 模式下,按Ctrl+R 开始选择,输入寄存器编号后粘贴内容
双引号“来指定寄存器
insert在开启autoindent之后:
可以通过set paste来使粘贴缩进正常
而set nopaste来恢复编辑缩进。
noraml 复制粘贴
yy复制一行
https://en.wikibooks.org/wiki/Algorithm_Implementation/Sorting/Quicksort#Python def qsort(L): if L == []: return [] return qsort([x for x in L[1:] if x< L[0]]) + L[0:1] + \ qsort([x for x in L[1:] if x>=L[0]])
课后练习(待做)
normal:p
insert:ctrl r +
从系统剪切板粘贴"+p
:set clipboard=unnamed
其他常见的寄存器
"ayy->"ap
查看:reg a
"byy->"bp
查看:reg b