vim小技巧
快速插入时间
把下面行追加到 ~/.vimrc ,在vim的插入模式输入 xtime 即可
1 | iab xtime <c-r>=strftime("%Y-%m-%d %H:%M:%S")<cr> |
复制/剪切/删除
print("Hi, this is a 'word'!")
- 拷贝
word
:光标移到o
,yiw
(举一反三:viw
,diw
,ciw
)或者yi'
- 拷贝
'word'
:光标移到o
,ya'
(举一反三:va'
,da'
,ca'
) - 拷贝
Hi, this is a 'word'!
:光标移到o
,yi"
(举一反三:vi"
,di"
,ci"
) - 拷贝
"Hi, this is a 'word'!"
:光标移到o
,ya"
(举一反三:va"
,da"
,ca"
)
vim寄存器
查看vim常用寄存器的保存的内容:registers
a-z每个字母对应一个寄存器,查看寄存器a对应的值:reg a
,查看寄存器b对应的值:reg a
normal
模式下粘贴寄存器a的内容"ap
,insert
模式下粘贴寄存器a的内容Ctrl+r a
print("Hi, this is a 'word'!")
- 拷贝
word
进寄存器a
:光标移到o
,"a
(选择寄存器a
),yiw
(拷贝单词) - 拷贝
this
进寄存器b
:光标移到h
,"b
(选择寄存器b
),yiw
(拷贝单词) - 查看
寄存器a
保存的内容::reg a
- 查看
寄存器b
保存的内容::reg b
- 粘贴
word
(即寄存器a
的内容):光标移到粘贴位置,"a
(选择寄存器a
),p
(粘贴) - 粘贴
this
(即寄存器b
的内容):光标移到粘贴位置,"b
(选择寄存器b
),p
(粘贴)
当我们不选择寄存器直接使用y
或d
操作时,被操作的内容会被拷贝或者剪切到""
(无名寄存器)中
"%
:内容是当前文件名,一般写文件注释头会用到
".
:上次插入的文本
"+
:系统剪切板,查看vim是否支持使用系统剪切板:echo has('clipboard')
,输出1表示支持
- 在别的程序(如浏览器网页)用鼠标选择内容,
Ctrl+c
(拷贝内容到系统剪切板),回到vim用"+
(选择系统剪切板),p
(粘贴系统剪切板的内容) "+
(选择系统剪切板),yy
(拷贝一行进入系统剪切板),可以在别的编辑器或者程序(如浏览器搜索框)里用Ctrl+v
粘贴- vim拷贝默认放入
""
(无名寄存器),如果想用"+
(系统剪切板)取代""
(无名寄存器),需要:set clipboard^=unnamed,unnamedplus
粘贴网上拷贝的代码出现缩进对齐错乱
当vim :set autoindent
之后,在insert
模式下用Ctrl+Shift+v
粘贴网上拷贝的代码会出现缩进对齐错乱
- 方法1.
:set paste
,i
(进入插入模式),Ctrl+Shift+v
(粘贴),:set nopaste
- 方法2.
"+
(选择系统剪切板),p
(粘贴) - 方法3.
:set clipboard^=unnamed,unnamedplus
(使用系统剪切板取代无名寄存器),p
(粘贴)