vim进阶使用

用了一段时间vim感觉其确实是很强的编辑器,前提是熟悉vim的使用。如果只会切换模式、输入,可能vim感觉并不是很好用,所以说vim入门难。但vim的灵活性上限很高,想要融汇贯通,随心输入,从我的使用经验来看,进步最快的方法就是先熟悉基本的操作,然后在每次使用vim的时候,任何操作,即使是简单的操作也要求自己使用最方便的方法,不知道没有关系可以去查,很多命令组合使用的奇妙效果,自己是很难想到的,但是做到1、记录下来2、弄清楚原理3、多使用几次就学会了,开始第一次使用会有点痛苦,有点慢,但是积累下来会进步的越来越快。为了系统地掌握vim的命令,加深记忆并方便查找,这里总结vim用法。

首先基础的命令,在命令模式下

1 光标移动

1.1 最小的移动单元
  • h 左
  • j 下
  • k 上
  • l 右

感觉不是很好记,但用的多了就熟悉了,总的来说hjkl四个键可移动光标,左边的h就是向左,右边l向右。j像一个向下钩子,剩下的k向上。

1.2 以单词为单位的光标移动
  • w, W向右移动到下一个单词开头 word。
  • e, E向右移动到单词结尾 end
  • b, B向左移动到单词开头 begin

如果中文就是下一句话

1.3 以页为单位的移动
  • ctrl d 向下移动半页
  • ctrl u 向上移动半页
  • ctrl f 向下移动一页
  • ctrl b 向上移动一页
1.3 更灵活的移动
  • gg 到第一行
  • G 最后一行
  • 0 到行首
  • ^移动到本行首部,不包括空格
  • g_ 移动到本行尾部,不包括空格
  • $到行尾
  • :\<N>跳转到第N行
  • %括号匹配, 包括() , {}, []
1.4 匹配查找移动
  • *移动到与当前单词相同的下一个单词
  • \#移动到与当前单词相同的上一个单词。(从头到尾循环查找)
  • /<search> 向后查找指定字符串 (n 继续查找下一个, N 继续查找上一个)
  • ?<search> 向前查找指定字符串 (n 继续查找下一个, N 继续查找上一个)

nN 是有方向性的,若你之前通过 \* 查找,则 n 会继续向文档尾方向查找,N
向文档首方向;反之,若你通过 # 查找,则 n 指向文档首,N 指向文档尾*.

  • f<X> 当前行内向行尾方向查找并定位到字符 X

  • t<X> 当前行内向行尾方向查找并定位到字符 X 之前

  • F<X> 当前行内向行首方向查找并定位到字符 X

  • T<X> 当前行内向行首方向查找并定位到字符 X 之后

; 继续向当前方向查找下一个字符
, 向当前相反方向查找下一个字符

1.4 移动命令的组合

vim的生产力来自命令的组合。

  1. 所有的命令前都可以加一个N, 表示后面的命令执行N次。 比如:

<N> l, 向右移动N次

<N> w, 移动到下N个单词开头

  1. 有些命令执行多次和一次一样, 配合数字可以特定效果

<N> gg, 或<N>G 移动到第N行

2 输入内容

进入insert模式有几种方法,之前我觉得都差不多,就是输入的位置不同,进去之后再微调也可以, 但是不同vim使用者的差距就是输入同样的内容能不能尽可能的减少操作。所以还是熟悉一下这个进入insert方法的差异。

  • i 进入当前光标的前面位置
  • I 行首插入
  • a是选中区域的后一个位置
  • A 行尾插入
  • o另起一行
  • O在当前行前插入新行
删除(并保存到 vim 剪贴板)
  • x 删除当前字符,相当于 insert 模式下的 Delete
  • X 删除前一个字符,相当于 insert 模式下的 Backspace
  • dd 删除当前行
  • d<X> 删除指定内容并保存到 vim 剪贴板
  • c<X> 删除指定内容同时进入 insert 模式

说明: <X> 部分是对操作内容的描述,如果要删除一个单词,就输入 dw 或者 de

复制
  • yy 复制当前行到 vim 剪贴板
  • y<X> 复制指定内容到 vim 剪贴板
