Aristotle
发布于 2023-02-12 / 5 阅读 / 0 评论 / 0 点赞

vim

vim

粘贴模式

1. paste 模式

运行如下命令,进入 paste 模式:

:set paste

进入 paste 模式后,按 i 键进入插入模式,然后再粘帖,文本格式不会错乱了。但粘帖后还需要按 <ESC> 进入普通模式并执行如下命令结束 paste 模式:

:set nopaste

--------------------------------

vim撤销、回退操作

在vi中按u可以撤销一次操作

u 撤销上一步的操作

Ctrl+r 恢复上一步被撤销的操作

注意:

如果你输入“u”两次,你的文本恢复原样,那应该是你的Vim被配置在Vi兼容模式了。

重做

如果你撤销得太多,你可以输入CTRL-R(redo)回退前一个命令。换句话说,它撤销一个撤销。要看执行的例子,输入CTRL-R两次。字符A和它后面的空格就出现了:

young intelligent turtle

有一个特殊版本的撤销命令:“U”(行撤销)。行撤销命令撤销所有在前一个编辑行

上的操作。 输入这些命令两次取消前一个“U”:

A very intelligent turtle

xxxx 删除very

A intelligent turtle

xxxxxx 删除turtle

A intelligent

用“U”恢复行

A very intelligent turtle

用“u”撤销“U”

A intelligent

“U”命令自己改变自己,“u”命令撤销操作,CTRL-R命令重做操作。这有点乱,但不用

担心,用“u”和CTRL-R命令你可以切换到任何状态。

流行的文本编辑器通常都有前进和后退功能,可以在文件中曾经浏览过的位置之间来回移动。在 vim 中使用 Ctrl-O 执行后退,使用 Ctrl-I 执行前进。

相关帮助: :help CTRL-O :help CTRL-I :help jump-motions

-------------------

设置vim 显示行号

1、临时显示行号

只须按ESC键退出编辑内容模式,输入“:” ,再输入“set number”或者“set nu”后按回车键,就可以显示行号了。行号显示只是暂时的。退出vim后再次打开vim就不显示行号了。

取消显示行号:输入“:set nonu”

2、永久显示行号

需要修改vim配置文件vimrc。

在默认情况下,用户宿主目录(~)中是没有此文件的,需要在当前用户的宿主目录中手工建立,即使用下面的命令:

vim ~/.vimrc ,在打开的vimrc文件中最后一行输入:set number 或者 set nu,然后保存退出。再次用vim打开文件时,就会显示行号了。

参考文章 设置vim 永久显示行号 https://cloud.tencent.com/developer/article/1404057

=======================

Vim复制一整行和复制多行

参考:https://www.cnblogs.com/ysjdy/p/16264159.html

1、复制

1)单行复制

在命令模式下,将光标移动到将要复制的行处,按“yy”进行复制;

2)多行复制 在命令模式下,将光标移动到将要复制的首行处,按“nyy”复制n行;其中n为1、2、3……

【yy】 复制光标所在的那一行
【nyy】 复制光标所在的向下n行

2、粘贴

在命令模式下,将光标移动到将要粘贴的行处,按“p”进行粘贴

【p,P】 p为将已经复制的数据在光标下一行粘贴;P为将已经复制的数据在光标上一行粘贴

3、删除

删除一行:dd

删除一个单词/光标之后的单词剩余部分:dw

删除当前字符:x

光标之后的该行部分:d$

文本删除

dd 删除一行

d$ 删除以当前字符开始的一行字符

ndd 删除以当前行开始的n行

dw 删除以当前字符开始的一个字

ndw 删除以当前字符开始的n个字

4、查找

【/word】 在文件中查找内容为word的字符串(向下查找)
【?word】 在文件中查找内容为word的字符串(向上查找)
【[n]】 表示重复查找动作,即查找下一个
【[N]】 反向查找下一个

搜索后,我们打开别的文件,发现也被高亮了,怎么关闭高亮?

命令模式下,输入:nohlsearch  也可以:set nohlsearch; 当然,可以简写,noh或者set noh。

5、设置行号

如果编辑后,又想显示行号,同样操作按一下esc键,并输入:(冒号),输入set number    ,并按回车键,完成后即显示行号

