vim-manual学习

2024-05-13 04:32
文章标签 学习 vim manual

本文主要是介绍vim-manual学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

02.8 Finding Help

:help index 

显示所有vim的命令


:help CRTL-A

:help i_CRTL-A

分别找normal / insert mode 中Crtl-A的帮助


:help <UP>

:help i_<UP>

分别找 向上箭头 在 normal / insert mode中的帮助


:help :command

:help command

找 Ex-command / normal 模式下的command命令的帮助


:help func()                    查找的是一个函数func的帮助

:help 'number'               查找一个option的帮助


03. Moveing Around

同一行中移动到某字符

在一行中移动到某一个字符可以使用f或者t。

相应的大写字符表示反方向查找。

而";" ","  分号和逗号可以用来重复刚才查找的动作。


滚屏

Ctrl-U, Ctrl-D  向上向下滚屏

zz, zt, zb 分别把当前行放在屏幕正中,最上,最下


跳跃

一般来讲,当光标移动超出了本行,就称之为跳跃。

:jumps 可以列出跳跃的点。


vim中可以添加命名标记, :ma

然后可以用 'a 跳转到这个标记的地方

:marks 显示哪些地方做了标记


05 Set your settings

05.3 simple mapping

简单来说,就是把一组字符串映射到某个动作

:map \p i{<Esc>ea}<Esc>


用这个命令查看现有的map

:map


05.4 adding a plugin

plugin其实就是vim的脚本。只要將vim的脚本文件放到plugin的目录就算是添加了脚本。

有两种plugin

   global plugin:  全局的

   filetype plugin:  只使用某种文件类型

standard-plugin-list  可以显示现有的plugin列表。


添加plugin的步骤对这两种plugin是一样的

1. 找到格式的plugin脚本文件

2. 放到适当的位置

这差别就是在这个位置上, 全局的位置在~/.vim/plugin, 而filetype的是在~/.vim/ftplugin。

当然还要记得 :filetype plugin on


05.5 help 文档

help文档放在了 ~/.vim/doc下面

:helptags ~/.vim/doc 来生成帮助文档的tag


05.6 option window

:options 可以列出所有的option, 并按照主题分类


恢复默认设置, 在option名字后加上一个&

:set iskeyword&


06. 语法高亮

打开

:syntax enable


配色方案在$VIMRUNTIME/colors/目录下,自己也可以在~/.vim/color/目录下创建配色方案。

在$VIMRUNTIME/syntax/colortest.vim文件中有颜色的样式可以选择


07. 多文件编辑

有两个预订一的mark很有意思

`"    上一次离开文件时候的位置

`.    最后一次编辑时候的位置


07.5  多文件间的拷贝

使用“寄存器”

"fyas     保存一句话到f寄存器

"fp         把寄存器f中的内容复制到本地


10. 大改动


记录并重复命令

qa  ...   开始记录之后的命令到a寄存器

q          结束记录

@a      在当前位置重复记录在a的命令

@@     执行刚才运行记录的命令


编辑寄存器的命令

"ap       把寄存器a中的值输出

修改

"ay$    把编辑后的命令保存到寄存器a


命令的范围

:1,5s/this/that/g       替代的范围是在1到5行

:.s/this/that/g            点表示只作用在当前行

:.,$s/this/that/g         $表示文件的最后一行,表示作用范围是当前行到文件末尾

:%s/this/that/g         %表示整个文件

:?^Chapter?,/^Chapter/s=grey=gary=g     范围是往前Chapter到往后Chapter


全局命令

:g+//+s/foobar/barfoo/g

匹配//所在的行,执行s替代命令。 將foorbar替代为barfoo.


10.9 使用外部程序

!5Gsort                                先將光标移到文件开头,这个命令就可以把头5行排序

:.,.+4!sort                            This is the same as above


:read !ls                               把当前目录文件明写到文件里

:write !wc                             可以计算文件的字数,行数


So using external program could have two types.

The first one is a "filter", which like a pipe, will pass the content in the file to the program,

and then write back the output to file.


While the second type, the file content is not involved.


20.5 command line window

在normal 模式下, q: 可以打开一个窗口,显示了命令的历史。

可以在某一行命令中编辑,回车后就可以执行编辑后的命令。


21. session

