Skip to content

jokechat/vim-tutorial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

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'

Releases

No releases published

Packages

No packages published