精简实用系列
- 核心:
vim光标定位.
- 在现代可视化做的普遍比较好的IDE中,如果辅以强大的定位的功能可以让IDE的编辑体验锦上添花
- 基于此,我总结了实际使用中的一些最高频命令
- vim特别灵活,可以通过不同的操作来达到一样的效果,以至于刚开始使用的时候不知道用哪一种方式来达到目的
准备工作:
- 切换输入法:尽量使用纯英文编写内容(包括注释)
- 进入标准模式(以便执行新指令)
- 定位到需要编辑的行(或者合适的附近行)
- 利用行相关的编辑技巧
行的编辑技巧(最实用的部分)
- 如果屏幕中的某一样内容很多(很长的一行,这是后如果您还使用b(甚至是h)就不方便,而且nb/nh带有盲目性
- 推荐使用查找:
- 首先光标定位到改行(好处是如果该文件内容过多,那么不容易在预览的时候页面跑到其他偏远地方;此外,可以减少查找后的修正(N/n)
- :line
- 向前查找
- :?chars
- 上一处
- N
- 向后查找
- :/chars
- 下一处
- n
光标移动之行首/行尾
- 非空字符行首
(比绝对行首更实用些)(但是如果只是注释改行,那么可以考虑实用编辑器(IDE)的注释快捷键即可(在改行的任何位置既可以注释掉改行代码)
- ^(即,shift+6)
- 行尾:
- 0(单独一个数字0,而且不要按shift,否则变成’)’
其他常用的
- 在某行行末添加内容(大写)
- A
- 在行首插入内容(大写)
- I
- 当然还包括其他的插入修改操作:
- 光标前插入模式(insert)
- i
- 光标后插入模式(append)
- a
- 行间插入模式:
- 向上插入行并开始编辑
- O
- 向下插入行并开始编辑
- o
- 以单词为单位进行修改/删除
- 修改
- lbce
删除(delete a word)
- daw
修改单词
修改单词的部分字符
- 向前修改
- cb
- 向后修改
- ce
字符删除:
- 向前删除(光标前)
- X
- backSpace
- 向后删除(从光标当前开始计)
- x
- delete
搜索替换
vim默认
- 全局替换
- :%s/old/new/g
- 行区间替换:
- :n1,n2s/old/new/g
- 光标所在行内替换:
- : s/old/new/g
- 忽略大小写开关
在任何地方键入\c
,则该搜索表达式是忽略大小写的
删除单词通用技巧:
- 以下两种方法,可以在您的光标处于单词中的任意位置时都删除一整个单词
- lbce(一般来讲,记住这一个就够用啦,especially when you are editing
english segments)
- daw
- bdw
删除光标前的单词部分的字符
- db
(方块光标所在的字符会被保留)
删除光标处及以后的单词部分的字符(包括附带的空格一并删掉)
- dw
删除到单词最后一个字符(空格会被保留)
- de
删除指定行间区间的内容
基于d
命令的光标定位删除操作
例如删除第r1
行至r2
行之间的内容:
- 将光标定位到第
r1
行 - 键入
d
命令键 - 将光标定位到第
r2
行 - 删除完毕
删除任意区间的字符(特别是无规律字符序列/长序列)
基于visual
模式下的可视化选择删除操作
- 使用v模式:
- 明确你想要删除的区间,并且将光标移动到区间的起点start
- 移动光标一般使用
/
(或者向前搜索?
)控制
- normal模式下键入
v
键 - 操作光标移动区间的结尾end,即选中需要被删除的内容
- 移动光标一般使用`/`(或者向前搜索
?
)控制
- 键入
d
键执行删除
删除方法的小结
在执行删除之前,明确区间,然后将光标定位到被删除内容的起始位置(或者结束位置)
然后根据需要进入d
命令或者v
(更准确的说是一种模式)
然后移动光标到另一个区间边界处(如果是删除整行的,移动到改行即可)
这样前者就会删除到若干行,后者需要再按下d
才会删除
总之
- 都需要移动光标(只是精度更具需求有所不同,删除若干行的精度要求低,删除指定区间的,精度要求较高(当然,前者是后者的一种特例))
- 都需要实用到
d
命令(只是时机不同);
note!
虽然:/
和:?
一般情况下很管用,但是在重复字符较多的情况下不容易定位(需要按较多的N/n来修正,不过和不是无解,您可以在利用:?
和:\
多打几个字符(比如目标位置的前一个字符或者后一个字符甚至几个字符),这样就可以较好的区分开来,使得定位更加准确)
换行符的删除
某些时候,您可能需要删除换行符,vim提供了方便的换行符删除操作,使得这些行被拼接为同一行
删除当前行的换行符(join)大写的字幕:J
连续删除n个换行符以拼接n行内容:nJ
额外的总结
移动光标
单位级
-
h
向左一字符 -
j
下一行 -
k
上一行 -
l
向右一字符
单词级
跨单词:
-
w
orW
向右移动到下一单词开头
本单词内:
-
e
orE
向右移动到单词结尾(但是位于单词结束字符,则会跨单词移动到后一个单词的结尾字符,您可以理解为,一旦按下e,光标一定不会呆在原地,且要向后移动) -
b
orB
向左移动到单词开头(但是位于单词开始字符,则会跨单词移动到前一个单词的开始字符,您可以理解为,一旦按下b,光标一定不会呆在原地,且要向前移动)
vim实用系列
块级
-
gg
到文档第一行 -
G
到文档最后一行 -
0
到行首(第 1 列) -
^
到第一个非空白字符 -
$
到行尾
相对屏幕的光标移动
-
H
移动到屏幕顶端 -
M
移动到屏幕中间 -
L
移动到屏幕底部
相对屏幕的内容滚动
-
Ctrl-d
向下移动半页 -
Ctrl-u
向上移动半页 -
Ctrl-f
向下移动一页 -
Ctrl-b
向上移动一页
按行跳转光标
-
:<N>
or<N>gg或<N>G
跳转到第 N 行 -
:+<N>
or<N>j
向下跳 N 行 -
:-<N>
or<N>k
向上跳 N 行