Vim编辑器学习笔记
前言
有一个有趣的说法,说世界上的程序员分三种,一种使用 Emacs,一种使用 vim,剩余的使用其它编辑器——完全无视 Ultraedit / Notepad++ 等编辑器的存在。今天,我怀着朝圣的心态,尝试了一下 vim 这个神器,发现它不像传说中那么深奥神秘和枯燥,也还算较为容易上手。先把学习过程记录在此,和各位同学共享共勉。
Vim的前世今生
Long long ago(上世纪70甚至80年代之前),UNIX 用户都是用廉价的终端机通过电话线连到 UNIX 服务器上的,因为传输速率慢,所以当时的编辑器都是行模式编辑——每次只能显示操作一行。ed 是 UNIX 上最古老最基本的行模式编辑器,ex 是ed 的扩展,而 vi 构建在 ex 之上,并且引入了大家所熟悉的全屏编辑模式。发展至今,vi 已成为 Linux 最常用的编辑器,很多 Linux 发行版都默认安装了 vi。
vi 是 visual interface 的缩写,vim 是 vi IMproved (增强版的 vi ),但最初,vim 是 vi IMitation(冒牌的 vi )。VIM 是一个超级超级强大的文本编辑器,和 Emacs 一起,被业界视为宇宙中最强大的两个编辑器。
关于Vim,你必须知道的概念
和 Notepad++ 不同,vi(vim) 是有模式的。有人总结了很多模式,比如低行模式、normal 模式、编辑模式、选择模式、鼠标模式等。我个人觉得,倒不如简单地分为命令模式和编辑模式,而在命令模式下可以把命令分为很多类型。编辑模式下,使用 vi(vim) 和使用 Notepad++ 几乎一样。当需要设置、保存、查找、替换、定位等操作时,可以切换至命令模式,直接输入命令。任何情况下,按 Esc 键退回到命令模式;在命令模式下,按 i 或 a 键即可进入编辑模式。
除了有模式这个特色之外,vim还有很多高级功能,比如寄存器、宏、书签、映射等。在这里,我们只说一下寄存器。vim 里面的寄存器可以用来保存拷贝的文本、记录的宏、设置的书签等等,一般的编辑器都只有一个剪切板(MS Office 加入了多个剪切板),而 vim 和 Emacs 编辑器中的多寄存器可以实现多个剪切板的功能。vim 中有九类寄存器:
- 无名寄存器("):最近一次删除/修改/替换操作的文本都会放入这个寄存器
- 10个数字寄存器(0-9):拷贝或者删除的文本存入这些寄存器,这些寄存器是循环使用的,在每次存入内容到寄存器1时,原有的内容会依次存入到后一个寄存器中
- 小删除寄存器(-):删除内容少于一行时放入这个寄存器
- 26个命名寄存器(a-z或A-Z):大小写无关。这些寄存器可以在拷贝或者删除等操作中指定使用
- 四个只读寄存器(:.%#):特殊用途
- 表达式寄存器(=):特殊用途
- 选择和拖放寄存器(*+~):用于与系统剪切板交互,以及接收拖放操作的内容
- 黑洞寄存器(_):放到这里面的内容都被丢弃,这样可以删除或拷贝时不影响其它寄存器
- 最后一次搜索模式寄存器(/):保存最后一次搜索的正则表达式
在windows环境下体验vim
去 vim.org 下载 windows 平台的 gvim 安装程序(最新版本大概是8.0),安装后运行 gvim,估计你会被这样一个界面丑哭(要是你不小心少按了一个字母 g,运行了 vim,你可能永远都不想再看到它了)。
但是,千万不要轻易放弃,尽管这是一个追求颜值的时代。试试在键盘输入:
:colo murphy
看起来是不是舒服一点了呢?除了murphy,还有很多种风格可选,输入colo按空格,再按Tab,可显示全部风格。继续操作,只需要几行命令,就会让gvim变成这个样子
如果再按装上常用的插件,比如,可以从代码中提取类结构的taglist插件,gvim瞬间就成了这个样子:
vi(vim)常用命令
- 打开文件、保存、关闭文件
:w //保存文件
:w file_name //保存至file_name文件
:q //退出编辑器,如果文件已修改请使用下面的命令
:q! //退出编辑器,且不保存
:wq //退出编辑器,且保存文件
:x //退出,如果文件更改则保存
ZZ //退出,如果文件更改则保存
:e file_name //编辑文件名为file_name的文件
- 插入文本或行
a //在当前光标位置的右边添加文本
i //在当前光标位置的左边添加文本
A //在当前行的末尾位置添加文本
I //在当前行的开始处添加文本(非空字符的行首)
O //在当前行的上面新建一行
o //在当前行的下面新建一行
R //替换(覆盖)当前光标位置及后面的若干文本
J //合并光标所在行及下一行为一行(依然在命令模式)
- 移动光标
1. 使用上下左右方向键
2、命令模式下h -> 向左j -> 向下k -> 向上l -> 向右空格键 -> 向右退格键 -> 向左回车键 -> 移动到下一行首减号键 -> 移动到上一行首
- 删除、恢复字符或行
x //删除当前字符
nx //删除从光标开始的n个字符
dd //删除当前行
ndd //向下删除当前行在内的n行
u //撤销上一步操作
U //撤销对当前行的所有操作
- 搜索
/string //向光标下搜索string字符串
?string //向光标上搜索string字符串
n //向下搜索前一个搜素动作
N //向上搜索前一个搜索动作
- 跳转至指定行
n+ //向下跳n行
n- //向上跳n行
nG //跳到行号为n的行
G //跳至文件的底部
- 复制、粘贴
yy //将当前行复制到缓存区,也可以用 "ayy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务
nyy //将当前行向下n行复制到缓冲区,也可以用 "anyy 复制,"a 为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务
yw //复制从光标开始到词尾的字符
nyw //复制从光标开始的n个单词
y^ //复制从光标到行首的内容
y$ //复制从光标到行尾的内容
p //粘贴剪切板里的内容在光标后,如果使用了前面的自定义缓冲区,建议使用"ap进行粘贴
- 替换
:s/old/new //用new替换行中首次出现的old
:s/old/new/g //用new替换行中所有的old
:n,m s/old/new/g //用new替换从n到m行里所有的old
:%s/old/new/g //用new替换当前文件里所有的old
配置vim
来吧,就用gvim编辑gvim的配置文件C:\Program Files (x86)\Vim_vimrc(操作系统或许会保护这个文件的读写权限,建议使用系统管理权限运行C:\Program Files (x86)\Vim\vim80\gvim.exe),在后面追加:
"处理文本中显示乱码
set encoding=utf-8
set fileencodings=utf-8,chinese,latin-1
if has("win32")set fileencoding=chinese
elseset fileencoding=utf-8
endif"处理菜单及右键菜单乱码
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim"处理consle输出乱码
language messages zh_CN.utf-8"配色方案:koehler/murphy
colo murphy"字体设置
"set guifont=courier_new:h12"总是显示标签。0:不显示;1:多于1个时显示"
set showtabline=2"开启行号
set nu!"setnumber"开启自动缩进, 7.3以上版本已自动开启"
set autoindent"缩进宽度为4个字符"
set shiftwidth=4"tab宽度为4个字符"
set tabstop=4"编辑时将所有tab替换为空格"
set et"按一次Backspace就删除4个空格"
set smarttab"Gvim启动后窗口最大化
autocmd GUIEnter * simalt ~x
保存退出,再次打开gvim,你会发现世界变得如此美好!
安装taglist插件
第一步,从 https://sourceforge.net/projects/ctags/files/ctags/5.8/ctags58.zip/download 下载ctags,解压后将其中的ctags.exe 复制到gvim.exe 所在的目录,在我这里是C:\Program Files (x86)\Vim\vim80
第二步,从 http://www.vim.org/scripts/script.php?script_id=273 下载taglist.zip文件,解压,将doc\taglist.txt 文件复制到 C:\Program Files\Vim\vimfiles\doc下,
将plugin\taglist.vim 文件复制到 C:\Program Files\Vim\vimfiles\plugin下。
第三步,以管理员身份运行cmd,cd至C:\Program Files\Vim\vim80目录,运行gvim.exe,命令模式下输入":helptags C:\Program Files\Vim\vimfiles\doc",就会在C:\Program Files\Vim\vimfiles\doc下生成tags文件。
第四步,重启gvim.exe,打开一个源码文件,执行命令:Tlist,大功告成。
Vim编辑器学习笔记相关推荐
- Linux 中vim编辑器学习笔记
vim是Linux是非常常用的编辑器,也是编程开发中的神器之一.接下来,是我学习vim编辑器的一些笔记,总结如下: 首先:我们接触的vim编辑器一共有三种模式,分别为命令模式.编辑模式.末行模式. 具 ...
- 富文本编辑器 —— 学习笔记
富文本编辑器 -- 学习笔记 文章目录 富文本编辑器 -- 学习笔记 一.wangEditor 1.内容处理--获取/设置 JSON 一.wangEditor 1.内容处理--获取/设置 JSON 使 ...
- DMU软件 语法高亮 vim设置--学习笔记6
用vim编程时, DMU的关键词没有语法高亮, 看着不舒服, 就进行一下设置, 并记录过程. 设置的效果如下 设置流程 本次设置的比较简单, 将关键词分为: 模型model, 比如DMU1, DMU2 ...
- 【Vim】学习笔记四 多文件编辑、可视模式、视窗操作
文章目录 1. 多文件编辑 (1) 使用vim编辑多个文件 (2) 进入vim后打开新文件 (3) 恢复文件 2. 可视模式命令简介 3. 视窗操作 (1) 视窗操作简介 4. 创建加密文档 5. 在 ...
- vi(vim)编辑器 学习笔记
vi是非图形化的编辑器 vim是vi的加强版. 三种使用模式 一般模式用户可以进行光标的移动,删除字符以及复制 编辑模式下,用户可以插入或者删除字符 命令模式下,可以保存文件或者退出编辑器 移动操作 ...
- vim编辑器学习记录
i:在光标所在字符前开始插入 a:在光标所在字符后开始插入 o:在光标所在行的下面另起一新行插入 s:删除光标所在的字符并开始插入 I:在光标所在行的行首开始插入 如果行首有空格则在空格之后插入 A: ...
- 【Vim】学习笔记day02 Vim的三级窗体切换
系列说明 本系列为学习随笔, 记录个人觉得容易遗忘的重点内容, 全面的指南请star项目 GitHub上的Learn-Vim 本文是ch 的内容笔记 新手写作, 若有错误的地方, 恳请读者指正, 先行 ...
- Linux vi(vim)编辑器学习-收集搬运
vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim).vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率.vi是"visual interfa ...
- mac vim python3_VIM学习笔记 编译源码(Compile Code)-Python
Python作为一种解释型编程语言,需要解释器来编译并执行Python代码. 测试Python 对于Linux和Mac操作系统,均已预装Python.而在Windows下,可以使用安装包或者直接解压版 ...
- {魔兽编辑器学习笔记} 一 安装编辑器、创建地图
首先,强烈强烈强烈向大家推荐这位大神的教程,入股不亏 冲吧! 链接:https://blog.csdn.net/DreamerQW?type=blog 一.下载&安装 u1s1 一直都是前辈帮 ...
最新文章
- 无线AP、WiFi、WLAN是什么关系?
- ajax.call失效无请求,移动端ajax请求问题?
- 力扣删除排序数组中的重复项 II
- DSB2017第一名论文理解: 3D Deep Leaky Noisy-or Network(一)
- Git--rebase合并提交
- 云服务器 ECS 搭建WordPress网站:购买 Linux 实例
- python django flask介绍,Django/Flask简介
- html5 加入收藏夹,设为首页、添加到收藏夹代码
- 获取打开的记事本中的内容 - 回复 ymg1103 的问题
- 情景式领导力学习(2) - 实践案例及思考
- [NOIP模拟33]反思+题解
- 微信小程序-更换头像
- python批量裁剪图像
- [Mac 硬件相关] 如何确定Mac笔记本版本及电池
- 最新前端体系学习路径推荐(内附免费资料)
- 谷歌与Oracle:Java版权大战现在牵扯到美国总统奥巴马
- spring-Cloud-netflix-快速入门(三)-服务间调用
- Ubuntu 10.04下fcitx输入法中去掉多余的输入方式
- 计算机网络是按覆盖地域划分吗,下列哪些计算机网络是按覆盖地域划分的()。...
- 专家说:孩子3岁就说谎,暗示其智商很高,严惩可能起到反作用