//高亮表示重要,易忘
设置一直显示行号: /etc/vim vimrc 增加 set nu
General
在命令模式下:
命令的组合:数字+命令
编辑模式的命令 小写一般往后,大写一般往前
visual mode
v
visual block mode
ctr+v
repeat the previous command (last change)
.
undo/redo
u/ctr+r
很多命令能通过
开始位置 命令 结束位置 执行
ctr+- 减小Vim窗口
ctr+shift+= 增大Vim 窗口
移动光标
basic movement
h j k l
word movement
w 下一个单词的开头
e 下一个单词的末尾
如果你认为单词是由blank字符分隔符,那么你需要使用大写的E和W
b 当前(前一个)的开头
ctr +f向下翻页
ctr + b 向上翻页
H 当前屏幕的最左上角
nH 当前屏幕第 n 行的行首
number powered movement
5w
goto start/end
0/$
goto matching parentheses
%
goto #line
gg G NG
^ 到本行第一个不是blank字符的位置
g_ 本行最后一个不是blank字符的位置
t, 在,之前的一个字符,,可以换成其他字符
区域选择 <action>a<object>
或 <action>i<object>
在visual 模式下,这些命令很强大,其命令格式为
<action>a<object>
和 <action>i<object>
- action可以是任何的命令,如
d
(删除),y
(拷贝),v
(可以视模式选择)。 - object 可能是:
w
一个单词,W
一个以空格为分隔的单词,s
一个句字,p
一个段落。也可以是一个特别的字符:"、
'、
)、
}、
]。
假设你有一个字符串 (map (+) ("foo"))
.而光标键在第一个 o
的位置。
vi"
→ 会选择foo
.va"
→ 会选择"foo"
.vi)
→ 会选择"foo"
.va)
→ 会选择("foo")
.v2i)
→ 会选择map (+) ("foo")
v2a)
→ 会选择(map (+) ("foo"))
块操作: <C-v>
块操作,典型的操作: 0 <C-v> <C-d> I-- [ESC]
^
→ 到行头<C-v>
→ 开始块操作<C-d>
→ 向下移动 (你也可以使用hjkl来移动光标,或是使用%,或是别的)I-- [ESC]
→ I是插入,插入“--
”,按ESC键来为每一行生效。
复制粘帖
p 粘帖
yy 拷贝当前行 相当于 ddp
y 从这里开始拷贝
0y$
ye
y2/foo
还有很多时间并不一定你就一定要按y才会拷贝,下面的命令也会被拷贝:
d
(删除 )v
(可视化的选择)gUw
(变大写)guw
(变小写)??
插入,删除
a 光标后插入
c 修改命令,进入编辑模式
cw 替换光标所在位置后到一个单词结尾的字符,进入插入模式
r 取代命令,不进入编辑模式
s 替换光标所在位置字符
自动提示: <C-n> 和 <C-p>
在 Insert 模式下,你可以输入一个词的开头,然后按 <C-p>或是<C-n>,自动补齐功能
I 移到当前行首,在前面插入文本
A 移到当前行尾,在后面插入文本
insert a line after/before
o/O
insert text repeatedly
3iyesEsc
remove charactor under/before cursor
x/X
delete and save to the paste board
d dw d3e
查找,替换
find a charactor
f
find word under curser next/previous
*/#
search text next/previous
/text n/N
命令模式
:e <path/filename> 打开文件
:saveas <path/filename> 另存为
:x :wq ZZ 保存退出
:q! 不保存直接退出
:bn :bq 移到打开的文件