Vim使用简介
Vim操作
Vim真的很酷:D
编辑模式
- 正常模式:在文件中四处移动光标进行修改
- 插入模式:插入文本
- 替换模式:替换文本
- 可视化(一般,行,块)模式:选中文本块
- 命令模式:用于执行命令
在不同的操作模式下,键盘敲击的含义也不同。比如,x 在插入模式会插入字母x,但是在正常模式 会删除当前光标所在的字母,在可视模式下则会删除选中文块。
在默认设置下,Vim会在左下角显示当前的模式。 Vim启动时的默认模式是正常模式。通常你会把大部分 时间花在正常模式和插入模式。
你可以按下 <ESC> (退出键) 从任何其他模式返回正常模式。 在正常模式,键入 i 进入插入 模式, R 进入替换模式, v 进入可视(一般)模式, V 进入可视(行)模式, <C-v> (Ctrl-V, 有时也写作 ^V)进入可视(块)模式, : 进入命令模式。
因为你会在使用 Vim 时大量使用 <ESC> 键,所以可以考虑把大小写锁定键重定义成 <ESC> 键
基本操作
插入文本
在正常模式,键入 i 进入插入模式。现在 Vim 跟很多其他的编辑器一样,直到你键入<ESC> 返回正常模式。 你只需要掌握这一点和上面介绍的所有基础知识就可以使用 Vim 来编辑文件了 (虽然如果你一直停留在插入模式内不一定高效)。
:q退出(关闭窗口):w保存(写):wq保存然后退出:e {文件名}打开要编辑的文件:ls显示打开的缓存:help {标题}
打开帮助文档
:help :w打开:w命令的帮助文档:help w打开w移动的帮助文档
移动
多数时候你会在正常模式下,使用移动命令在缓存中导航。在 Vim 里面移动也被称为 “名词”, 因为它们指向文字块。
基本移动:
hjkl(左, 下, 上, 右)词:
w(下一个词),b(词初),e(词尾)行:
0(行初),^(第一个非空格字符),$(行尾)屏幕:
H(屏幕首行),M(屏幕中间),L(屏幕底部)翻页:
Ctrl-u(上翻),Ctrl-d(下翻)文件:
gg(文件头),G(文件尾)行数:
:{行数}<CR>或者{行数}G({行数}为行数)杂项:
%(找到配对,比如括号或者 /* */ 之类的注释对)查找:
f{字符}, t{字符}, F{字符}, T{字符}
- 查找/到 向前/向后 在本行的{字符}
,/;用于导航匹配
搜索:
/{正则表达式},n/N用于导航匹配
选择
可视化模式:
- 可视化:
v - 可视化行:
V - 可视化块:
Ctrl+v
可以用移动命令来选中。
计数
你可以用一个计数来结合“名词”和“动词”,这会执行指定操作若干次。
3w向前移动三个词5j向下移动5行7dw删除7个词
修饰语
你可以用修饰语改变“名词”的意义。修饰语有 i,表示“内部”或者“在内“,和 a, 表示”周围“。
ci(改变当前括号内的内容ci[改变当前方括号内的内容da'删除一个单引号字符串, 包括周围的单引号
搜索和替换
:s (替换)命令(文档)。
%s/foo/bar/g
- 在整个文件中将 foo 全局替换成 bar
%s/\[.*\](\(.*\))/\1/g
- 将有命名的 Markdown 链接替换成简单 URLs
多窗口
- 用
:sp/:vsp来分割窗口 - 同一个缓存可以在多个窗口中显示。
宏
q{字符}来开始在寄存器{字符}中录制宏q停止录制@{字符}重放宏宏的执行遇错误会停止
{计数}@{字符}执行一个宏{计数}次宏可以递归
- 首先用
q{字符}q清除宏 - 录制该宏,用
@{字符}来递归调用该宏 (在录制完成之前不会有任何操作)
- 首先用
例子:将 xml 转成 json (file)
一个有 “name” / “email” 键对象的数组
用一个 Python 程序?
用 sed / 正则表达式
g/people/d%s/<person>/{/g%s/<name>\(.*\)<\/name>/"name": "\1",/g- …
Vim 命令 / 宏
Gdd,ggdd删除第一行和最后一行格式化最后一个元素的宏 (寄存器
e)- 跳转到有
<name>的行 qe^r"f>s": "<ESC>f<C"<ESC>q
- 跳转到有
格式化一个
的宏
- 跳转到有
<person>的行 qpS{<ESC>j@eA,<ESC>j@ejS},<ESC>q
- 跳转到有
格式化一个
标签然后转到另外一个的宏
- 跳转到有
<person>的行 qq@pjq
- 跳转到有
执行宏到文件尾
999@q
手动移除最后的
,然后加上[和]分隔符
Vim使用简介的更多相关文章
- 【vim】简介与基本配置
vim是一款非常强大的文字编辑软件,是各种类UNIX系统标配的文本编辑工具.相信此文的读者对它应该不会陌生,在这里就不做介绍了. 1.为什么要使用vim 在认识vim之前,我用过好多IDE:Visua ...
- VIM - 模式简介
1. 概述 简述 vim 模式 很简单的东西, 随便说说得了 2. 模式们 概述 vim 各个模式 后面的切换, 都是从 标准模式 切换到其他模式 1. Normal Mode 名称 标准模式 / 常 ...
- Linux c++ vim环境搭建系列(0)——简介
vim 学习 简介: 源码编译使用vim及其插件. 内容包含: vim的编译安装, llvm clang的编译安装, 插件youcompleteme的编译安装使用, 以及vim其他插件的使用. 搭建环 ...
- Vim 神器的打造方式
Vim 神器的打造方式 [字体:大 中 小] Vim 是一个上古神器,本篇文章主要持续总结使用 Vim 的过程中不得不了解的一些指令和注意事项,以及持续分享一个前端工作者不得不安装的一些插 ...
- Vim/Vi常用操作(第二版)
周围同事不是用vim就是Emacs,你要是用一ultraedit,你都不好意思跟人家打招呼;什么插件呀,语法高亮呀,拼写检查呀,能给它开的都给它开着,就是一个字儿:酷. 你说这么牛B一东西,怎么着学会 ...
- 编辑器-vim
编辑器之神-vim vi简介 vi是“Visual interface”的简称,它在Linux上的地位就仿佛Edit程序在DOS上一样.它可以执行输出.删除.查找.替换.块操作等众多文本操作,而且用户 ...
- Linux学习之Vim/Vi使用(十三)
Linux学习之Vim/Vi使用 Vim/Vi简介 Vim/Vi工作模式 Vim/Vi基本使用 Vim/Vi应用技巧 Vim/Vi简介 Vim/Vi是一个功能强大的全屏幕文本编辑器,是Linux/UN ...
- Linux系统 vi/vim文本编辑器
Linux系统 vi/vim文本编辑器 (一)Vim/Vi简介 (二)Vim/Vi工作模式 (三)Vim/Vi基本使用 (四)Vim/Vi应用技巧 (一)Vim/Vi简介 Vim/Vi是一个功能强大的 ...
- vim命令详解
VIM编辑常用技巧 vim编辑器 简介: vi: Visual Interface,文本编辑器 文本:ASCII, Unicode 文本编辑种类: 行编辑器: sed 全屏编辑器:nano, vi V ...
随机推荐
- CF1361C Johnny and Megan's Necklace
考虑\(2^x | (u \oplus v)\)的最大\(x\)小于等于\(20\) 这种题目,可以考虑搬到图上做. 我们枚举\(x\)那么对\((u\ mod\ 2^x,v\ mod\ 2^x)\) ...
- WC2021 云划水记
Day -38 - 2459208(2020.12.24) CCF 发公告了,线上举办 hopping. 刚看到还纠结了一会儿,但想想还是报了.虽说是去摸鱼,打打暴力分就走人.但毕竟有牌和没牌也是不一 ...
- Arc123 D
Arc123 D 很好考场降智了. 感觉\(D\)比\(C\)好做多了. 考虑\(C_i = A_i - B_i\),那么有\(C_{i + 1} \leq C_i,B_i \leq B_{i + 1 ...
- UOJ 266 - 【清华集训2016】Alice和Bob又在玩游戏(SG 定理+01-trie)
题面传送门 神仙题. 首先注意到此题的游戏是一个 ICG,故考虑使用 SG 定理解决这个题,显然我们只需对每个连通块计算一遍其 SG 值异或起来检验是否非零即可.注意到我们每删除一个点到根节点的路径后 ...
- 数据库连接池配置 testOnBorrow
背景 前段时间做系统压测,发现DB的CPU使用率飙升很严重,排查后发现是一个配置testOnBorrow由false修改为true导致.怎么对性能影响这么大?需要好好了解一下. testOnBorro ...
- Perl调用和管理外部文件中的变量(如软件和数据库配置文件)
编写流程时,有一个好的习惯是将流程需要调用的软件.数据库等信息与脚本进行分离,这样可以统一管理流程的软件和数据库等信息,当它们路径改变或者升级的时候管理起来就很方便,而不需要去脚本中一个个寻找再修改. ...
- EXCEL-批量修改列宽
WPS:先用鼠标选中一列,然后,长按ctrl键并且用鼠标选中剩余想要统一列宽的列,松开ctrl键,鼠标落在刚选中的任意一列的抬头上,鼠标右键,选择列宽,设置统一列宽即可.
- excel--CLEAN()函数,解决为什么看着相同的字符串但是len()长度不同
CLEAN()函数能够有效解决去除字符串中隐藏的字符(这些字符是TRIM()去除不掉的)
- mysql 多表关联查询
多个表右链接查询 名字,学校名称,学校类型,城市名称,国家地区 左链接查询 子查询 索引 #创建MySQL时添加索引 mysql> create table userIndex( id int ...
- 学习 DDD - 通用语言的模式
大家好,我是霸戈,这周学习了一些关于领域驱动设计的知识 ,对比较深刻的地方做了不少笔记,分享给大家. 在日常需求讨论的时候,经常会碰到一个需求会议开了一个多小时还没有达成共识.作为业务方(领域专家)明 ...