Linux-Vim-速查表

介绍

Vim是一个非常高效的文本编辑器。本文是为Vim 8.0编写的。
有关快捷符号,请参阅 :help 键符号

退出

命令 作用
:q 关闭文件
:qa 关闭所有文件
:w 保存
:wq / :x 保存并关闭文件
ZZ 保存并退出
ZQ 不检查变更的退出

退出插入模式

sc /  退出插入模式
退出插入模式,并终止当前命令

剪贴板

x 删除字符
dd 删除行(剪切)
yy 复制行
p 粘贴
P

在当前光标位置之前粘贴(插入)文本。

将复制的文本粘贴到当前光标所在位置的前面

"*p / "+p 从系统剪贴板粘贴
"*y / "+y 粘贴到系统剪贴板

查找、替换

:%s/foo/bar/g 全局替换 foo 为 bar 

导航

h j k l

箭头键

  • h:向左移动光标
  • j:向下移动光标
  • k:向上移动光标
  • l:向右移动光标
 / 

Ctrl + U 上翻半页

Ctrl + D 下翻半页

 / 

Ctrl + B 上翻一页

Ctrl + F 下翻一页

单词

b / w
  • b:向后移动到前一个单词的开头。
  • w:向前移动到下一个单词的开头。
ge / e

ge命令的功能是将光标移动到上一个单词的末尾,

而e命令的功能是将光标移动到当前单词的末尾

0 (zero) 行首
^ 行首的第一个非空白字符
$ 行尾

字符

fc 字符c前位置
Fc 字符c后位置

文档

gg 第一行
G 最后一行
:{number} 第 {number}行
{number}G 第 {number}行
{number}j 往下翻 {number} 行
{number}k 往上翻 {number} 行

窗口

zz 行中央
zt 行的顶部
zb 行的底部
H 屏幕的顶部
M 屏幕的中部
L 屏幕的底部
n 搜索模式的下一个匹配位置
N 上一个匹配位置
*

在当前光标下搜索当前词的下一个出现。

它会将光标移动到下一个匹配的单词上,

并且会高亮显示匹配的结果

#

在当前光标下搜索当前词的上一个出现。

它会将光标移动到上一个匹配的单词上,

并且会高亮显示匹配的结果

Tab标签页

:tabedit [file] 打开一个新的标签页,并在其中编辑一个新的文件
:tabfind [file] 如果文件存在,在新标签页打开
:tabclose 关闭当前Tab标签页
:tabs

列举所有Tab标签页

:tabfirst

导航到第一个标签页

:tablast 导航到最后一个标签页
:tabn 导航到下一个标签页
:tabp 导航到上一个标签页

编辑

a

在当前光标的下一个字符处进入插入模式,

可以进行文本的插入和编辑操作

A

在当前行尾处进入插入模式,

可以进行文本的插入和编辑操作

i 进入插入模式
o 下一行
O 上一行
s 删除当前字符并进入插入模式
S 删除当前行并进入插入模式
C 删除至行尾并进入插入模式
r

r表示替换单个字符。

输入r后,光标后的字符将被替换为你键入的字符

R

按下大写字母R时,你会进入替换模式,

此时你可以连续输入字符,

这些字符将替换光标所在的位置及其后续的字符

u 撤销上一步的操作
Ctrl + R  重做撤销的动作

Visual模式

Visual模式切换

v 进入普通Visual模式
V 进入行Visual模式
进入块Visual模式

Visual模式下命令

d / x 删除选择部分
s 替换选择部分
y 复制选择部分

操作符

操作符允许你在一个文本范围内操作(由动作定义操作范围)。

使用方式

操作符 后跟 动作关键词

操作符速查表

d 删除
y 复制
c 修改 (删除 且 插入)
> 向右缩进
< 向左缩进
= 自动缩进
g~ 反转大小写
gU 切换为大写
gu 切换为小写
!

执行外部命令或过滤文本

示例:

!ls 将会列出当前目录中的文件列表,

:!sort 可以对当前光标所在行以下的文本进行排序

:!  暂时离开 Vim 编辑器并进入命令行环境执行命令,然后再返回编辑器。

示例

结合操作符和动作来使用