6、跳到指定行

在知道所查找的内容在文件中的具体位置时可以使用以下命令直接定位:
跳到文件指定行:比如跳到66行

66+G(也就是66+shift+g)
当然你可以选择另一种跳转方式:

命令行输入“ : n ” 然后回车
跳到文件第一行:gg (两个小写的G)

跳到文件最后一行:shift+g (也就是G)
7、文件上下翻转

页翻转可以直接使用PgUp和PgDn

向前滚动一屏:Ctrl+F

向后滚动一屏:Ctrl+B

向前滚动半屏:Ctrl+D(向下)

向后滚动半屏:Ctrl+U(向上)

向下滚动一行,保持当前光标不动:Ctrl+E

向上滚动一行,保持当前光标不动:Ctrl+Y

当前行滚动:
当前行移动到屏幕顶部并滚动:Z+Enter
滚动指定行到屏幕顶部: 10Z+Enter(指定第十行)
当前行移动到屏幕中央并滚动:Z + .
当前行移动到屏幕底部并滚动:Z + -
当前屏幕操作:
H:大写h,移动到当前屏幕首行;nH移动到首行下的第n行
M:大写m,移动到当前屏幕中间行
L:大写l,移动到当前屏幕末行;nL移动到末行上面的第n行
8、撤销上一步操作

【u】 撤消上一个操作
【[Ctrl] + r】 多次撤消
【.】 这是小数点键,重复上一个操作

  缩进:

  插入模式下,ctrl+shift+d 减少缩进,ctrl+shift+t 增加缩进

9、vim编辑

1、进入插入模式(6个命令)
【i】 从目前光标所在处插入
【I】 从目前光标
【a】 从当前光标所在的下一个字符处开始插入
【A】 从光标所在行的最后一个字符处开始插入
【o】 英文小写字母o,在目前光标所在行的下一行处插入新的一行并开始插入
【O】 英文大写字母O,在目前光标所在行的上一行处插入新的一行并开始插入

 2、进入替换模式(2个命令)
【r】 只会替换光标所在的那一个字符一次
【R】 会一直替换光标所在字符,直到按下[ESC]键为止
【[ESC]】 退出编辑模式回到一般模式

  3、一般模式切换到命令行模式
【:w】 保存文件
【:w!】 若文件为只读,强制保存文件
【:q】 离开vi
【:q!】 不保存强制离开vi
【:wq】 保存后离开
【:wq!】 强制保存后离开
【:! command】 暂时离开vi到命令行下执行一个命令后的显示结果
【:set nu】 显示行号
【:set nonu】 取消显示行号
【:w newfile】 另存为
【:set fileencoding】 查看当前文件编码格式
【:set fileencoding=utf-8】 设置当前文件编码格式为utf-8,也可以设置成其他编码格式
【:set fileformat】 查看当前文件的断行格式(dos\windows,unix或macintosh)
【:set fileformat=unix】 将当前文件的断行格式设置为unix格式

10、多窗口功能
【:sp [filename]】 打开一个新窗口,显示新文件,若只输入:sp,则两窗口显示同一个文件
【[Ctrl] + w + j】 光标移动到下方窗口
【[Ctrl] + w + k】 光标移动到上方窗口
【[Ctrl] + w + q】 离开当前窗口

11、缩进

批量缩进

在程序代码界面,按esc,退出编辑模式,到命令模式,并在英语输入法下输入“:”

将所要批量缩进的行号写上,按照格式:“行号1,行号2>”输入命令,如要将2至9行批量缩进一个tab值,则命令为“2,9>”

输入完毕后,按回车可以执行,就可以看到2至9行全部缩进了一个tab值了,同样的,如果要缩回来一个tab值,则用命令“行号1,行号2<”即可

可视模式缩进

方法二是在可视模式下选择要移动的列,操作为,esc从编辑模式退到命令模式,将光标移到需要缩进的行的行首,然后按shift+v,可以看到该行已被选中,且左下角提示为“可视”

此时,按键盘上的上下左右方向键,如这里按向下的箭头,选中所有需要批量缩进的行

选择好了之后,按shift+>,是向前缩进一个tab值,按shift+<,则是缩回一个tab值,