Vim简明教程:基本可视模式

2024-02-17 21:48

本文主要是介绍Vim简明教程:基本可视模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Vim简明教程:基本可视模式

可视模式让你可以选择文件的一部分内容,以便作比如删除,复制等工作。

进入可视模式

v

用v命令进入可视模式。当光标移动时,就能看到有一些文本被高亮显示了,它们就是被选中的内容。

三种可视模式

v

一个字符一个字符地选。从按下v的那个字符起,一直到光标所移动到的位置之间的内容都被选中。

V

一行一行地选。从按下V的那行起,一直到光标所移动到的行之间的所有行都被选中。

Ctrl-v

它选中屏幕上的一个矩形区域。以按下Ctrl-v的位置为一个角,光标所在位置为它的对角。

离开可视模式

按下就会离开可视模式。

可视模式下的编辑

在可视模式下删除文本

d

删除所选中的部分。

D

删除所选中部分所在的行。即使没有把一行都选中,也把一行都删除。

复制

v

复制选中的部分。

D

复制所选中部分所在行。即使没有把一行都选中,也把一行都复制。

更改模式

可以随时在可视模式中的三种之间切换,只需按进入想要切换到的模式的命令即可。

更改文本

c

删除所选中的部分并切换到输入模式。

C

删除所选中的部分所在的行并切换到输入模式。

合并行

当选中想合并在一起的行以后,按下

J(大写)

就可以了。

程序员的命令

>

所选中的部分都缩进一个tab。

在所选中的部分删除一个tab的缩进。

=

自动排列所选中的内容。

查看man

K

命令查看关键字的man page,在可视模式它会以选中的文本为关键字。

可视块模式

通过Ctrl-v进入的模式为可视块模式,它会选中一个矩形区域。

插入内容

I字符串

会在每一行所选中内容的开始前添加”字符串”

改变文本

c字符串

会把选中的内空删除并进入输入模式。你只需要在选中的第一行输入一个字符串,当按下后所有行的选中部分都会和第一行一样。这里的字符串中不能包含换行符,如果包含了换行符的话,它就不会这么神奇,就会根普通模式下的c一样了。

C(大写)

会直接删除到行尾,其它与c一样。

A(大写)

会在选中的块后面添加文本。它们是对齐的。

如果要在选中的块紧接每行末尾添加内容,则需用$来指定选择到行尾,而不是简单地用光标。

替换内容

r

用来把选中的内容替换成同一个字符。

缩进

>

>将选中的块缩进一个shiftwidth

固定链接 留言

Vim简明教程5:窗口

九月 3, 2006 @ 9:17 am · 归类于 Vim

打开一个新窗口

最简单的打开新窗口的方法是

:split

它把一个窗口分成两个,光标留在上面的那个窗口中。

通过

Ctrl-w+方向键

来在窗口间切换

比如

Ctrl-ww 或 Ctrl-w Ctrl-w

切换到下一个窗口;

Ctrl-wj 和 Ctrl-wk

分别切换到下一个窗口和上一个窗口。

要关闭窗口,用

:q 或 ZZ 或 Ctrl-wc

找开一个新窗口并在其中打开一个文件

:split 文件名

也可以给split命令分配一个初始命令,也就是说执行完split接着要做的

:split +命令 文件名

比如

:split +/printf three.c

命令会把当前窗口分成两个然后在上面的窗口中查找printf这个字符串。

控制窗口大小

如果给split命令指定一个参数,则表示新找开窗口的高度

比如

:3split alpha.c

打开一个高度为3的窗口并在其中打开alpha.c

:new命令

:new

命令用起来就跟split差不多,只有一点不同:new命令会在新窗口中新建一个文件,而split只是在新窗口中打开原窗口中的内容。

分割并查看(Split and View)

:sview

命令新建一个窗口并且其中的内容是只读的。

改变窗口大小

行数Ctrl-w+

把当前窗口高度增加”行数”行(如不指定行数,默认为1)

行数Ctrl-w-

把当前窗口高度减少”行数”行(如不指定行数,默认为1)

Ctrl-w=

让所有窗口一样高

行数Ctrl-w_

把当前窗口的高度设为”行数“,如不指定则把它最大化。

缓冲

Vim用缓冲来代表一个文件。当你在编缉一个文件时,只是在编缉它的缓冲。当你完成编辑保存时,Vim把缓冲中的内容保存进文件。当然,事情并不是 这么简单。在Vim中设置的标记之类的也保存在缓冲中。你可以同时拥有多个缓冲,当你编辑多个文件时就是这样。当你想要一个Vim窗口,并且想编辑多个文 件时,把这个窗口最大化是不管用的,因为这不是一个窗口,其它的窗口还是能看得见的。此时你可以把不编辑的缓冲隐藏(hide),用命令

:hide

一个缓冲有三种可能的状态:

