前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >论vim使用之瞎扯淡

论vim使用之瞎扯淡

原创
作者头像
IAAS最菜的鹅
发布于 2022-03-05 08:51:29
发布于 2022-03-05 08:51:29
71400
代码可运行
举报
运行总次数:0
代码可运行

vim是个啥?

最优秀的自由软件,,高度可定制的文本编辑器之一,俗话说:上到用vim改sh、python脚本,下到用vim改txt文本。只要会玩,定位关键词、跳行、搜大小.....【简单理解类似于Windows上的文本和notec++软件】

模式介绍:

普通:默认,只能看不能改

插入:编辑、可改可保存

可视:光标移动,高亮选择展示

命令行:执行设置、文档、替换及vim支持的命令操作

从普通到插入

操作

说明

i

光标左侧插入你即将输入的内容

a

光标右侧插入你即将输入的内容

o

光标所在的下一行增添行

O

光标所在的上一行新增行

I

光标所在 开头插入

A

光标所在 末尾插入

从插入回到普通

直接按键盘上的ESC,插入切换到普通

从普通到可视

操作

说明

v

移动字符高亮度显示

V

按照行来进行高亮度显示

ctrl + v

按照块来进行高亮度显示

vi{

选中{}里面的内容,不包括{}括号本身

va{

选中{}里面的内容,包括{}括号本身

vi(

选中()里面的内容

vi<

选中<>里面的内容

vi[

选中[]里面的内容

vit

选中 里面 的内容

vi”

选中”"中间内容

vi’

选中”中间的内容、

vis

选中一个句子

vib

选中一个block

viw

选中一个单词

vip

选中一个段落

o

切换光标开头和结尾

可视模式 ——> 普通模式

在模式下v的反操作

普通模式 ——> 命令行模式

命令行模式输入":"进入命令行模式

光标移动

字符移动

操作

说明

h

j

k

l

单词移动

操作

说明

w

移动到下个单词开头

W

移动到下个单词开头(单词含标点)

e

移动到下个单词结尾

E

移动到下个单词结尾(单词含标点)

b

移动到上个单词结尾

B

移动到上个单词结尾(单词含标点)

fx

向后搜索<字母>并跳转到第一个匹配的位置

Fx

向前搜索<字母>并跳转到第一个匹配的位置

%

移动到{,[(

行内移动

操作

说明

0

移动到行首

^

移动到行首

$

移动到行尾

g_

移动到行内最后一个非空白符

行间移动

操作

说明

ngg

移动到n行

G

移动到行尾

页内移动

操作

说明

H

移动到当前页面顶部

M

移动到当前页面中间

L

移动到当前页面底部

文档移动

操作

说明

Ctrl + b

向后滚动一屏

Ctrl + f

向前滚动一屏

Ctrl + d

向前滚动半屏

Ctrl + u

向后滚动半屏

zz

移动屏幕使光标居中

文档编辑

编辑

操作

说明

r

替换当前字符

J

将下一行合并到当前行

gJ

join line below to the current one without space in between

gwip

reflow paragraph

cc

清空当前行, 然后进入插入模式

c$

从光标位置开始, 修改当前行

ciw

change (replace) entire word

cw

从光标位置开始, 修改单词

s

删除当前字符, 然后进入插入模式

S

清空当前行, 然后进入插入模式 (同cc)

xp

当前字符后移

u

撤销

Ctrl + r

重复

.

再次执行上个命令

查找/替换

操作

说明

/pattern

查找pattern

?pattern

向上查找pattern

\vpattern

pattern 中的非字母数字字符被视为正则表达式特殊字符 (不需转义字符)

n

查找下一个

N

查找上一个

:%s/old/new/g

替换全部

:%s/old/new/gc

(逐个)替换

:noh

移除搜索结果的高亮显示

删除

操作

说明

x

删除光标后字符

X

删除光标前字符

dd

删除改行

dw

删除单词

d$

删除到行尾

d^

删除到行首

ndd

删除n行

剪切, 复制, 粘贴

操作

说明

yy

复制当前行

nyy

复制 n 行

yw

复制当前单词

y$

复制, 从光标位置到行末

p

在光标后粘贴

P

在光标前粘贴

dd

剪切当前行

ndd

剪切 2 行

dw

剪切当前单词

D

剪切, 从光标位置到行末

d$

剪切, 从光标位置到行末 (同D)

x

剪切当前字符

分屏和标签

操作

说明

:e file

新建缓冲区打开 filename

:bnext or :bn

切换到下个缓冲区

:bprev or :bp

切换到上个缓冲区

:bd

关闭缓冲区

:ls

列出所有打开的缓冲区

:sp file

新建缓冲区打开 filename 并水平分割窗口

:vsp file

新缓冲区打开 filename 并垂直分割窗口

Ctrl + ws

水平分割窗口

Ctrl + ww

在窗口间切换

Ctrl + wq

关闭窗口

Ctrl + wv

垂直分割窗口

Ctrl + wh

切换到右侧窗口

Ctrl + wl

切换到左侧窗口

Ctrl + wj

切换到下侧窗口

Ctrl + wk

切换到上侧窗口

配置管理

Vim的配置文件位于~/.vimrc,文件使用VimScript语法来编写

参考阮一峰的Vim 配置入门

快捷键配置

映射模式

定义映射模式时,我们可以使用nmap、imap、vmap来定义映射仅在normal、insert、visual模式有效

一般的映射模式是有副作用的,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nmap dd O<esc>jddk

这一命令想要将dd映射为:

O向上添加一个新行

esc返回normal模式

j向下移动到要删除的一行

dd删除这一行

k向上移动到新增的一行

然而实际执行中,当你按下dd时,文件会无限刷出空行直到你按下,这是因为这一命令中jddk中的dd也按照按键映射解读了。因此形成了一个死循环。

命令noremap解决了这个问题,每一个map命令都对应一个noremap命令。包括noremap、nnoremap、inoremap、vnoremap,它可以保证映射中的操作都遵循默认的操作。

这次我们使用noremap重新定义刚才的映射:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nnoremap dd O<esc>jddk

再次测试,发现不再出现死循环了。

使用Leader键

vim中的组合键是通过按键序列来执行的,例如qd这个操作,你只需要先按下q再按下d就好了,而不需要qd一起按。

由于Vim已经占用了大量的按键,导致我们配置快捷键时处处受限。

由于有些按键在vim的非insert模式中几乎是永远不会用到的(例如逗号,),因此我们可以在快捷键的命令前统一加上这个键,方便好记又不会冲突。这个键就称为Leader键。

我们可以通过let mapleader=","这一命令将逗号设置为leader键(设置其它键的方法同理)。然后对前文中我们定义的映射dd做一些修改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nnoremap <leader>dd O<esc>jddk

这下我们就可以通过,dd的组合键来调用映射了。

插件管理

安装vundle

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
$vim ~/vimrc
set nocompatible              " 去除VI一致性,必须要添加
filetype off                  " 必须要添加

" 设置包括vundle和初始化相关的runtime path
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" 另一种选择, 指定一个vundle安装插件的路径
"call vundle#begin('~/some/path/here')

" 让vundle管理插件版本,必须
Plugin 'VundleVim/Vundle.vim'

" 以下范例用来支持不同格式的插件安装.
" 请将安装插件的命令放在vundle#begin和vundle#end之间.
" Github上的插件
" 格式为 Plugin '用户名/插件仓库名'
Plugin 'tpope/vim-fugitive'
" 来自 http://vim-scripts.org/vim/scripts.html 的插件
" Plugin '插件名称' 实际上是 Plugin 'vim-scripts/插件仓库名' 只是此处的用户名可以省略
Plugin 'L9'
" 由Git支持但不再github上的插件仓库 Plugin 'git clone 后面的地址'
Plugin 'git://git.wincent.com/command-t.git'
" 本地的Git仓库(例如自己的插件) Plugin 'file:///+本地插件仓库绝对路径'
Plugin 'file:///home/gmarik/path/to/plugin'
" 插件在仓库的子目录中.
" 正确指定路径用以设置runtimepath. 以下范例插件在sparkup/vim目录下
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" 安装L9,如果已经安装过这个插件,可利用以下格式避免命名冲突
Plugin 'ascenator/L9', {'name': 'newL9'}

" 你的所有插件需要在下面这行之前
call vundle#end()            " 必须
filetype plugin indent on    " 必须 加载vim自带和插件相应的语法和文件类型相关脚本
" 忽视插件改变缩进,可以使用以下替代:
"filetype plugin on
"
" 常用的命令
" :PluginList       - 列出所有已配置的插件
" :PluginInstall     - 安装插件,追加 `!` 用以更新或使用 :PluginUpdate
" :PluginSearch foo - 搜索 foo ; 追加 `!` 清除本地缓存
" :PluginClean      - 清除未使用插件,需要确认; 追加 `!` 自动批准移除未使用插件
"
" 查阅 :h vundle 获取更多细节和wiki以及FAQ
" 将你自己对非插件片段放在这行之后

常用的插件

  • NERD Tree 文档目录
  • YouCompleteMe 自动补全
  • ctrlp 文件搜索

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
暂无评论
推荐阅读
编辑精选文章
换一批
Git入门学习到进阶1
描述:Git是目前世界上最先进的分布式版本控制系统(没有之一),如下面的Git生态化流程;
全栈工程师修炼指南
2022/09/28
5980
Git入门学习到进阶1
如何优雅的玩转 Git
Git 和其它版本控制系统(包括 Subversion 和近似工具)的主要差别在于 Git 对待数据的方式。 从概念上来说,其它大部分系统以文件变更列表的方式存储信息,而 Git 是把数据看作是对小型文件系统的一系列快照。
硬件开源小站
2023/04/07
1.6K0
如何优雅的玩转 Git
GIT命令操作全攻略,请收下我的膝盖!
很多人都知道,Linus 在1991年 创建了开源的Linux操作系统,此后的三十多年里,Linux 系统不断发展,已然成为全世界最大的服务器系统软件了。
Java极客技术
2022/12/04
6850
GIT命令操作全攻略,请收下我的膝盖!
瑞吉外卖Day7 Git使用的入门到精通
实际上,代码开发中也需要这样的软件来管理我们的代码. 例如我们经常会碰到如下的现象:
小小程序员
2023/04/02
2.3K0
瑞吉外卖Day7 Git使用的入门到精通
Git 操作指南
**版本控制(Revision control)**是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
星姮十织
2021/12/25
7380
Git的使用
1.代码可能被别人或自己不小心覆盖或遗失、也不知道是谁因为什么原因改了这段代码、也没办法可以复原回前几天的修改 2.团队间的协同作业,代码如何同步?
愷龍
2022/09/30
4220
Git的使用
Git必知必会
Git是一个分布式的版本控制软件,最初是由Linus Torvalds发起的开源项目。没错,就是那个写了Linux内核源码并发起开源项目的男人。2005年,为了管理Linux内核的源代码,开发并开源了git。
Coderoger
2021/10/20
6720
Git版本控制器使用总结性梳理
Git为何物? Git 是什么?大家肯定会说不就是版本控制器嘛,是的Git是目前世界上最先进的分布式版本控制系统(没有之一)。 1)那什么是版本控制器? 举个简单的例子,比如我们用Word写文章,那你一定有这样的经历:比如增加一个段落你得复制一份,你删除一个段落你又得复制一份,防止下次又要修改保留上次你要删除的段落。最后一个接一个的版本,你复制了很多版本,最后可能你自己都不知道修改了哪些?嘿嘿,然后你只能一个一个的找,太麻烦了,若是有东西帮你管理那应该多好。 2)分布式管理 你写的文章或书,你肯定会给你朋友
洗尽了浮华
2018/01/22
7600
Git版本控制器使用总结性梳理
Git的使用教程
1.代码可能被别人或自己不小心覆盖或遗失、也不知道是谁因为什么原因改了这段代码、也没办法可以复原回前几天的修改
愷龍
2022/09/13
8590
Git的使用教程
30分钟看懂Git和GitHub常用操作
GitHub是一个非常流行的全球代码托管平台,基于Git版本控制技术实现,同时GitHub也是一个活跃的开发者交流社区。许多的开源项目都在GitHub上发布。例如著名的Linux操作系统内核的源代码。
AI算法与图像处理
2020/11/06
1K0
30分钟看懂Git和GitHub常用操作
.NET Core实战项目之CMS 第四章 入门篇-Git的快速入门及实战演练
上篇文章我带着大家通过分析了一遍ASP.NET Core的源码了解了它的启动过程,然后又带着大家熟悉了一遍配置文件的加载方式,最后引出了依赖注入以及控制反转的概念!如果大家把前面几张都理解了,那么你也就入了ASP.NET Core的大门了。但是我们还需要一个版本控制工具来提高我们的编码效率。因此这篇文章我将带着大家了解下Git这个版本控制工具以及为什么选择它。
依乐祝
2018/11/28
4040
.NET Core实战项目之CMS 第四章 入门篇-Git的快速入门及实战演练
专栏:001: git 简易教程12:概念介绍篇3 代码示例篇3:附属篇4:参考
1、git教程框架 序号 板块 01 概念介绍篇 02 代码示例篇 03 附属篇 2:概念介绍篇 什么是git? git是一个分布式版本控制软件,由Linus Torvalds创作,最初的目的是为
谢伟
2018/06/06
6540
目前最流行的版本控制软件:Git的基本使用
版本控制(Version control)是维护项目的标准作法,能追踪项目从诞生一直到定案的过程。此外,版本控制也是一种软件工程技巧,借此能在软件开发的过程中,确保由不同人所编辑的同一程序文件都得到同步,记录项目内各个模块的改动历程,并为每次改动都编上序号。
知识分子没文化
2023/07/01
6090
目前最流行的版本控制软件:Git的基本使用
Git 30分钟简明教程
1991年,Linus创建了开源的Linux,世界各地的志愿者为Linux编写代码,但是绝大多数的内核维护工作,都花费在提交补丁和保存档案的繁琐事务上。这期间所有的源代码,都由Linus手工合并。Linus坚定反对CVS和SVN,因为这些集中式的版本控制系统,不仅速度慢,而且必须联网才能使用。
Yano_nankai
2018/10/08
5450
Git 30分钟简明教程
.NET Core实战项目之CMS 第四章 入门篇-Git的快速入门及实战演练
上篇文章我带着大家通过分析了一遍ASP.NET Core的源码了解了它的启动过程,然后又带着大家熟悉了一遍配置文件的加载方式,最后引出了依赖注入以及控制反转的概念!如果大家把前面几张都理解了,那么你也就入了ASP.NET Core的大门了。但是我们还需要一个版本控制工具来提高我们的编码效率。因此这篇文章我将带着大家了解下Git这个版本控制工具以及为什么选择它。 下面我们将通过故事的形式从Git的历史谈起,并讲述Git的强大之处。然后通过实战演练教你如何在Github以及码云上托管我们的代码并进行代码的版本控制。 这里还想说一句,这篇文章本来昨天就能发出来的,奈何出现了一点状况,所以今天才来写,为了不浪费大家的时间我会在文章的最后再来讲述原因,这里给大家说声抱歉了。 本篇文章已经收入.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划 有兴趣的朋友可以加入.NET Core项目实战交流群637326624 进行交流。
依乐祝
2018/11/28
3200
.NET Core实战项目之CMS 第四章 入门篇-Git的快速入门及实战演练
git使用教程之创建本地库并关联远程库(笔记整理篇一)
笔者个人博客: https://qiucode.cn/blog 微信小程序 [秋码淘好货]
游离于山间之上的Java爱好者
2022/09/21
4490
git使用教程之创建本地库并关联远程库(笔记整理篇一)
看完此文你不会Git,请来找我!
 数据是短暂的,且容易丢失。特别是作为开发人员的我们,需要频繁的对项目代码进行更新,容易产生错误的变更或者是项目文件的丢失。因此,我们需要在整个工作的过程中不断的备份和存档我们的项目文件。  在当下的项目开发环境下,一个项目往往是有多个开发者共同开发维护的,那么意味着他们需要操作同一项目文件,我们需要对文本和项目代码的变更进行记录管理,这些变更就构成了一个版本库,对版本库的管理就是版本控制。  一个可以管理或追踪软件代码的工具通常称为版本控制系统(VCS)。现在流行的版本控制工具很多,当然,我们接下来要说的就是称的上VCS界一哥的Git,它是一款功能强大、灵活且低开销的VCS,它可以让协同开发成为一种乐趣。
我就是马云飞
2019/03/08
9240
看完此文你不会Git,请来找我!
分布式版本控制-Git(一)
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
奋飛
2019/08/15
4370
GIT 之概述与架构
GIT是如今最流行的版本控制系统。曾经系统总结过一次关于GIT的使用,抽时间整理成文。
波罗学
2019/07/31
1.5K0
【干货】Git入门
想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件“另存为……”一个新的Word文件,再接着改,改到一定程度,再“另存为……”一个新文件,这样一直改下去,最后Word文档变成了这样。
腾讯工蜂
2018/09/27
8380
相关推荐
Git入门学习到进阶1
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验