vim学习手记(2)
This commit is contained in:
parent
120d9663dd
commit
638182a237
@ -1,5 +1,5 @@
|
||||
---
|
||||
title: vim学习手记
|
||||
title: vim学习手记(1)
|
||||
date: 2019-03-27 22:23:34
|
||||
tags:
|
||||
- linux
|
||||
@ -13,7 +13,8 @@ Vim作为Linux平台首选编辑器, 支持目录树, 语法高亮, 代码补全
|
||||
<!--more-->
|
||||
## vim的四种模式
|
||||
1. 一般模式: 刚进入vim的时候, 所在的就是一般模式
|
||||
2. 编辑模式: 也就是可对文件内容进行修改的状态, 比如在一般模式输入`i`就进入了输入模式(INSERT状态)
|
||||
2. 编辑模式: 也就是可对文件内容进行修改的状态, 比如在一般模式按`i`就进入了输入模式 ( INSERT 状态 )
|
||||
按`shift+r`可以进入 REPLACE 状态
|
||||
3. 命令模式: 在一般模式下输入`:`进入命令模式
|
||||
4. 可视模式: 在一般模式下输入`v`进入可视模式, 在该模式下可以使用鼠标选择文本进行操作
|
||||
|
||||
@ -46,6 +47,7 @@ set命令用于设置vim的配置项
|
||||
+ **ruler** - 设置以后会在右下角显示当前所在位置的百分比
|
||||
+ **hlsearch** 或者 **hls** - 使用`/`开头执行搜索的时候会高亮所有匹配到的内容
|
||||
+ **ignorecase** - 执行搜索时忽略大小写
|
||||
+ **wrap** - 自动折行
|
||||
+ 自动调整缩进 : **autoindent** 与 **smartindent**
|
||||
前者在新插入一行的时候会自动复制上一行的缩进值
|
||||
后者则会自动识别一些编程语言的语法结构, 比如{}代码块当中的内容
|
||||
@ -91,8 +93,10 @@ map <F3> i<html><CR><body></body><CR></html>
|
||||
|
||||
## 剪切 复制 粘贴
|
||||
在vim当中剪切可以当做删除使用
|
||||
( 也就是所有涉及删除的操作, 实际上都会放入寄存器当中, 使用`p`可以粘贴 )
|
||||
|
||||
+ `dd` - 剪切整行 ( delete )
|
||||
+ `{n}dd` - 向下剪切n行 ( 包含当前光标所在的行 )
|
||||
+ `yy` - 复制整行 ( yank )
|
||||
+ `p` - 粘贴 ( paste )
|
||||
+ `u` - 撤销 ( undo )
|
||||
@ -101,3 +105,21 @@ map <F3> i<html><CR><body></body><CR></html>
|
||||
> 在vim当中存在一个独立的寄存器空间, 它不同于操作系统中的剪贴板
|
||||
执行剪切或复制的内容都会置于寄存器当中
|
||||
使用命令`reg`可以查看寄存器当中存储的内容
|
||||
|
||||
### 组合删除
|
||||
删除其实就是剪切, 按`p`可以直接粘贴最近一次删除的内容
|
||||
+ `x/X` - 删除光标下/前单个字符
|
||||
+ `dw` - delete word, 删除光标之后的整个单词 ( 光标应位于词首 )
|
||||
+ `d$/D` - 删除从光标处到行尾的所有字符
|
||||
+ `d^` - 删除从光标处到行首的所有字符
|
||||
|
||||
> 这是vim当中比较通用的一种组合方式
|
||||
也就是`[count]operation+[count]motion`组合
|
||||
比如前面的`d`是删除, 属于操作
|
||||
后面的`w`本来是光标向后移动一个单词, 属于动作
|
||||
所以组合起来就是向后删除一个单词
|
||||
操作和动作都是可以添加数字的
|
||||
代表重复执行若干次
|
||||
比如**2d3w**, 就代表删除光标后的3个单词, 重复该操作2次 ( 当然也可以写作**d6w**, 作用是一样的 )
|
||||
|
||||
前面在光标的移动当中提到的动作, 都可以按照这种方式进行组合
|
||||
64
source/_posts/linux/vim学习手记(2).md
Normal file
64
source/_posts/linux/vim学习手记(2).md
Normal file
@ -0,0 +1,64 @@
|
||||
---
|
||||
title: vim学习手记(2)
|
||||
date: 2019-03-30 20:45:01
|
||||
tags:
|
||||
- linux
|
||||
- vim
|
||||
categories:
|
||||
- linux
|
||||
---
|
||||
|
||||
## 修改 查找 替换
|
||||
<!-- more -->
|
||||
### 大小写的转换
|
||||
+ `~` - 转换当前光标所在的字符( 如果是小写就转为大写, 反之转为小写, 下同 )
|
||||
+ `g~w` - 当前光标之后的一个单词转换大小写
|
||||
|
||||
这里同样是 操作+动作 的组合方式
|
||||
比如`g~$`就是对当前位置到行尾进行大小写转换
|
||||
|
||||
`~`表示的是小写转大写, 大写转小写
|
||||
如果要全部转大写, 就是`U`, 全部转小写, 就是`u`
|
||||
比如`gU$`就表示从当前位置到行尾全部转大写
|
||||
`gu$`就表示从当前位置到行尾全部转小写
|
||||
|
||||
|
||||
> 按下`.`就是重复上一个修改操作
|
||||
比如上一个操作是执行了**g~w**, 按下`.`就是再次执行转换单词的大小写
|
||||
|
||||
### 查找
|
||||
|
||||
`/{string}`是用于查找指定字符串
|
||||
如果设置了**ignorecase** , 查找时会忽略大小写
|
||||
如果设置了**hlsearch**, 会同时高亮所有匹配的位置
|
||||
|
||||
之后按`Enter`再按`n`, 就可以将光标切换到下一个匹配的位置
|
||||
`N`是切换到上一个匹配的位置
|
||||
|
||||

|
||||
|
||||
### 替换(substitute)
|
||||
替换需要使用命令模式执行, 也就是先输入`:`
|
||||
格式统一为`[range]s/from/to/[flags]`
|
||||
|
||||
range是搜索范围
|
||||
+ `1,10` - 表示1到10行
|
||||
+ `10` - 只有第10行
|
||||
+ `%` - 所有整篇文档
|
||||
+ `10,$` - 从第10行到文档末尾
|
||||
|
||||
flags是替换方式的标识
|
||||
+ `c` confirm 每次替换都询问
|
||||
+ `e` error 不显示错误
|
||||
+ `g` global 在当前指定的范围内全局替换
|
||||
+ `i` ignore case 忽略大小写
|
||||
|
||||
+ **s/str1/str2/g** - 将当前行中的str1替换为str2
|
||||
+ **%s/str1/str2/g** - 将整篇文档所有的str1替换为str2
|
||||
|
||||
> **from**的位置是可以使用正则表达式的
|
||||
与通用的正则元字符基本相同, 但是大部分要加`\`转义
|
||||
比如`\d+`在通用的正则结构当中表示匹配至少1个的数字
|
||||
在vim当中要写作`\d\+`
|
||||
除了[]不需要, `\d\+`同样可以写作`[0-9]\+`
|
||||
|
||||
BIN
source/images/linux/vim-search.png
Normal file
BIN
source/images/linux/vim-search.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 97 KiB |
Loading…
x
Reference in New Issue
Block a user