活动:显示在屏幕上的窗口

隐藏:没有显示在屏幕上的在编辑的缓冲

不活动:缓冲没有在编辑,但是保存着它的信息

第三种状态需要多解释一下,当你编辑另一个文件时,当前文件的内容就没有用了。Vim就关掉它。但是它的一些其它信息可能还有用。(这一部分比较混乱,原文说得也不是很清楚,不懂也无所谓)

要查看缓冲的列表,用

:buffers

命令。输出的第一列是缓冲编号,第二列是状态,第三列是与缓冲对应的文件。

状态共且以下几种:

- 不活动的缓冲
h 隐藏的缓冲
% 当前缓冲
# 其它缓冲
+ 文件被编辑而未保存

选择一个缓冲

:buffer 缓冲编号

如果你不知道缓冲的编号,可以用

:buffer 文件名

下面的命令分割窗品并编辑指定的缓冲

:sbuffer 缓冲编号

:sbuffer 文件名

还有很多关于缓冲的命令:

:bnext 去下一个缓冲
:count bnext 执行count次去下一个缓冲
:count sbnext 先分割窗口,然后执行:count bnext
:count bprevious 去上一个缓冲。如果指定了count,则执行count次
:count sbprevious 先分割窗口,然后执行:count bprevious
:count bNext 同:count bprevious
:count sbNext 同:count sbprevious
:blast 去最后一个缓冲
:sblast 先分割窗口再执行:blast
:brewind 去第一个窗口
:sbrewind 先分割窗口再执行:brewind
:bmodified count 去第count个编辑过的缓冲
:sbmodified count 等于:split加:bmodified

缓冲选项

通常当所有编辑一个文件的窗口都关掉后,这个窗口的缓冲就变成”不活动”,如果不想这样,可以设置

:set hidden

让它变成隐藏而不是不活动。

通常分割/缓冲相关的命令会分割当前窗口,但是也可以让Vim在已经有窗口打开所指定的缓冲时,切换到那个窗口而不是新建一个:

:set switchbuf=useopen

更多关于switchbuf的内容参见23章。

固定链接 留言

Vim简明教程4:块和多文件编辑

九月 1, 2006 @ 11:04 am · 归类于 Vim

这是我在看一本叫做Vim Tutorial的书时作的笔记,去掉了例子,作了一下总结。放上来作为一个Vim的小教程分享一下。本系列文章可转载,但请注明出处:http://mingfal.bloggerspaces.com。

剪切,粘贴和复制

当你在删除文字的时候,比如d, x之类的,被删除的内容都被保存了下来。你可以通过

p

来粘贴它们。

交换字符
有时你会把两个字母打反,比如把the打成teh。用

xp

命令就可以把它们调换位置。原理是这样的,首先x会把e删除并保存,p会把它粘贴到光标所在位置,也就是h之后。

关于粘贴的更多
p命令可以用多次。p命令把内容粘贴在光标之后,而

P

把内容粘贴在光标之前。

标记

Vim允许你在文本中做标记。命令

ma

会在光标所在处做一个名为a的标记。你最多可以在文本中做26个标记(a-z)。

要移动到一个标记,用命令

`标记

其中`是在键盘左上角数字一左边的那个键

要移动到一个标记所在行的行首,用命令

‘标记

其中‘是单引号

标记在删除大量文件内容人时很有用。比如

在你想要删除的文本的开始处做标记ma

