Ch05-移动文件
声明
本文搬运自Github仓库Learn-Vim_zh_cn,并针对部分错别字做出修正。
一开始,通过键盘移动会让你感觉特别慢特别不自在,但是不要放弃!一旦你习惯了它,比起鼠标你可以更快的在文件中去到任何地方。
这一章,你将学习必要的移动以及如何高效的使用它们。 记住,这一章所讲的并不是Vim的全部移动命令(motions),我们的目标是介绍有用的移动来快速提高效率。 如果你需要学习更多的移动命令,查看:h motion.txt。
字符导航
最基本的移动单元是上下左右移动一个字符。
1234h 左j 下k 上l 右
你也可以通过方向键进行移动,如果你只是初学者,使用任何你觉得最舒服的方法都没有关系。
我更喜欢hjkl因为我的右手可以保持在键盘上的默认姿势,这样做可以让我更快的敲到周围的键。 为了习惯它,我实际上在刚开始的时候通过~/.vimrc关闭了方向键:
1234noremap <Up> <NOP>noremap <Down> <NOP>noremap <Left> <NOP>nore ...
Ch04-Vim语法
声明
本文搬运自Github仓库Learn-Vim_zh_cn,并针对部分错别字做出修正。
刚接触Vim时很容易被Vim许多复杂的命令吓到,如果你看到一个Vim的用户使用gUfV或1GdG,你可能不能立刻想到这些命令是在做什么。这一章中,我将把Vim命令的结构拆分成一个简单的语法规则进行讲解。
这一章将是本书中最重要的一章,一旦你理解了Vim命令的语法结构,你将能够和Vim"说话"。注意,在这一章中当我讨论Vim语言时,我讨论并不是
Vimscript(Vim自带的插件编写和自定义设置的语言),这里我讨论的是Vim中normal模式的下的命令的通用规则。
如何学习一门语言
我并不是一个英语为母语的人,当我13岁移民到美国时我学习的英语,我会通过做三件事情建立我的语言能力:
学习语法规则
扩展我的词汇量
练习,练习,练习
同样的,为了说好Vim语言,你需要学习语法规则,增加词汇量,并且不断练习直到你可以把执行命令变成肌肉记忆。
语法规则
你只需要知道一个Vim语言的语法规则:
1verb + noun # 动词 + 名词
这就类似与在英语中的祈使句:
...
Ch03-打开和搜索文件
声明
本文搬运自Github仓库Learn-Vim_zh_cn,并针对部分错别字做出修正。
本章的目的是向您介绍如何在Vim中快速搜索,能够快速搜索是提高您的Vim工作效率的重要途径。当我解决了如何快速搜索文件这个问题后,我就决定改为完全使用Vim来工作。
本章划分为两个部分:一是如何不依赖插件搜索;二是使用fzf插件搜索。让我们开始吧!
打开和编辑文件
要在Vim中打开一个文件,您可以使用:edit。
1:edit file.txt
如果file.txt已经存在,就会打开file.txtbuffer。如果file.txt不存在,会创建一个新buffer名为file.txt。
:edit命令支持使用<Tab>进行自动补全。比如,如果您的文件位于Rails应用控制器的用户控制器目录./app/controllers/users_controllers.rb内,您可以使用<Tab>对文件路径名进行快速扩展。
1:edit a<Tab>c<Tab>u<Tab>
:edit可以接收通配符参数。*匹配当前目录下的任意文件。如果您 ...
Ch02-缓冲区,窗口选项卡
声明
本文搬运自Github仓库Learn-Vim_zh_cn,并针对部分错别字做出修正。
(译者注:在Vim中,Buffers缓冲区,Windows窗口,Tabs选项卡是专有名词。为适应不同读者的翻译习惯,确保没有歧义,本文将不对Buffers、Windows、Tabs这三个词进行翻译)。
如果您使用过现代文本编辑器,您很可能对Windows和tabs这两个概念是非常熟悉的。但Vim使用了三个关于显示方面的抽象概念:buffers, windows, 还有tabs。在本章,我将向您解释什么是buffers, windows和tabs,以及它们在Vim中如何工作。
在开始之前,确保您的vimrc文件中开启了set hidden选项。若没有配置该选项,当您想切换buffer且当前buffer没有保存时,Vim将提示您保存文件(如果您想快速切换,您不会想要这个提示)。我目前还没有讲vimrc,如果您没有vimrc配置文件,那就创建一个。它通常位于根目录下,名字叫.vimrc。我的vimrc位于~/.vimrc。要查看您自己的vimrc文件应该放置在哪,可以在Vim命令模式中输入:h ...
Ch01-起步
声明
本文搬运自Github仓库Learn-Vim_zh_cn,并针对部分错别字做出修正。
在本章,您将了解从终端启动Vim的几种不同方法。我写这本教程时使用的Vim版本是8.2。如果您使用Neovim或老版本的Vim,大部分情况下方法是通用的,但注意个别命令可能无效。
安装
我不会给出在某台特定机器上安装Vim的详细指令。好消息是,大部分Unix-based电脑应该预装了Vim。如果没有,大部分发行版也应该有关于如何安装Vim的指令。
从Vim的官方网站或官方仓库可以获得下载链接:
Vim 官网
Vim 官方仓库
Vim 官方仓库镜像
Vim命令
当您安装好Vim后,在终端运行以下命令:
1vim
您应该会看到一个介绍界面。这就是您用来处理文本的工作区。不像其它大部分文本编辑器和IDE,Vim是一个模式编辑器。如果您想输入"hello",您需要使用’i’命令切换到插入模式。按下’ihello'可以在工作区插入文本"hello"。
退出Vim
有好几种不同的方法都可以退出Vim。(译者注:在stackflow论坛上,有个著名的问题 ...
Ch00-请先阅读
声明
本文搬运自Github仓库Learn-Vim_zh_cn,并针对部分错别字做出修正。
为什么写这本教程
有很多途径可以学习Vim:vimtutor就是一个很好的途径,另外还有Vim自带的帮助手册(:help查看)包含了所有需要的参考信息。
但是在日常使用中,对于绝大部分用户的需求而言,vimtutor讲得太浅不能满足需要,而:help所提供的信息又有很多是用不上的。本指南尝试在两者之间搭一座桥,仅重点介绍关键功能,使您尽可能在最短的时间内掌握Vim中最有用的知识。
绝大部分情况下,您并不会使用到Vim100%的功能。您可能仅仅需要掌握其中20%就可以成为一名娴熟的Vim用户。本指南将为您展示Vim中最有用的功能。
本指南带有作者强烈的个人观点。它涵盖了作者在使用Vim的过程中经常用到的技巧。章节按照作者认为的,最适合初学者最符合逻辑的顺序排列。
本指南包含大量示例。当学习一个新技能时,示例是不可缺少的,大量的示例可以更有效的巩固所学概念。
部分读者可能好奇为什么要学习Vimscript?我刚使用Vim时,仅仅满足于知道如何使用Vim。随着时间推移,我越来越需要使用Vims ...
Learn-Vim中文目录
声明
本文搬运自Github仓库Learn-Vim_zh_cn,并针对部分错别字做出修正。
序言
Ch 0 - 请先阅读
第一部分:聪明地学习Vim
Ch 1 - 起步
Ch 2 - 缓冲区,窗口和选项卡
Ch 3 - 打开和搜索文件
Ch 4 - Vim 语法
Ch 5 - 移动文件
Ch 6 - 插入模式
Ch 7 - 点命令
Ch 8 - 寄存器
Ch 9 - 宏
Ch 10 - 撤消
Ch 11 - 可视模式
Ch 12 - 搜索和替换
Ch 13 - 全局命令
Ch 14 - 外部命令
Ch 15 - 命令行模式
Ch 16 - 标签
Ch 17 - 折叠
Ch 18 - Git
Ch 19 - 编译
Ch 20 - 视图、会话和 Viminfo
Ch 21 - 多文件操作
第二部分:聪明地定制Vim
Ch 22 - Vimrc
Ch 23 - Vim软件包
Ch 24 - Vim Runtime
Hexo自带markdown渲染器渲染括号问题
一、问题发现
Hexo是一个基于Node.js的静态网页博客框架,使用Markdown文档生成网页文章,对程序员比较友好。笔者前段时间使用Hexo搭建博客,使用一段时间后发现其生成的文章,存在括号内的内容为网址时会变成乱码超链接的现象,影响阅读体验。
笔者搭建博客时Node.js的版本为12.19.0,hexo-cli的版本为4.3.0,经过上网搜索和排除博客安装的插件影响后依旧无法解决问题。在重装博客之后,笔者立即进行测试,发现问题依旧存在。笔者之前曾在CSDN和自己Wodrpress网站上发布过相同的Markdown格式的文章,均未出现此类问题,于是怀疑是Hexo自带的Markdown渲染器的问题,在先后尝试修改文章格式和更换Markdown渲染插件等方法后,解决了该问题。
二、问题描述
Hexo原生自带的渲染器为hexo-renderer-marked,笔者在重装博客之后,立即进行了如下测试:
123hexo new post "test" %新建测试文档test.md,并填入测试内容%hexo cl; hexo s %启动服务器,观 ...
MySQL事务基础
事务的提出
MySQL事务(transaction)主要用于处理敏感的、复杂度高的数据。处理逻辑为query语句要么一块执行,要么全部回滚。例如网上购物时,只有确认付款之后商品才会到个人账户,在此之前全部过程顾客不持有商品。
注意:MySQL事务只有在指定数据库引擎为innodb时可用。
事务的基本用法
假设用户A向用户B转账50块钱,则需要将A用户的账户余额减少50块钱,将B用户的账户添加50块钱,操作如下:
12345678910start transaction; # 开始事务update wallet set balance=balance-50;# query语句错误,未写条件rollback; # 进行回滚,撤回错误sql语句start transaction;update wallet set balance=balance-50 where id=1;update wallet set balance=balance+50 where id=2;commit; # 提交事务# 注意:事务开启可以随时rollback,一旦commit,就不能再roll ...
MySQL视图基础
什么是视图
视图相当于从副表中创建的一个虚拟的表,它可以筛选数据,隐藏表的结构,防止有关业务人员看到敏感数据。
例如:可以针对社会保险基金表创建视图,显示姓名地址,不显示社会保险号和工资。
view视图创建、使用
创建视图
格式:
create view vw_视图名 as
query语句
12create view vw_stu asselect name, phone from student;
使用视图
视图作为虚表,其使用和表的query相同。
1select * from vw_stu;
显示视图
123456show tables; # 显示数据库中的表或视图desc vw_stu; # 显示视图结构show create view vw_stu; # 显示视图的创建过程# 显示表格详细属性,一般用不到此语句show table status where comment = 'view' | G;
更新和删除视图
操作与表操作相当。
12345# 修改并查看修改后的 ...