开发微网站,百度新闻,wordpress淘宝客网站,建设工程施工合同司法解释2022Vim 进阶1
所有你觉得简单重复#xff0c;可以自动化实现的操作#xff0c;都是可以自动化实现的。
Vim光标移动拾遗
w#xff1a;下一个单词的开头#xff0c;e#xff1a;下一个单词的结尾#xff0c;b#xff1a;上一个单词的开头#xff0c;
0#xff1a;行首…Vim 进阶1
所有你觉得简单重复可以自动化实现的操作都是可以自动化实现的。
Vim光标移动拾遗
w下一个单词的开头e下一个单词的结尾b上一个单词的开头
0行首最行首不管行首字符是否为空$行尾^非空字符行首
%匹配括号处前跳后后跳前都可
gd跳到某变量定义处其实是当前函数体内该变量第一次出现的位置gD整个文件内该变量第一次出现的位置*#nN
[{移动到前一个没有匹配的左大括号处用于跳到函数、循环等作用域的开头
rnormal 模式下替换一个字符如 ra 将当前字符替换为 aRnormal模式下从当前到行尾替换
cw删除单词并进入编辑模式C输出到行尾并进入编辑模式。S删除整行并进入编辑模式s删除当前字符并进入编辑模式
~替换大小写并后移一个字符
自定义计数操作 d2w删除(其实d都是剪切)两个单词 2dw删除单词做两遍。4dd d3j
Vim 修饰词 i inner dip(delete inner paragraph) 删除一段文字空行分隔删除操作不包括空行 di(删除括号内内容 a around dap删除一段文字删除操作包括空行 t till dt)删除从当前光标到本行下一个 ) 处删除操作不包括 ) f find df)删除从当前光标到本行下一个 ) 处删除操作包括 )
vim mark标签
m 生成一个 mark 标签如 a 生成一个名为 a 的标签 跳转到一个 mark 标签如 a 跳转到名为 a 的标签处恢复行列位置’ 跳转到一个 mark 标签如 a 跳转到名为 a 的标签处仅恢复行位置即跳到标签所在行行首 或 ‘’ 在起跳点和标签 a 间反复横跳
mark 还有很多用法可参考 https://vimjc.com/vim-mark.html
vim多标签页
对于vim这个来说, 单纯的用多子窗口sp、vsp来操作, 感觉还是不够的, 还要结合标签页tab pages来,才能更好的操作。
所有关于标签的命令都是以 :tab 开始的, 可以用tab键来查看提示 :tabnew 新建标签 :tabedit fileName 在新标签中打开文件简写为 :tabe :tabc 关闭当前标签 :tabo 关闭其他所有标签 :tabfirst 切换到第一个标签 :tablast 切换到最后一个标签 :tabp 切换到前一个标签 tab previous :tabn 切换到下一个标签 tab next :tabs 查看标签 gtgT 常规模式下直接切换标签
visual模式
v逐字符选中V整行选中C-v矩形块 block 选中
搜索替换
:[range]s/from/to[flags]在 range 范围内将 from 替换为 to。 range、flags 常用含义如下
flags
flag作用%复制上次替换命令的flagsg替换每行所有的匹配值默认只替换每行的第一个匹配值c替换前需确认e替换失败时不报错i / I大小写不敏感 / 敏感
range
range功能2121行$最后一行%全部行21,25从21行到25行.当前行.3当前行后的第3行.,$当前行到最后一行.,.5 / .,.5当前行及之后5行
多个文件内替换
:args *.c *.h
:argdo %s/ext4/ext5/g
:argdo update
:argdo exit注意 Vim 中的替换与 sed 中的替换其实是很像的
sed -i [range]s/from/to/[flags] filename 将⽂件 filename 内的 from 替换为 to
-i 表示直接编辑文件内容不加将会打印输出到 stdout。
Vim 宏
如生成从 1 到 1000 的序列等多次雷同的操作
录制宏q如 qa 表示开始录制名称为 a 的宏。运行宏如 a 表示执行名称为 a 的宏10a 表示执行 10 次。
详见Vim 重复操作的宏录制
安装插件
mkdir -p ~/.vim/pack/vendor/start将插件 clone 到该目录下即可
ctags
生成 tags 方便跳转看代码支持多种语言
安装 ctagssudo apt install exuberant-ctags创建 tags 文件 ctags -R .若查找 inode_operations 的定义 No tags file 当前目录不存在 tags 文件在父目录中寻找 tags 文件在 .vimrc 中添加 set tags./tags;,tags 使用 查找当前文件中的某个变量的定义光标在该变量上Crtl]列出所有某个变量的定义及引用g]直接打开定义 inode_operations 的文件直接在当前目录下命令行中 vim -t inode_operations
shell使用vim键位 bash : set -o vi zsh : bindkey -v fish : fish_vi_key_bindings
这里说一下 bash 中默认是 emacs 模式具体当前是什么模式可以用 set -o 命令查看然后通过 set -o enacs 和 set -o vi 来回切换。
键位图中文版 其他常用插件
gitguttereasymotionfzfVim-linux-coding-stylecscope…
Ref
https://www.bilibili.com/video/BV1PL411M7bg?fromsearchseid12655157522675339145spm_id_from333.337.0.0