然后移动到想删除文本的末尾,用d`a删除从此位置到标记a间的内容。

注意,标记会跟着它所标记处的文本移动(比如在它之前插入或删除了东西)

标记都在哪呢?

:marks

命令会列出所有标记的列表。

复制

y

命令用来复制,它的用法与d很相似。

复制一行

Y(大写)

复制一行内容

管道

!动作 命令

会把由”动作”选中的文本作为”命令”的输入,并用”命令”的输出替换选中的文本。

举个例子,sort命令会对一个文件的内容排序。如果想对当前正在编辑文件的前10行排序,可以这样:

先把光标移动到第一行,然后

!10G sort

!!命令

命令把当前行作为“命令”的输入。(这是一个把系统命令的输出放到文件里的好方法)。

编辑另一个文件

:vi 或 :e

可以关闭当前文件,并打开新的文件。

如果当前文件没有保存,则会出现提示。这时使用

:w

会保存未保存的文件。

View命令

:view 文件

会在Vim中以只读方式打开文件。

处理多个文件

可以在调用Vim时指定多个参数以依次编辑多个文件

Vim 文件1 文件2 文件3 …

默认情况下Vim每次只会编辑一个文件,当编辑完一个文件时,

:next

命令会关闭光前文件打开下个文件开始编辑。

我在哪里
当你在编辑多个文件时有时会忘了自己在编辑哪个。

:args

命令会显示当前正在编辑哪个文件。

编辑上一个文件

当要编辑上一个文件时,用命令

:previous 或 :Next。

编辑每一个或最后一个文件

要编辑第一个文件,用

:rewind

要编辑最后一个文件,用

:last

编辑两个文件

当同时编辑两个文件时,正在编辑的是当前文件,没在编辑的会被当成“另一个文件”,在这两个文件间切换要方便的多。用命令:

Ctrl+^

固定链接 留言

Vim简明教程3:查找

九月 1, 2006 @ 10:55 am · 归类于 Vim

这是我在看一本叫做Vim Tutorial的书时作的笔记,去掉了例子,作了一下总结。放上来作为一个Vim的小教程分享一下。本系列文章可转载,但请注明出处:http://mingfal.bloggerspaces.com。

简单查找

/要查找内容

用/向后查找,紧随其后的要查找的内容。然后按下回车,Vim就会去为你找你想要的东西了。

要注意

.*%/\?!$ 还有空格

都有特殊意义,如果要查找的内容中包含这些字符,要在前面加上一个\。

要查找区配的下一处,用命令

\ 或 n

它们的作用是相同的。

查找历史

查找命令可以允许你来查看查找的历史,在输入一个/以后,不要按回车,然后再按上下键就可以查看上一条或下一条查工历史了。在某个历史处如果按回车,就会查找此内容。

查找选项

高亮

:set hlsearch

命令可以让所有的查找都高亮显示匹配的部分。

:set nohlsearch

取消高亮选项

增量查找

一般情况下,Vim在查找时要等待用户输入整个要查找的内容,然后再去查找。增量查找则是不等用户输入完毕,就查找已输入的部分。要使用它需要进行下面设置:

:set incsearch

如查取消,则

:set noincsearch

反向查找

?要查找的内容

命令从当前位置开始反向查找,即向文件的开始查找。

改变方向

N

命令可以改变查找的方向并查找改变方向后的下一处匹配。

基本的正则表达式

行首(^)和行尾($)

^表示一行的开始,include会匹配每一处的include,而^include只会匹配在行首的include。
$表示一行的结束,was$只会匹配在行末的was。
如果想要匹配只有一个词the的行,用^the$。

匹配任意单个字符(.)

.匹配任一个字符,比如c.m表示以c开头以m结尾的有三个字母的字符串。

匹配特殊字符

好多字符在正则表达式中有特殊含意。要匹配这一类字符,要在前面加一个\。比如,要匹配the.,就要用the\.

固定链接 留言

Vim简明教程2:编辑得更快一些

八月 30, 2006 @ 12:43 pm · 归类于 Vim

这是我在看一本叫做Vim Tutorial的书时作的笔记,去掉了例子,作了一下总结。放上来作为一个Vim的小教程分享一下。本系列文章可转载,但请注明出处:http://mingfal.bloggerspaces.com。

按词移动

w

按下w会前进一个词。

b

按下b会后退一个词。

这里,就像在Vim中的大部分情况下一样,在这两个命令前面加上一个数字可以让它们重复做多次。

移动到行首或行末

$

$会让你移动到所在行的末尾。

^

^会让你移动到所在行的开始。也可以做相似的事。不过^会移动到第一个非空的字符处,而会移动到行首。

这两个命令也接受数字参数,比如

2$

会移动到下一行末。

在行上查找

f要查找的字符

f用来在一行上查找一个字符并移动到该字符所在处。比如

fx

用来移动到此行当标后第一个x处。如果有一个数字参数,就可以指定移动到某个指定的匹配位置。

F

F用来向左查找。

移动到指定行

行号G

G命令会把你带到用行号指定的行。如果使用没有行号的G,将会移动到最后一行。

显示当前所在位置

:set number

Vim的可制定性是很强的,所以你可以通过:set设定很多选项。number就是其中之一。它是一个布尔选项,用来控制是否在最左边显示行号。

:set number

可以把它打开。

:set nonumber

则可以关闭此选项。

Ctrl+g

Ctrl+g会显示当然后在的位置。

向上和向下翻屏

Ctrl+u

会向上翻半屏

Ctrl+d

会向下翻半屏

删除文本

dw

dw会删除一个词。你应该可以看得出来,这里的w代表的就是word(词).其实d后面可以加好多东西来控制删除的对象。比如:

d$

会删除从当前位置到行末的所有内容。

数字放在哪

这里有一个疑问,如果想删除三个词,那么应该怎么办?是d3w,还是3dw。其实它们都能做到,不过原理不太一样。d3w是一次删除三个词,而3dw是执行三次删除一个词。其实这两者可以混起来,比如2d3w。

改变文本

c

c用来改变文本。它的用法跟d一样。

cc

用来删除一行并进入输入状态。

cw

用来删除一个词并进入输入状态等。

但是cw跟dw有一个不同之处。dw删除了一个词以后,还删除该词后面的空格。而cw只是会删除这个单词,空格仍然保留。

.

.命令会重复上一次所做的删除(d, x)或改变(c)命令。

合并行

J

J(大写)将当下一行接在当前行后,并在两者间插入一个空格来合并这两行。

替换字符

r替换的字符

r命令把当标处的字符替换成在r命令中指定的字符。

更改大小写

~

通过~可以把光标处的字符用它的大写(如果现在是小写)或小写(如果现在是大写)替换。

Vim有着简洁而强大的宏功能。

q宏名

按下 q+宏名 后会进入宏录制状态,也就是说,此后发生的一切操作都会记录到名为“宏名”的宏中。如果名为“宏名”的宏已经存在,则将它覆盖。

@宏名

会调用名为“宏名”的宏。

特殊字符

当要输入特殊字符时,可以用

Ctrl+k特殊字符代号

可以通过命令

:digraph

来得到一个完整的对应表,来查看特殊符号所对应的代号。

比如,要输入á, 则要通过下面的方法

Ctrl+ka’

固定链接 留言

Vim简明教程1:基本编辑

八月 30, 2006 @ 12:37 pm · 归类于 Vim

这是我在看一本叫做Vim Tutorial的书时作的笔记,去掉了例子,作了一下总结。放上来作为一个Vim的小教程分享一下。本系列文章可转载,但请注明出处:http://mingfal.bloggerspaces.com。

开始之前要做的

touch ~/.Vimrc

这会创建空的~/.Vimrc文件,这会告诉Vim你想要让Vim以Vim方式工作。如果不这样做的话,Vim会以Vi兼空模式运行,会有好多有用的功能没法使用。这也可以在Vim运行过程中通过

:set nocompatible

来实现。

第一运行Vim

gVim file.txt

会运行gvim(Vim的图行化前端),并在其中打开file.txt文件

Vim命令

Vim

会让你在终端打开Vim编辑,而不是像刚才那样打开一个新的窗口。

模式

Vim是一个模式化的编辑器。也就是说,它在不同的模式下会有不同的表现。当最下面的一行是文件名或为空时表示正在普通模式。如果是–INSERT–表示是在编辑模式。而–VISUAL–则表示目前是可视化模式。

插入文本

i

键入i后会从普通模式转变到编辑模式。此时输入的东西将会作为文件的一部分。

当你编辑完毕后,按下就会从编辑模式转回普通模式。同时,不管现在是在什么模式下,都会把你带回普通模式。

移动光标

当你回到命令模式(即普通模式)时,可以用下面的键来移动光标

h(左), j(下), k(上), l(右)

这可能看上去比较奇怪,谁会用l去表示右???但是实际上这是有原因的。移动光标上是在编辑过程中经常要做的,而h , j, k, l就在放右手手指的地方,也就是说按这几个键是最快的。当然,也可以用方向键来移动光标,不过那会大大减低你的编辑速度。

删除字符

x

当你想删除一个字符时,把光标移动到它上面,然后按下x键,它就会消失。

撤消和重做

u

在普通模式下按下u会撤消上一布的操作。

Ctrl+R

如果撤消的次数过多,按下 Ctrl+R 会重做上次撤消的操作。

U

U(大字)是一个特殊的撤消键,它会撤消在在最后编辑的行上所作的所有操作。

退出

ZZ

ZZ会退出Vim并对所编辑的文件保存。

取消修改

:q!

当你编辑完一个文件发现你并不想这样编辑它时,:q! 会让你退出Vim而不保存所作的修改。

追加

a

i会在光标所在安符前插入字符,而a会让你在当标所在的位置之后继续输入内容。

删除一行

dd

dd命令会删除当前所在的一行内容。

新开始一行内容

o

o命令会在光标所在行下面加入一行,并将光标移动的此行的开始以供输入。

O

如果想在光标所在行的上面加入一行,请使用命令O(大写)

获得帮助

:help

:help命令让你可以进入和查看Vim的帮助。用ZZ退出帮助。同时可以用像在Vim一样的h, j, k, l键来移动光标。帮助中会有一些被竖线括起来的词,那其实是超级链接。用Ctrl+]就可以跟随它,Ctrl+t用来后退。如果要查找某一特定主题的帮助,使用

:help 主题

同时

也会起到和:help一样的效果。

重复命令

当要做多次同样的操作时,可以用计数来加快这一过程。

9k

会让你向上移动9行。通过在命令前加一个数字n,就可以执行这一命令n次。

Vim教程

Vim自带了一份Vim教程

:vimtutor

会打开它。


原文地址:http://hi.baidu.com/qiaoyuetian/item/bd1b1839e9b7184d033edc93

这篇关于Vim简明教程:基本可视模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/719085

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

模版方法模式template method

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

迭代器模式iterator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/iterator 不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素