dd 删除当前行
dw 删除到下一个单词
db 删除到单词的开头
2dd 删除2行
dip 删除一个text对象(在paragraph中)
(visual模式) d 删除选择部分

文本对象

使用方式

文本对象允许你(使用一个操作符)在文本块(对象)中或其周围进行操作。

v i p
操作符

[i]nside or [a]round  

对象中 或 对象周围

文本对象

文本对象速查表

p 段落
w 单词
s 语句
[ ( { < 一个 [], (), 或 {} 文本块
' " ` 一个 引号 字符串
b 一个 [(  文本块
B 一个  [{ 内部文本块
t 一个 XML标签 文本块

示例

vip 选择段落
vipipipip 选择多个段落
yip 复制段落内部文本
yap 复制段落文本(包括换行符)
dip 删除段落内部文本
cip

修改段落内部文本

删除当前光标所在位置段落内部文本并进入插入模式

文件对比

gvimdiff file1 file2 [file3] 查看文件之间的差异

杂项

折叠

zo / zO 展开当前折叠文本块
zc / zC 折叠当前文本块
za / zA 切换文本块的展开、折叠
zv 展开当前行
zM 折叠全局
zR 展开全局
zm

将当前行及以下的折叠起来,使其隐藏起来

zr 将当前光标所在的折叠文本展开,显示其中的内容
zx 折叠当前光标所在行后面的内容

导航

% 最近的/匹配 {[()]}
[( [{ [< 上一个 ( 或 { 或 <
]) 下一个
[m 上一个 method 开始
[M 上一个 method 结尾

跳转

跳转到上一个位置
向前跳转
gf 跳转到光标位置

计数器

计数+1
计数-1

窗口

z{height} 调整窗格大小为{height}行高

标签

:tag Classname 跳转到Classname的第一个定义
跳转到定义
g]

用于查找光标下的单词的定义。

它会在当前文件中搜索与光标下的单词相匹配的其他地方,

并跳转到第一个匹配的位置

跳转到最后一个位置
跳转上一个位置/跳转到下一个位置
:tselect Classname

使用tselect命令来打开一个新的窗口,

以在其中查看所选标签所指向的位置

:tjump Classname 在当前文件中跳转到与指定的标签名称匹配的位置

大小写

~ 反转大小写 (Case => cASE)
gU 切换为大写
gu 切换为小写
gUUgUgU) 切换当前行为大写
guu (gugu) 切换当前行为小写

备注:在 visual 或 普通 模式下执行

标志

`^ Last position of cursor in insert mode
`. Last change in current buffer
`" Last exited current buffer
`0 In last file edited
'' Back to line in current buffer where jumped from
`` Back to position in current buffer where jumped from
`[ To beginning of previously changed or yanked text
`] To end of previously changed or yanked text
`< To beginning of last visual selection
`> To end of last visual selection
ma Mark this cursor position as a
`a Jump to the cursor position a
'a Jump to the beginning of the line with position a
d'a Delete from current line to line of mark a
d`a Delete from current position to position of mark a
c'a Change text from current line to line of a
y`a Yank text from current position to position of a
:marks List all current marks
:delm a Delete mark a
:delm a-d Delete marks abcd
:delm abc Delete marks abc

命令行

将当前单词插入命令行
" 从 “ 寄存器粘贴
插入模式下自动补全路径

文本对齐

:center [width]
:right [width]
:left

计算器

=128/2 显示128/2的结果 : ‘64’

备注:插入模式下执行

以错误方式退出

:cq
:cquit

拼写检查

:set spell spelllang=en_us 开启US英语拼写检查
]s 动到光标之后的下一个拼写错误的单词
[s 移动到光标前一个拼写错误的单词
z= 建议游标下方/后的单词拼写
zg 添加单词到拼写列表
zw 把单词标记为拼写错误
zu / C-X (Insert Mode) 在光标下从拼写文件建议不好的词

其他

. 重复最后一个命令
]p 在粘贴时会自动调整缩进,并将复制的文本插入到行末尾
:set ff=unix 将Windows行结尾转换为Unix行结尾

你可能感兴趣的:(linux命令,linux,vim,运维)