这样可以记住你的工作环境,下次打开直接就恢复到上次的工作情况。

:mksession style.vim

:source style.vim


22. Finding the file

22.1 file browser

以前看到过这个东西,不过没想到还有些高级功能没有用到过。


打开

:edit .


打开后会显示当前目录下的文件信息, 下面列几个我觉得有意思的命令

i    调整显示的方式

s   调整排序方式

r    反转排序顺序


22.2  current directory

:pwd      显示当前目录

:cd         change directory


22.3 find a file

在文件中写了 #include "header.h". 然后想要找到这个文件在哪里。

可以將光标停在这个文件名上,然后 gf 可以跳转到这个文件。


其实vim是在当前目录下找的,如果此文件不在当前目录下,就要设置path选项。


22.3 buffer

每打开一个文件就有一个相应的buffer。


:buffers       显示buffer

:ls                尽然也是同样的作用


这个里面会显示已经有的buffer,以及一些属性。

而且每个buffer有一个编号。

:b 2            

就可以打开第二个buffer.


:bdelete 2

就从buffer list中删除第二个。


26 Repeating

26.3

多个文件同时修改

把这些文件都打开

:args *.c

同时操作

:argdo %s/abc/def/ge | update


也可以用 :windo  :bufdo


26.4  using vim from a shell script

对每个.txt文件,做change.vim文件中的操作。

change.vim文件中是vim的命令脚本。

for file in *.txt; do

    vim -e -s $file < change.vim

done


27 Searching commands and patterns

不匹配大小写

:set ignorecase


临时决定要不要匹配大小写

/\cword         不匹配大小写

/\CWord        匹配大小写


27.3  offset

光标停在搜索到字符串下面某行

/string/2                      找到string, 然后光标停在之后的两行

找到单词,再往后走

/string/e+2                  找到string, 然后走到 g 再往后两个字符


27.4 matching multiple times

* 匹配 0 或 多次

/a*                     匹配a,  0 或 多次

/ ab *              匹配ab, 0或多次


+ 匹配 1 或 多次

/ab\+                匹配 ab, abb, abbb


= 匹配 0 或 1 次

/folders\=        匹配 folder 或者  folders


{} 设定匹配次数

/ab\{3,5}         匹配 abbb, abbbb, abbbbb

/ab\{3}            只匹配 abbb


27.5 Character ranges

    item    matches            equivalent ~
    \d    digit            [0-9]
    \D    non-digit        [^0-9]
    \x    hex digit        [0-9a-fA-F]
    \X    non-hex digit        [^0-9a-fA-F]
    \s    white space        [     ]     (<Tab> and <Space>)
    \S    non-white characters    [^     ]     (not <Tab> and <Space>)
    \l    lowercase alpha        [a-z]
    \L    non-lowercase alpha    [^a-z]
    \u    uppercase alpha        [A-Z]
    \U    non-uppercase alpha    [^A-Z]

更多的range, 可以查help


 40.2 自定义命令

定义一个命令删除一行. 注意,自定义的命令要以大写字母开头

:command DeleteFirst 1delete


查看都有哪些自定义的命令

:command


如果觉得命令定义不准确可以重新定义

:command! DeleteFirst ggd

这样就重新定义了DeleteFirst这个命令


如果想要删除某个自定义的命令

:delcommand DelteFirst


或者你突然不想要所有的自定义命令了

:comclear


40.3 Autocommand

就是在某些事件下,自动执行的机制


显示所有的自动命令

:autocmd


显示某个事件的自动命令

:autocmd BufNewFile


显示某个类型文件的自动命令

:autocmd * *.c


41 Vim脚本

第一个脚本

let i = 1
while i < 5
    echo "count is" i
    let i += 1
endwhile


41.2 变量

显示定义的变量

:let


定义变量

:let i = 1


定义局部变量, 不过这个范围也是本脚本的

:let s:count = 1


删除变量

:unlet s:count

神奇的事情是,一个脚本中的局部变量在这个脚本执行完之后不会自动释放。

下次再执行这个脚本的时候,还是可以读到。


41.6 使用函数

在这个section中,已经按照分类列出了常用的函数。

要更详细的解释可以

:help functions


41.7 自定义函数

函数名必须以大写字母开头。


41.11 编写插件














这篇关于vim-manual学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/984677

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件