Skip to content

Instantly share code, notes, and snippets.

@jay16
Last active January 3, 2016 07:59
Show Gist options
  • Save jay16/8433388 to your computer and use it in GitHub Desktop.
Save jay16/8433388 to your computer and use it in GitHub Desktop.
ctrl+a 跳到行首
ctrl+e 跳到末尾
ctrl+d 删除光标后1个字符
ctrl+h 删除光标前1个字符
ctrl+u 清除至行首
ctrl+k 清除至行尾
ctrl+f 光标后移1个字符
ctrl+b 光标前移1个字符
ctrl+p 显示上一条命令
ctrl+n 显示下一条命令
ctrl+l 清屏
ctrl+j 回车
ctrl+m 回车
ctrl+w 向前删除一个单词
ctrl+y 粘贴最后一个被删除的字
ctrl+r 鼠标搜索已输入命令
ctrl+t 交换光标前最后两个字符
ctrl+v 输入ctrl字符
alt+f 向右跳转一个字符
alt+b 向左跳转一个字符
Linux/vi 命令行快捷键
Vim 常用命令
1 切换插入模式:
命令模式下
a (小写) 光标之后进行插入
A (大写) 光标所在行尾进行插入
i (小写) 光标前开始进行插入
I (大写) 光标所在行首进行插入
o (小写) 光标所在行后新插入一空行进行插入
O (大写) 光标所在行前新插入一空行进行插入
插入模式下按 ESC 键返回命令模式
2 切换到编辑模式
命令模式下按【:】进入编辑模式,键入命令回车后自动返回到命令模式或按 ESC 键返回到命令模式。
3 保存文件
编辑模式下
:w (小写) 保存文件
​:wq (小写) 保存并退出 vim
:w 文件名 1 将文件另存为文件名 1
:ZZ (大写) 保存文件并退出, 相当于:wq
:wq! (小写) 文件所有者强制保存只读文件, 如果不是文件所有者进行此操作, 不能成功
:q! 退出不保存文件
4 复制 (yank)
命令模式下
yy 或 Y 复制光标所在整行
y^ 复制到光标所在行行首, 不包括光标位置字符
y$ 复制到光标所在行行尾, 包括光标位置字符
yw 复制一个单词, 光标必须在单词首部
yG 复制到文件尾
y1G 复制到文件首
nyy 复制光标所在行开始的 n 行
5 粘贴
命令模式下
p (小写) 粘贴到光标后
P (大写) 粘贴到光标前
6 删除
命令模式下
x (小写) 删除光标前一个字符
X (大写) 删除光标后一个字符
dd (小写) 删除光标所在整行
dw (小写) 删除光标所在处一个单词
dG 删除光标所在整行到文件尾
dgg 删除光标所在整行到文件首
D (大写) 删除到行尾, 包含光标处的字符
d$ 与 D 效果相同
d0 删除到行首,不包含光标处的字符
d^ 与 d0 效果相同
:n1,n2d 编辑模式下,删除 n1-n2 行
7 撤销
命令模式下
u (小写) 无限次保存前撤销 (大概 500 多次)
ctrl+r redo
8 字符替换
命令模式下
r (小写) 替换光标所在处一个字符
R (大写) 开始替换, 直到按 ESC 键退出替换, 相当于按下键盘上到 insert 键
cc (小写) 取代光标所在整行
S (大写) 与 ss(小写) 效果相同
C (大写) 取代到行尾, 包括光标处字符
c0 (小写, 数字 0) 取代到行首, 不包括光标处字符
c^ (小写) 与 c0(小写, 数字 0) 效果相同
9 字符串查找和替换
命令模式下
/string 从光标处开始向下开始查找字符串 string
/ 查找模式下按 n(小写) 查找下一个, 按 N(大写) 查找上一个
?string 从光标处开始向上开始查找字符从 string
? 查找模式下按 n(小写) 查找上一个, 按 N(大写) 查找下一个
* 向下完整匹配光标下的单词
# 向上完整匹配光标下的单词
g* 向下部分匹配光标下的单词
g# 向上部分匹配光标下到单词
编辑模式下
:set ic 查找时, 忽略大小写
:set noic 取消查找时忽略大小写
:f string (小写 f 与 string 有空格) 搜索一行中匹配到的 string
:%s/old/new/g 全文将 old 替换为 new, 不提示
:%s/old/new/c 全文将 old 替换为 new, 提示是否替换
:n1,n2s/old/new/g n1-n2 行中, 将 old 替换为 new, 不提示
:n1,n2s/old/new/c n1-n2 行中, 将 old 替换为 new, 提示是否替换
在替换文本 old 或 new 中有 / 字符时, 需要用 \ 进行转义
10 显示行号
编辑模式下
:set nu(mber) 显示行号
:set nonu 取消显示行号
:set nu! 取消显示行号
11 简单排版
编辑模式下
:ce(nter) 居中显示光标所在行
:ri(ght) 靠右显示光标所在行
:le(ft) 靠左显示光标所在行
命令模式下
J 将光标所在下一行合并到光标所在行
>> 光标所在行增加缩进 (一个 tab)
<<光标所在行减少缩进 ( 一个 tab)
n>> 光标所在行开始的 n 行增加缩进
n<< 光标所在行开始的 n 行减少缩进
12 书签
命令模式下
mx 设定书签,x 是任意一个字母,通常小写 (a-z),x 为小写字母时, 局限在一个文件之间切换; 大写字母时, 可在文件之间切换.
`x (` 位于数字键 1 旁边) 跳转到书签 x
编辑模式下
:marks 查看标签
13 光标移动方式
命令模式下
H (大写,Head) 移动到屏幕顶第一个非空白字符
M (大写,Mid) 移动到屏幕中间第一个非空白字符
L (大写,Last) 移动到屏幕底部第一个非空白字符
((左小括号) 移动到上一个句子首
) (右小括号) 移动到下一个句子首
{(左大括号) 移动到上一个段落首
} (右大括号) 移动到下一个段落首
% 光标跳转到匹配到括号处, 支持 {}()
[[ 光标跳转到代码块开头即 { 处, 要求 { 独占一行
gD 光标跳转到局部变量定义处
'' (两个单引号) 光标跳转到上次停靠处
h (小写) 光标左移一个字符, 相当于左方向键
l (小写) 光标右移一个字符, 相当于右方向键
k (小写) 光标垂直上移一行, 相当于上方向键
j (小写) 光标垂直下移一行, 相当于下方向键
ctrl+f (forword) 向下整页翻页
ctrl+b (backward) 向上整页翻页
ctrl+u (up) 向上翻半页
ctrl+d (down) 向下翻半页
zz (小写) 让光标所在行居于屏幕中央
zt (小写) 让光标所在行居于屏幕最顶部
zb (小写) 让光标所在行居于屏幕底部
编辑模式下
:n 指定移动到第 n 行
14 数字前缀与重复
命令模式下
将数字加在命令前, 标示该命令处理几次, 如 5dd 标示执行 5 次 dd(删除光标所在整行) 操作。
. ( 英文句号)为命令重复命令,按下一次执行一次上一次执行过的命令。
15 浏览目录
编辑模式下
:e 目录 列出指定目录下的文件和目录
16 vim 技巧
技巧 1 导入文件或 shell 命令执行结果
编辑模式下
:r 文件名 1 将文件 1 内容引入到本文件中
:!shell 命令 在 vim 中执行 shell 命令, 执行完后按回车会到 vim 界面
:r !shell 命令 (r 与! 之间有空格) 将 shell 命令执行的结果导入到本文件中
技巧 2 自定义快捷键操作
编辑模式下
:map ^x 命令 (map 与 ^ 之间、x 与命令之间有空格, 此处到 ^ 并非键盘上的 ^, 而是按下 ctrl+v 出现到快捷键, 表示 ctrl 键, 后面到 x 为任意字母) 按下 ctrl+x 后会执行对应到命令
例:
:map ^p I#<ESC> 当按下 ctrl+p 快捷组合键时, 在光标所在行行首添加一个 #号, 并回到命令模式
技巧 3 连续行注释
编辑模式下
:n1,n2/^/#/g (# 号为注释符号, 在 shell 中注释符号为 #,C++ 中为 //)
:n1,n2/^/\/\//g C++ 源文件多行连续注释
技巧 4 替换
:ab string1 string2 在 vim 中输入 string1 按空格或回车后,string1 会自动替换为 string2
:unab string1 取消 string1 的替换
vim 配置文件
~/.vimrc
可将编辑模式下的命令写在里面,每个命令单独一行,这样每次启动时,会自动执行里面的命令。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment