Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

jokechat/vim-tutorial

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
4 Commits
 
 
 
 

Repository files navigation

vim-tutorial

vim tutorial

整理资料来源

本资料来自 vim-web 一起来说vim语
整理学习 jokechat
理解此部分需要你已经理解vim的几种常用工作模式(正常模式,插入模式,命令模式等)

动词

动词代表了我们打算对文本进行什么样的操作.例如:

d # 表示delete
r # 表示替换replace
c # 表示表示change
y # 表示复制yank
v # 表示选取visual select

名词

名词代表了我们即将处理的文本.vim中有一个术语对象叫做 text object (文本对象) ,示例如下:

w # 表示一个单词word
s # 表示一个句子sentence
p # 表示一个段落paragraph
t # 表示一个html标签tag
引号或者各种括号所包含文本称为一个文本块

介词

介词界定了待编辑文本的范围或者位置

i # 表示在...之内 inside
a # 表示环绕...around
t # 表示到...位置钱 to
f # 表示到...位置上 forward

数词

数字指定了待编辑文本对象的数量,从这个角度而言,数词也可以看做一种介词.引入介词之后,文本编辑命令的语法就升级成了下面样子:

动词 介词/数词 名词

下面是几个例子:

c3w # 修改三个单词 change three words
d2w # 删除两个单词 delete two words

另外,数词也可以修饰动词,表示将执行n次.于是,我们又有了下面的语法

数词 动词 名词

请看示例:

2dw # 两次删除单词(等价于删除两个单词) twice delete word
3x  # 三次删除字符(等价于删除三个字符) three delete character  

组词为句

有了这些基本的语言元素,我们就可以着手构造一些简单的命令了.文本编辑命令的基本语法如下

动词 介词 名词

下面是一些例子🌰(如果熟悉了上面的概念,你将会看到这些例子非常容易理解),可以自己亲自尝试一番

dip # 删除一个段落 delete inside paragraph
di{ # 删除{}中的所有代码 
di( # 删除()中的所有代码
di[ # 删除[] 中的所有代码
vis # 选取一个句子 visula select inside sentence
ciw # 修改一个单词 change inside word
caw # 修改一个单词 change around word
dtx # 删除一个文本直至字符"x"(不包括字符"x") delete to x
dfx # 删除文本直至字符"x" (包括字符"x") delete forward x

常用快捷键

这里的vim快捷键是已经配置好的,回头留意查快捷怎么配置

  • 研究vim快捷键配置
;fl     # 唤出当前目录文件菜单列表 file list
nw      # 窗口切换
;lw     # 跳转至右方的窗口
;hw     # 跳转到左方的窗口 
;kw     # 跳转到上方的子窗口
;jw     # 跳转到下方的子窗口

# 可以直接在tab之间切换
gt      # 后一个tab标签
gT      # 前一个tab标签
;q      # 关闭一个标签

;bn     # 正向遍历 buffer
;bp     # 逆向遍历 (光标必须在buffer列表子窗口外)
;bd     # 关闭当前buffer
;bb     # 你之前所在的前一个buffer

ctrl+y  # 向上一行
ctrl+e  # 向下一行
ctrl+u  # 向上半屏
ctrl+d  # 向下半屏
ctrl+f  # 向上一页 f 就是'forward'
ctrl+b  # 向下一页 b 就是'backward'

ctrl+o  # 上一个光标的位置
ctrl+i  # 下一个光标的位置

# 书签设定,标记并跳转
ma      # 设定/取消当前行名为 a  的标签
m,      # 自动设定下一个可用标签名 
mda     # 删除当前文件中所有所有独立标签
m?      # 列出当前文件中所有书签,选中后回车可直接跳转 
mn      # 按照行号的前后顺序,跳转至下一个独立书签
mp      # 按照行号的前后顺序,跳转至前一个独立书签


'a      # 调到书签a
'.      # 最后一次编辑的地方

;t      # 通过搜索文件打开文件

0       # 跳转到当前行首
$       # 跳转到当前行尾

!CLL    # CLL 表示要执行的shell命令
!date   # 查看时间
:r !date        # 当前系统时间写入到光标所在行
:r ./hello.txt  # 表示将当前路径下hello.txt文件中的内容 导入到光标所在行

# visual select模式选中状态下
U       # 选中 - 小写变大写
u       # 选中 - 大写变小写
~       # 选中 - 小写大写相互转换
J       # 选中 - 选中的多行合并为一行
:sp     # 选中搜索 - 搜索当前目录所有文件 
;sl     # 选中搜索 - 当前目录结果列表 

# 列选中编辑
ctrl+v  # 进入块选中模式(visual block) 'hjkl'方向键控制选中区
shift+i # 进入列选择批  ;c$     # 光标开始位置量编辑
;cc     # 代码注释 (根据语言选择注释形式  "//"  or "<!- comment -->>" )
;cm     # 代码段落注释 "/**/"
;ci     # 注释相反,没注释的添加注释,注释额取消注释
;cs     # 段落注释,注释每行前面加"*"
;c$     # 光标开始位置到行结束位置添加注释
;cA     # 在行尾部添加注释 "//"
;cu     # 取消代码注释


:132,135 join # 合并132~135行 
xp      # 左右交换光标处两字符的位置
;y      # 复制到系统剪贴板
y       # 复制 
yy      # 复制光标所在行
yw      # 从光标处复制一个字符/单词额末尾,包括空格
ye      # 从光标出复制一个字符/单词的末尾,不包括空格
y$      # 从当前光标处复制到行末
y0      # 从当前光标位置复制到行首(不包括光标位置)
y5l     # 从光标位置(包含光标位置)向右复制5字符 
y3B     # 从光标位置(不包含光标)反向复制3个单词
.       # 粘贴 
p       # 粘贴

# 多光标编辑
shift+n # 选中下一个相同字符
shift+k # 跳过当前选中的字符

za      # 单个代码折叠
zM      # 折叠左右代码
zR      # 所有代码折叠取消
;i      # 开/关缩进可视化 - 代码缩进关联线条

>       # 代码缩进 - 
<       # 代码缩进

:1,20/header/www/g # 1~20行将header替换成www

ctrl+z  # vim 扔进后台jobs

基础使用

快捷键通配符

快捷键通配符 <leader> 相当于一个通用的命令符

let mapleader=";"

插入命令

a # 在光标所在字符后插入
A # 在光标所在字符尾插入
i # 在光标所在字符前插入
I # 在光标所在字符行行首插入
o # 在光标下插入新行
O # 在光标上插入新行

删除命令

x   # 删除光标所在字符
nx  # 删除光标所在n个字符
dd  # 剪贴光标所在行
ndd # 剪贴n行
dG  # 删除光标所在行到文件末尾
D   # 删除光标所处位置到行尾内容
:10,21d   # 删除10至21行

定位命令

:set number   # 设置行号  简写 set nu
:set nonumber # 取消行号  简写set nonu
gg            # 到第一行 
G             # 到最后一行
nG            # 到第n行
:n            # 到第n行
$             # 到行末
0             # 到行首
hjkl          # 左下上右
w             # 到下一个单词的开头
b             # 与w相反
e             # 到下一个单词的结尾
ge            # 与e相反
^             # 到本行第一个非blank(空白)字符
g_            # 到本行最后一个不是blank字符的位置
fa            # 到下一个为a的字符处,也可以fs到下一个为s的字符
t,            # 到本行逗号前的第一个字符,逗号可以使其他字符
3fa           # 在当前行查找第三次出现的a
Fa            # 到当前行上一个为a的字符处,与f的查找方向相反 
T,            # 到本行上一个逗号字符处

zz            # 将当前行置于屏幕中间 

简单排版

:ce(center)   # 居中显示光标所在行
:ri(right)    # 靠右显示光标所在行
:le(left)     # 靠左显示光标所在行
J             # 将光标所在下一行合并到当前行
>>            # 光标所在行增加缩进(一个tab)
<<            # 光标所在行减少缩进(一个tab)
n>>           # 光标所在行开始的n行增加缩进
n<<           # 光标所在行开始的n行减少缩进

刷新重载打开的文件

:e  # 刷新当前文件
:e! # 强制刷新当前文件

保存退出

:w filename   # 保存修改
:w            # 保修修改
:wq           # 保存修改并退出
ZZ            # 快捷键 保存修改并退出
:q!           # 退出不保存
:wq!          # 强制保存并退出

整页翻页

ctrl+f        # 下一页  f 就是 'forward'
ctrl+b        # 上一页  b 就是 'backward'

About

vim tutorial

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.