粘贴
  • p 在当前位置后粘贴
  • P 在当前位置前粘贴
合并
  • J 将当前行与下一行合并
替换
  • r<X> 将当前字符替换为 X
  • gu<X> 将指定的文本转换为小写
  • gU<X> 将指定的文本转换为大写
  • :%s/<search>/<replace>/ 查找 search 内容并替换为 replace 内容
撤销、重做
  • u 撤销
  • Ctrl-r 重做
保存文件
  • :w 保存当前文件
  • :wa 保存全部文件
  • :wq or ZZ 保存并退出
  • :q! or ZQ 强制退出,不保存
  • :saveas <new filename> 文件另存为
  • :w <new filename> 文件另存一份名为 <new filename> 的副本并继续编辑原文件

3 一些小技巧

重复上一次命令

vim 有一个特殊的命令 .,你可以用它重复执行上一个命令。

按 dd 删除本行按 . 重复删除操作2.
缩进
  • >> 向右缩进当前行
  • << 向左缩进当前行
自动排版
  • == 自动排版当前行
  • gg=G 当前文档全文自动排版
  • <N>== 对从当前行开始的 N 行进行自动排版
  • =<N>j 对当前行以及向下 N 行进行自动排版
  • =<N>k 对当前行以及向上 N 行进行自动排版

4 块操作

快操作就是同一块文字进行同样的操作,比如在一段代码前加注释,

  1. 首先Ctrl+v进入块模式VISUAL BLOCK

  2. 移动光标选择去确定要操作的块。

  3. 操作。 这里以每行首插入#为例, 进入行首,I, 进入插入模式,输入#

  4. esc两次,生效 。

第三步操作可以换成任何操作,都是对整个选中的快生效。

5 配置一下vim

“工欲善其事,必先利其器”。尽管 vim 非常强大,但默认配置的 vim 看起来还是比较朴素的,为了适合我们的输入需求,要对 vim 进行一些简单的配置。

  • :set number 显示行号
  • :set relativenumber 显示相对行号(这个太好用了)
  • :set hlsearch 搜索结果高亮
  • :set autoindent 自动缩进
  • :set smartindent 智能缩进
  • :set tabstop=4 设置 tab 制表符所占宽度为 4
  • :set softtabstop=4 设置按 tab 时缩进的宽度为 4
  • :set shiftwidth=4 设置自动缩进宽度为 4
  • :set expandtab 缩进时将 tab 制表符转换为空格
  • :filetype on 开启文件类型检测
  • :syntax on 开启语法高亮

这里列出的是命令,你可以通过在 vim 中输入进行设置,但这种方式设置的参数只在本次关闭 vim 前生效,
如果你退出 vim 再打开,之前的设置就失效了。

若要永久生效,需要修改 vim 的一个自动配置文件,一般文件路径是 /home/.vimrc

如果没有就新建一个:

再次启动 vim 或在 vim 中执行 :source ~/.vimrc你的配置就应该生效了。

6 宏操作

宏就是把一系列操作给记录下来,可以反复调用。

举个例子,给下面一段文字行首单词大写换成小写。

 The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those.

在命令模式下执行

qa0guljq18@a

就可以了。

怎么回事呢 ?原理也很清晰

  1. q 开启宏录制
  2. a 是给这次宏的录制过程一个存储位置,可以是 0-9 或 a-z;
  3. 下面是宏的操作, 0是到行首,gul是将首字母变小写,j是到下一行
  4. 再次q关闭宏录制
  5. @是唤起宏,@a是唤起宏a, 18@a将宏a执行18次。
如何查看宏呢?
  1. 可以使用:reg查看所有的宏(register, 寄存器)
  2. 查看特定的宏, 比如a, 使用"ap
如何修改宏 ?
  1. 找一个空行, "ap 将宏命令打印出来,然后进入insert修改,修改完成后,使用"ayy应用。
  2. :let @a=“a0gulj”, 双引号中是新的内容。

以上是vim的用法, 熟练使用成为一个supervimer还需要持续不断的使用和练习,在使用中新学习到新的用法我也会更新。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值