Vim-一款好用的文本编辑器
关于vim的使用,通过博客,无论是静态的截图或者是代码/文本复制,很难展示所要表现的内容。更多需要读者亲自敲键盘实践之后才知道其作用。
本文不会也无法描述vim过多的细节,仅仅是对于常用的命令做一下记录,因为vim的帮助文档很庞当。
对于vim的初学者来说,可直接使用vimtutor教程先了解一下,关于该教程本人也实践过并撰写了博文:《vimtutor学习笔记》。
有遇到一些没有解释过的单词或者英文词汇,建议大家先看我的vimtutor教程或者man一下或者实践。
简介
vim是一款在Linux上强大的文本编辑器,同类型的强大对手是Emacs。
vim的全拼是Vi IMproved,而Vi也是一款文本编辑器,vim相对vi增加了很多的新特性,例如语法高亮等。
vim [options] [filelist]
vim可以编辑单个文件或者多个文件。简单选项如下。
+n:打开文件后,光标处于第n行的行首;
+/PATTERN:打开文件后,光标处于第一个匹配到PATTERN的位置;
+:打开文件后,光标处于最后一行的行首;
命令基础
此为一般模式(normal)与命令行(command-line)模式常用命令。
一般模式命令语法格式。
operator [numbers] motion
部分可以只有双operator来表示光标所在行的操作,例如dd。
operator operator
移动/范围(motion)
大部分命令,都可以结合motion。命令与motion的结合,motion可前可后,需要具体情况具体分析。
3dd:删除3行。不能写成dd3。
dw:删除光标处字符至下个单词的词首,不包含下个单词的词首。不能写成wd。
下文,具体的命令中,就不再提到命令(operator)与motion的结合。
毕竟这篇博文只打算用作常用命令参考!
字符间
hjkl:左下上右。
单词间
w:下一个单词词首。
e:当前或者下一个单词词尾。
b:当前或者上一个单词的词首。
行首行尾
0:绝对行首。
^:行首。
$:行尾。
行间
gg:首行。
G:尾行。
nG:第n行。
句间和段间
(:上一句。
):下一句。
{:上一段。
}:下一段。
可视化(visual)
v:字符可视化模式。
V:行可视化模式。
括号匹配
%:括号匹配。
翻屏
Ctrl+f:向下翻一屏。
Ctrl+b:向上翻一屏。
Ctrl+d:向下翻半屏。
Ctrl+u:向上翻半屏。
各种命令杂七杂八
删除
x:删除单个字符。
dd:删除整行。
进入插入模式
i:insert,在光标位置插入。
a:append,在光标位置的后面插入。
o:在光标位置的下方打开一个新行,并使光标位于行首。
I:在光标所在行的行首插入。
A:在光标所在行的行尾插入。
O:在光标位置的上方打开一个新行,并使光标位于行首。
保存与退出
w:保存。
q:退出。
ZZ、:x、:wq:保存并退出。
q!:强制退出不保存。
替换(replace)
r:单字符。
R:进入替换模式。
改变(change)
区别于替换,会进入插入模式。
cc:整行改变。
复制和粘贴
y:复制。
yy或者Y:整行复制。
p:下/后粘贴。
P:上/前粘贴。
撤销与重做
u:撤销。
U:行撤销。
CTRL-R:恢复撤销。
.:重做。
读取文件和写入文件(另存为)
:r /PATH/FROM/FILE:读取文件并插入。
:w /PATH/TO/FILE:另存为某个文件。
地址定界
:start_pos[,end_pos]
m:第m行。
.:当前行。
$:最后一行。
m,n:第m行到第n行。
m,+n:第m行及其后面的n行。
.,$-1:当前行至倒数第二行。
1,$:全文。
%:全文。
/PATTERN/:第一次被PATTERN匹配到的行。
/first/,$:第一次被first匹配到的行至最后一行。
注意:匹配的时候,是从光标所在行开始向文件底部匹配。
/PATTERN1/,/PATTERN2/:从光标所在处开始,第一次匹配到PATTERN1的行至第一次匹配到PATTERN2的行。
查找
查找中的pattern支持正则表达式,应该是BRE。
/PATTERN:从光标所在行向下查找PATTERN所匹配的字符串。
?PATTERN:从光标所在行向上查找PATTERN所匹配的字符串。
注意:以上2个都可以循环查找。
n:下一个,与命令方向相同。
N:上一个,与命令方向相反。
查找替换
s/SEARCH/REPLACE/MODIFIER
SEARCH:表示所要查找的内容,支持RE。
REPLACE:表示所要替换成的内容,不支持RE,但可以引用分组的内容。
第一种引用的形式,和RE中是类似的。
第二种引用的形式是引用整个SEARCH所匹配到的内容,即使用&符号。
MODIFIER:表示修饰符。
i:查找时忽略大小写。
g:替换行中所有匹配到的内容。
c:确认式替换。
当SEARCH或者REPLACE中的内容存在“/”的时候,可以使用转义字符对其进行转义(“\/”),或者使用其他字符(@或者#)代替。
多文件
# vim FILE1 FILE2 ...
文件间切换
:next:切换到下一个文件。
:prev:切换到上一个文件。
:first:切换到第一个文件。
:last:切换到最后一个文件。
退出多文件
:wqall
:wall
:qall
:qall!
多窗口
-o:水平分割窗口。
-O:垂直分割窗口。
Ctrl+w:切换到下一个窗口。
Ctrl+w,s:在当前窗口水平切割出一个新的窗口。
Ctrl+w,v:在当前窗口垂直切割出一个新的窗口。
vim选项设置
/etc/vimrc:全局配置文件。
~/.vimrc:用户配置文件。
显示行号
:set number
:set nu
:set nonumber
:set nonu
后续示例只写配置全写和缩写。
自动缩进
autoindent,ai
高亮搜索
hlsearch,hls
增量搜索
incsearch,ic
语法高亮
syntax on
syntax off
忽略字符大小写
ignorecase,ic
制表符宽度
tabstop,ts
帮助
:help
:help subject
Vim-一款好用的文本编辑器的更多相关文章
- 【开发工具】- 推荐一款好用的文本编辑器[Sublime Text]
作为一个程序员除了IDE外,文本编辑器也是必不可少的一个开发工具.之前一直在用的是NotePad++.EditPlus,这两款编辑器,但是总感觉差点什么,昨天在知乎上看到有人推荐Sublime Tex ...
- 命令工具 -(1)Vim 文本编辑器学习
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 前言 提起 Linux,大家都听说过这句话:Linux 一切皆文件. 配置一个服务就是在修改它 ...
- 文本编辑器VIM/VI
vim/vi 功能强大全屏文本编辑器.主要是建立,编辑,显示文本. www.vim.org 构建shell脚本 :set number 使文件出现行号 a 光标后附件文件 i在光标前插入文 ...
- Vim,一个开放源代码的文本编辑器(转)
Vim,http://linux.21ds.net/2002/03/13/0268dc26fd9c725c23dae68d797935f3/ 作者:Bram Moolenaar 翻译:slimzhao ...
- Linux系统 vi/vim文本编辑器
Linux系统 vi/vim文本编辑器 (一)Vim/Vi简介 (二)Vim/Vi工作模式 (三)Vim/Vi基本使用 (四)Vim/Vi应用技巧 (一)Vim/Vi简介 Vim/Vi是一个功能强大的 ...
- [No0000139]轻量级文本编辑器,Notepad最佳替代品:Notepad++
在详细介绍Notepad++之前,先来解释一下,为何要选择Notepad++,即把常见的一些文本编辑器和Notepad++比较,看看其有哪点好: 常见的文本编辑器有很多,此处,只提及Notepad,N ...
- part1:6-Linux文本编辑器vi
vi编辑器简介: vi是Linux系统的第一个全屏幕交互式编辑器:vim则是vi的升级版得到广大用户青睐. vim有三种工作模式:命令行模式.插入模式.底行模式 命令行模式常用功能键: yy:复制当前 ...
- 轻量级富文本编辑器wangEditor源码结构介绍
1. 引言 wangEditor——一款轻量级html富文本编辑器(开源软件) 网站:http://www.wangeditor.com/ demo演示:http://www.wangeditor.c ...
- editplus文本编辑器
EditPlus中文破解版是一款功能强大的文本编辑器,拥有无限制的撤消与重做.英文拼字检查.自动换行.列数标记.搜寻取代.同时编辑多文件.全屏幕浏览功能.还有一个好用的功能,就是它有监视剪贴板的功能, ...
随机推荐
- ElasticSearch学习
官方文档 https://www.elastic.co/cn/ http://www.learnes.net/
- python - 计算器 程序练习
v1.0 计算器(数据内不含括号方式:) import re def jisuan(a,b,c): sun_count = 0 if c =="+": sun_count = st ...
- java删除文件及其目录
1.删除指定文件路径 public @ResponseBody String deleteFiles(HttpServletRequest request) { log.info(this.getCl ...
- Dom4j向XML中指定位置添加、删除、修改节点——(五)
需求: 在第一本书作者后面增加描述 <描述>好书</描述> 思路:获取书下面下的所有节点(一个list集合),在list集合指定位置添加一个元素(list.add(index ...
- Python 优雅获取本机 IP 方法【转】
转自:https://www.cnblogs.com/lfxiao/p/9672975.html 见过很多获取服务器本地IP的代码,个人觉得都不是很好,例如以下这些 不推荐:靠猜测去获取本地IP方法 ...
- 配置Sublime Text2的python运行环境(Sublime Text 3也类似)
1. 前言 用Sublime Text 2 配置Python运用环境,有简单配置还有像IDLE一样的配置,本文分成第一部分和第二部分. 2. 配置 第一部分(简单配置) 1.只需要打开Pref ...
- Jquery hover方法使用及 mouseenter与mouseleave和 mouseover与mouseout的区别
定义和用法 hover() 方法规定当鼠标指针悬停在被选元素上时要运行的两个函数. jQuery 1.7 版本前该方法触发 mouseenter 和 mouseleave 事件. jQuery 1.8 ...
- CBAM: 卷积块注意模块
CBAM: Convolutional Block Attention Module 论文地址:https://arxiv.org/abs/1807.06521 简介:我们提出了卷积块注意模块 ( ...
- Java8实战系列一
从java7到java8,最主要的变化可以总结为 □Lambda表达式 □ 方法引用 □流和默认方法 让我们通过一个小例子感受一下 情景 1 集合对象排序 (对list中的苹果按照重量排序) Coll ...
- [工具/PC]计算机中丢失libiconv-2.dll,丢失libintl-8.dll,无法定位程序输入点libiconv于动态链接库libiconv-2.dll上问题解决方法
CodeBlocks 1. 背景,为了学习C语言,在win系统上下载了codeBlock,先简单介绍下:Code::Blocks 是一个开放源码的全功能的跨平台C/C++集成开发环境. Code::B ...