欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Vim】Vim的常用命令

程序员文章站 2024-02-20 20:54:05
...

1 设置

vim里编辑代码可能会因为缩进问题报错:IndentationError: unexpected indent,因为默认使用tab缩进不是对应的4个空格,所以可以手动缩进4个空格或者改掉tab默认的空格数。
还可以设置显示行号,代码折叠,设置语法高亮等等非常多。

cd ~ 进入home下的用户user目录
ls -a  查看隐藏的 .vimrc 文件
touch .vimrc 打开编辑

设置细节:参考博客

在vimrc里设置的特征适用于全局,另外也可以再在vim文件创建编辑时单独设置。

  • 注意在全局vimrc里设置autoindent "换行自动缩进'的时候复制进去代码段会破坏格式。需要单独在vim编辑的文件里:set paste暂时取消自动缩进,复制进来之后再 :set nopaste 关闭。

系统剪切板和 vim 剪切板

vim的剪切板只能在一个文件(当前窗口)内使用,vim分别打开a和b文件就不能实现两文件之间的复制粘贴。
这时候就需要借助系统剪切板(clipboard)作为中介,实现vim和外界交流。
确保当前系统支持clipboard:

vim --version | grep clipboard

clipboard 前面如果是+ 号表示支持,- 号表示不支持。
不支持先安装:ubuntu

sudo apt-get install vim vim-scripts vim-gtk vim-gnome

系统剪切板(寄存器): ''+

''+y		选中的文件复制到系统剪切板
''+p	    从系统剪切板粘贴
如果觉得使用 ‘’+ 麻烦就把默认的剪切板设置为系统剪切板
:set clipboard=unnamed
这样可以直接使用 p 进行粘贴

2 编辑

vim打开文件默认进入的是normal模式,使用 i 切换到insert模式。再按 Esc 进入normal模式。
vim在文件内和系统的剪切板是不通用的。在vim 内进行的复制剪切一般是放在默认的寄存器(register)里面,也可以指定哪些内容暂存在哪个寄存器内。

双引号+名称+操作
''ayiw				复制一个单词到寄存器 a
''bdd					剪切一行内容,暂存在寄存器b中
''bp					将寄存器b 里的内容粘贴出来

在normal模式输入 :reg name 可以查看指定寄存器里的内容。

2.1 noraml(浏览)模式

复制(y)粘贴(p)删除(d 剪切):

先用 v ,移动方向键选择内容
再用 y 复制选择的内容( d  是剪切) 
方向键选择位置 用 p 粘贴
命令 说明
yiw 复制一个单词
yy 复制一行内容
yG 复制到末尾
dw 剪切一个单词
dd 剪切一行内容
dG 剪切到文档末尾
x 删除当前字符
c和cc 删除当前字符、行,并进入insert模式
u 撤销还原

2.2 insert(编辑)模式

可以使用ctrl+c/v 或者ctrl+shift+c/v来复制粘贴文件进、出vim的编辑区。

3 插入

命令 说明
i 和 I 在当前位置前、行首插入
a和 A 在当前位置后、行尾插入
o和O 在当前行之后、之前插入一行

4 跳转

命令 说明
gg和G 跳转到文件头、文件尾)
Ctrl + d 向下滚动半屏
Ctrl + u 向上滚动半屏
Ctrl + f 向下滚动一屏
Ctrl + b 向上滚动一屏
冒号+行号 跳转到指定行;比如:12,跳转到12行;
$ 跳转到行尾

跳转到行首

5 查找替换

命令 说明
/text 查找text,按n健查找下一个,按N健查找前一个
?text 查找text,向上查找,按n健查找下一个,按N健查找前一个
: s/old/new/ 用new替换old,替换当前行的第一个匹配
: s/old/new/g 用new替换old,替换当前行的所有匹配
:%s/old/new/ 用new替换old,替换所有行的第一个匹配
:%s/old/new/g 用new替换old,替换整个文件的所有匹配

6 保存和退出

命令 说明
:q 强制退出vim
:wq 保存更改退出
:q! 不保存退出

如果文件无法编辑保存退出,打开文件的时候使用sudo vim 文件命名