配置vim
- macOS自带vim
- 在终端用brew安装vim,会替代自带的版本有疑问;执行
brew install vim
关于vim
- 快速移动光标:https://blog.csdn.net/weiaiyisheng_ljj/article/details/80198674
- 如何修改默认缩进?
:set tabstop=4
修改默认缩进为4有疑问:set noet sw=4 ts=4 sts=4 ai
也可以有疑问
- 如何同时打开多个文件?参考:https://www.xuebuyuan.com/3246426.html
- 参考:https://www.cnblogs.com/quant-lee/p/7445351.html
- 在同一个窗口打开多个文件
vim file1 file2
,并在命令模式下使用:N
切换到上一个文件,使用:n
切换到下一个文件 - 在不同窗口打开不同文件:
- 先使用
vi file1
打开一个文件 - 分割窗口,打开另一个文件,水平分割
:sp file2
垂直分割:vsp file2
- 使用
ctrl+两次w
来在窗口之间切换
- 使用
- 先使用
- 同时在不同窗口打开不同文件:
vim -o file1 file2
:wa|!python3 %
是什么意思?- 如何快速注释掉多行?
- 可以用s代替shift+i,好像不行,shift+s删除了选中的行,
- 去注释时,选择好需要去掉注释的行,直接按d有疑问
- 如何删除多行?
:set nu
显示行号:num1,num2d
再回车d
是删除
- num1到num2之间的行数就被删除了
- 如何快速删除光标所在行:正常模式下,按
dd
(dd实际上是剪切) - 如何快速复制粘贴光标所在行?
yy
复制p
粘贴
- 如何快速复制多行?参考https://www.cnblogs.com/it-tsz/p/14184673.html
- 按
v
进入可视模式
- 移动光标,选择想复制的内容
- 按
y
复制 - 按esc退出可视模式
- 移动光标到想粘贴的位置
- 按
p
粘贴
- 按
- vim常见命令:https://blog.csdn.net/qq_37896194/article/details/80369432
u
撤回,ctrl+r
恢复- vim与shell之间的来回切换
:shell
可以在不关闭vi的情况下进入到shellexit
可以从shell回到vim
i和s
都可以进入insert
模式,有什么区别?还有哪些插入方式?- i:在光标所在字符前开始插入
- a:在光标所在字符后开始插入
- o:在光标所在行的下面另起一新行插入
- s:删除光标所在的字符并开始插入
- I:在光标所在行的行首开始插入 如果行首有空格则在空格之后插入
- A:在光标所在你行的行尾开始插入
- O:在光标所在行的上面另起一行开始插入
- S:删除光标所在行并开始插入
- 另外 u 撤销上一步的操作 Ctrl+r 恢复上一步被撤销的操作
:4,10s/a/apple/gc
可以将4到10行所有的a替换成apple,如何解读?4,10
代表从第四行到第十行s
代表“替换字符串”/a/apple
用apple替换a/g
代表global
,全局替换当前行,如果不带g
,则只会替换当前遇到的但一个字符串/c
代表confirm
,需要确认,当执行命令时,会出现确认提示- y替换,n不替换,a替换所有,q放弃,l替换第一个并进入插入模式,^E和^Y是提示你用Ctrl+e或Ctrl+y来滚动屏幕的
- 新建多个文件并同时编辑:
vi -O o{0..2}z.data
- -O纵向拆分窗口打开文件
- o{0..2}z.data对应三个文件:
- o0z.data
- o1z.data
- o2z.data
- 同时编辑文件
:windo normal i123
- 每个窗口中执行
normal i123
i
打开插入模式123
插入123
- 每个窗口中执行
别人的vim写python配置
用 Vim 写 Python 的最佳实践是什么? - 知乎用户的回答 - 知乎 https://www.zhihu.com/question/19655689/answer/23694752
如何让vim剪切板和系统剪切板通用
- 检查vim版本是否支持
vim --version grep | clipboard
- 如果显示内容中有
+clipboard
说明支持
- 如果显示内容中有
- 在
.vimrc
文件添加set clipboard=unnamed
快速复制所有内容
命令模式下:ggyG
缩进
shiftwidth
值是缩进的基础,对应:
- 按下>>缩进的宽度
- 按下tab缩进的宽度
但设置了是4,按下tab还是8,设置了tabstop之后才正常..为什么?
- 退格或删除时缩进的宽度
- 一般
tabstop``softtabstop
都与他相同 - 如果shiftwidth=0的话,就按照
tapstop
来不同模式
插入
命令行(注意区分命令和命令行模式,输入冒号后进入命令行模式,什么都不输入,直接输入指令快捷键就是命令模式)
命令
可视
…进入插入模式的不同方法
大部分移动光标的快捷键都可以在前面加上数字[count]
,实现指定次数的操作5j
光标向下移动5行2fo
在本行内向后查找到的第2个o
2;
重复2次上次的查找
i
在光标前插入I
在本行开头插入,其实相当于^i
两个命令a
从光标所在位置之后开始插入A
在本行结尾插入,其实相当于$a
两个命令gI
在第一行开头插入,可是这个命令要怎么使用?gi
在上次插入的位置插入
w
移到下一个单词开头W
移到下一个大单词开头(小单词指常规意义的被符号分割开的单词,大单词指空格、回车、tab分割开的单词)b
移到前一个单词开头B
移到前一个大单词开头
e
向后跳到词尾ge
向前跳到词尾
^
移到行首第一个非空字符$
移到行尾第一个字符,以上两个按键同时也对应正则表达式中的规则0
移到行首的第一个字符,包含空字符g_
移到行尾的第一个字符
-
移到上一行行首的第一个非空字符+
移到下一行行首的第一个非空字符
gg
移到首行,“游戏中打出gg,重新开始”G
移到尾行,Go
即已到尾行并在插入新的一行,进入插入模式;Go,理解为在文章的尾部进行追加gg=G
这个命令非常爽:按格式重新缩进所有行
行内查找
fa
向后查找第一个字符“a”;
重复查找,继续向后查找上次查找的内容,
重复查找,但反向Fa
和f
相反,向前查找 (大写的命令怎么按出来?shift+f,同时按,再按a,即为Fa,反向查找上一个字符‘a’)这时候如果用;
则还是向前查找,即;
保持之前的查找方向继续查找,,
是与之前相反的方向继续查找
标记位置
添加标记:ma
来为一个行标记位置,标位a
删除标记::delm
跳转标记:'a
来返回标记为a的位置所在的行`a
来返回标记位置所在的行和列
查看所有的标记::marks
各种标记的类型:''
上次跳转操作光标所在的位置'"
上次退出当前文件光标所在的位置'[
上次编辑的开始位置']
上次编辑的结束位置小写a-z
可以标记本文件内部的坐标大写A-Z
可以跨文件标记位置坐标数字0~9
在配置文件~/.viminfo中,可以保留标记ctrl+g
显示文件信息以查看坐标
常用的编辑快捷命令
u
撤销ctrl+r
还原.
重复上次操作ctrl+g
显示当前打开文件相关信息:文件名,当前行号,行总数,当前位置百分比,当前所在列数
常用设置
:set showcmd
显示输入的命令,输入命令途中,会在右下角显示:set history=100
可以通过键盘
set statusline=%-040.40(%F%m%)%-030.30([%l,%c]%)%p%%
"用40字符的固定宽度显示文件路径与是否修改,用30字符的固定宽度显示当前行列位置,最后显示百分比进度
set laststatus=2
"显示状态栏
set ruler
"显示标尺
set number
"显示行号
set showcmd
"命令模式下显示所键入的命令
set nocompatible
"不兼容老版本vi,使用vim模式
set showmode
"显示当前模式
set history=100
"??
你能把他们的含义都说清楚吗?🤪