配置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 %是什么意思?
  • 如何快速注释掉多行?image.png
    • 可以用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的情况下进入到shell
    • exit可以从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,需要确认,当执行命令时,会出现确认提示
      • image.png
      • 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这个命令非常爽:按格式重新缩进所有行

ggyG复制所有行

行内查找

fa向后查找第一个字符“a”
;重复查找,继续向后查找上次查找的内容
,重复查找,但反向
Faf相反,向前查找 (大写的命令怎么按出来?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可以通过键盘

  1. set statusline=%-040.40(%F%m%)%-030.30([%l,%c]%)%p%%
  2. "用40字符的固定宽度显示文件路径与是否修改,用30字符的固定宽度显示当前行列位置,最后显示百分比进度
  3. set laststatus=2
  4. "显示状态栏
  5. set ruler
  6. "显示标尺
  7. set number
  8. "显示行号
  9. set showcmd
  10. "命令模式下显示所键入的命令
  11. set nocompatible
  12. "不兼容老版本vi,使用vim模式
  13. set showmode
  14. "显示当前模式
  15. set history=100
  16. "??
  17. 你能把他们的含义都说清楚吗?🤪

Read-only file system解决方法:

https://blog.csdn.net/cq20110310/article/details/114929072