关山难越,谁悲失路之人;萍水相逢,尽是他乡之客。
百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程教程 > 技术文章 > 正文

vim命令大全-收藏备用

guanshanw 2023-08-22 02:47 29 浏览 0 评论

常用命令汇总

ESC键 跳到命令模式,然后:·

  1. :w 保存文件但不退出vi
  2. :w file 将修改另外保存到file中,不退出vi
  3. :w! 强制保存,不推出vi
  4. :wq 保存文件并退出vi
  5. :wq! 强制保存文件,并退出vi
  6. :q 不保存文件,退出vi
  7. :q! 不保存文件,强制退出vi
  8. :e! 放弃所有修改,从上次保存文件开始再编辑

1切换插入模式:

命令模式下

a (小写)光标之后进行插入

A (大写)光标所在行尾进行插入

i (小写)光标前开始进行插入

I (大写)光标所在行首进行插入

o (小写)光标所在行后新插入一空行进行插入

O (大写)光标所在行前新插入一空行进行插入

插入模式下按ESC键返回命令模式

2 切换到编辑模式

命令模式下按【:】进入编辑模式,键入命令回车后自动返回到命令模式或按ESC键返回到命令模式。

3 保存文件

编辑模式下

:w (小写)保存文件

?:wq (小写)保存并退出vim

:w 文件名1 将文件另存为文件名1

:ZZ (大写)保存文件并退出,相当于:wq

:wq! (小写)文件所有者强制保存只读文件,如果不是文件所有者进行此操作,不能成功

:q! 退出不保存文件

4 复制(yank)

命令模式下

yy或 Y 复制光标所在整行

y^ 复制到光标所在行行首,不包括光标位置字符

y$ 复制到光标所在行行尾,包括光标位置字符

yw 复制一个单词,光标必须在单词首部

yG 复制到文件尾

y1G 复制到文件首

nyy 复制光标所在行开始的n行

5 粘贴

命令模式下

p (小写)粘贴到光标后

P (大写)粘贴到光标前

6 删除

命令模式下

x (小写)删除光标前一个字符

X (大写)删除光标后一个字符

dd (小写)删除光标所在整行

dw (小写)删除光标所在处一个单词

dG 删除光标所在整行到文件尾

dgg 删除光标所在整行到文件首

D (大写)删除到行尾,包含光标处的字符

d$ 与D效果相同

d0 删除到行首,不包含光标处的字符

d^ 与d0效果相同

:n1,n2d 编辑模式下,删除n1-n2行

7撤销

命令模式下

u (小写)无限次保存前撤销(大概500多次)

ctrl+r redo

8 字符替换

命令模式下

r (小写)替换光标所在处一个字符

R (大写)开始替换,直到按ESC键退出替换,相当于按下键盘上到insert键

cc (小写)取代光标所在整行

S (大写)与ss(小写)效果相同

C (大写)取代到行尾,包括光标处字符

c0 (小写,数字0)取代到行首,不包括光标处字符

c^ (小写)与c0(小写,数字0)效果相同

9 字符串查找和替换

命令模式下

/string 从光标处开始向下开始查找字符串string

/查找模式下按n(小写)查找下一个,按N(大写)查找上一个

?string 从光标处开始向上开始查找字符从string

?查找模式下按n(小写)查找上一个,按N(大写)查找下一个

* 向下完整匹配光标下的单词

# 向上完整匹配光标下的单词

g* 向下部分匹配光标下的单词

g# 向上部分匹配光标下到单词

编辑模式下

:set ic 查找时,忽略大小写

:set noic 取消查找时忽略大小写

:f string (小写f与string有空格)搜索一行中匹配到的string

:%s/old/new/g 全文将old替换为new,不提示

:%s/old/new/c 全文将old替换为new,提示是否替换

:n1,n2s/old/new/g n1-n2行中,将old替换为new,不提示

:n1,n2s/old/new/c n1-n2行中,将old替换为new,提示是否替换

在替换文本old或new中有/字符时,需要用\进行转义

10 显示行号

编辑模式下

:set nu(mber) 显示行号

:set nonu 取消显示行号

:set nu! 取消显示行号

11 简单排版

编辑模式下

:ce(nter) 居中显示光标所在行

:ri(ght) 靠右显示光标所在行

:le(ft) 靠左显示光标所在行

命令模式下

J 将光标所在下一行合并到光标所在行

>> 光标所在行增加缩进(一个tab)

<< 光标所在行减少缩进(一个tab)

n>> 光标所在行开始的n行增加缩进

n<< 光标所在行开始的n行减少缩进

12 书签

命令模式下

mx 设定书签,x是任意一个字母,通常小写(a-z),x为小写字母时,局限在一个文件之间切换;大写字母时,可在文件之间切换.

`x (`位于数字键1旁边)跳转到书签x

编辑模式下

:marks 查看标签

13 光标移动方式

命令模式下

H (大写,Head)移动到屏幕顶第一个非空白字符

M (大写,Mid)移动到屏幕中间第一个非空白字符

L (大写,Last)移动到屏幕底部第一个非空白字符

( (左小括号)移动到上一个句子首

) (右小括号)移动到下一个句子首

{ (左大括号)移动到上一个段落首

} (右大括号)移动到下一个段落首

% 光标跳转到匹配到括号处,支持{}()

[[ 光标跳转到代码块开头即{处,要求{独占一行

gD 光标跳转到局部变量定义处

'' (两个单引号)光标跳转到上次停靠处

h (小写)光标左移一个字符,相当于左方向键

l (小写)光标右移一个字符,相当于右方向键

k (小写)光标垂直上移一行,相当于上方向键

j (小写)光标垂直下移一行,相当于下方向键

ctrl+f (forword)向下整页翻页

ctrl+b (backward)向上整页翻页

ctrl+u (up)向上翻半页

ctrl+d (down)向下翻半页

zz (小写)让光标所在行居于屏幕中央

zt (小写)让光标所在行居于屏幕最顶部

zb (小写)让光标所在行居于屏幕底部

编辑模式下

:n 指定移动到第n行

14 数字前缀与重复

命令模式下

将数字加在命令前,标示该命令处理几次,如5dd标示执行5次dd(删除光标所在整行)操作。

. (英文句号)为命令重复命令,按下一次执行一次上一次执行过的命令。

15 浏览目录

编辑模式下

:e 目录 列出指定目录下的文件和目录

16 vim技巧

技巧1 导入文件或shell命令执行结果

编辑模式下

:r 文件名1 将文件1内容引入到本文件中

:!shell命令 在vim中执行shell命令,执行完后按回车会到vim界面

:r !shell命令 (r与!之间有空格)将shell命令执行的结果导入到本文件中

技巧2 自定义快捷键操作

编辑模式下

:map ^x 命令 (map与^之间、x与命令之间有空格,此处到^并非键盘上的^,而是按下ctrl+v出现到快捷键,表示ctrl键,后面到x为任意字母)按下ctrl+x后会执行对应到命令

例:

:map ^p I#<ESC> 当按下ctrl+p快捷组合键时,在光标所在行行首添加一个#号,并回到命令模式

技巧3 连续行注释

编辑模式下

:n1,n2/^/#/g (#号为注释符号,在shell中注释符号为#,C++中为//)

:n1,n2/^/\/\//g C++源文件多行连续注释

技巧4 替换

:ab string1 string2 在vim中输入string1按空格或回车后,string1会自动替换为string2

:unab string1 取消string1的替换

vim配置文件

~/.vimrc

可将编辑模式下的命令写在里面,每个命令单独一行,这样每次启动时,会自动执行里面的命令


详解:

vim的三种模式

编辑模式(命令模式)——键盘操作通常解析为编辑命令;

输入模式——键盘输入模式;

末行模式——Vim内置的命令接口,执行Vim内置命令

vim配置文件: /etc/vimrc

模式转换:

输入模式——>编辑模式:

按“ESC”键,转入编辑模式

输入模式——> 末行模式:

输入“:”,转入末行模式

末行模式——>编辑模式:

按两次“ESC”键 ,转入输入模式

编辑模式——> 输入模式:

i:在当前的光标所在的字符的前面,转入输入模式

I:在当前的光标所在的行首,转入输入模式

a:在当前的光标所在的字符的后面,转入输入模式

A:在当前光标所在的行尾,转入输入模式

o:在当前的光标所在的行的下面,新建一行,转入输入模式

O:在当前的光标所在的字符的上面,新建一行,转入输入模式

退出模式:

:q 退出

:wq 保存退出

:q! 不保存退出

编辑模式ZZ 保存退出

末行模式

在编辑模式下,输入: 即可

:10d 删除第10行

:10,20d 删除第10到20行

:! ls /etc 与命令相结合

Vim打开文件

# vim /path/to/somefile 若文件存在,则打开 ;若不存在,则创建并打开

# vim +n FILE 打开FILE文件且光标选择FILE文件的第n行

# vim + FILE 打开FILE文件且光标选择FILE文件的最后一行

# vim + /PATTERN FILE 打开FILE文件,定位至第一次被PATTERN匹配到的行的行首

1、多个文件同时打开

# vim /etc/passwd /etc/rc.d/rc.sysinit /etc/issue

:next 跳转到下一个文本

:prev 跳转到前一个文本

:first 跳转到第一个文本

:last 跳转到最后一个文本

:qalll 退出所有文本,不保存

:wall 保存所有文本并退出

2、分割窗口打开多个文件

# vim -o /etc/passwd /etc/issue

:o 水平分割窗口

:O 垂直分割窗口

Ctrl+w 切换窗口 ;左右箭头,上下箭头 进行光标转移

Vim移动光标

1、逐字符移动光标

h键 向前移动光标;l键 向后移动光标 ;j键 向下移动光标 ;k键 向上移动光标

2、逐单词移动光标

w键 移动光标至下一个单词的词首;e键 移动光标至下一个单词的词尾 ;b键 移动光标至前一个单词的词首

Nw | Ne |Nb 代表了向前,向后移动了n个单词

3、光标行首,行尾跳转

0(数字0)光标移动到行首 ; ^ 光标移动到行中的第一个非空白字符 ; $ 光标移动到行的行尾

4、光标逐行跳转

G 光标跳转至最后一行 ; NG 光标跳转到第N行 ;在末行模式下,直接给出行号即可 如 :10 。

5、光标逐句跳转

) 光标跳转至下一句 ;

( 光标跳转至上一句 ;

Num 与句跳转快捷键一同使用,向指定方向跳转句的个数 ,如10( ,代表向前跳转10句

6、光标逐段跳转

} 光标跳转至下一段 ;

{ 光标跳转至上一段 ;

Num 与段跳转快捷键一同使用,向指定方向跳转段的个数 ,如10{ ,代表向前跳转10段

Vim编辑操作

1、删除单个字符命令x

x 删除光标所在处的单个字符 ;

Nx 删除光标所在处及向后的共N个字符

2、删除行命令d

d命令与跳转命令结合使用;如d0 ,d$ , d{ , d( ,dw , dh ;

dd删除光标所在行

3、末行模式下的范围定界

:n,md 删除第n行到m行 ;

:. 表示当前行 ;

:$ 表示最后一行 如 :.,$-2d 代表删除当前行到倒数第二行的内容

:/prt1/,/prt2/ 被第一次prt1匹配的行至被第二次prt2匹配的行就结束

:+N 向下的N行

:% 表示全文

4、替换命令r

r 替换光标所在处的字符

5、改变命令c ,与d命令相似

c 表示删除内容并进入输入模式进行内容替换

c 与跳转命令结合使用,如 c0 ,c$ , c{ , c} , cw , ch

cc 删除光标所在行,并进入输入模式

Ncc 删除光标之后的N行,进入输入模式

6、复制命令y

y命令与跳转命令结合使用;如y0 ,y$ , y{ , y( , yw , yh ;

yy 复制当前行

Nyy 复制光标之后的N行

7、粘贴命令p

p 如果删除的或复制的内容为整行内容,则粘贴纸光标所在行的下方 ,如果删除或复制的内容为为非整行内容,则粘贴至光标所在行的后面

P 如果删除的或复制的内容为整行内容,则粘贴纸光标所在行的上方 ,如果删除或复制的内容为为非整行内容,则粘贴至光标所在行的前面

8、撤销命令u

u 撤销之前的命令操作

#u 撤销#次操作

Ctrl +r 撤销掉错误的撤销操作

Vim翻屏操作及查找替换

Ctrl + f 向文件尾部翻一屏 ; Ctrl + b 向文件首部翻一屏

Ctrl + d 向下翻半屏 ; Ctrl + u 向上翻半屏

Enter 向后翻一行 ; k 向上翻一行

/PATTERN 向下查找匹配PATTERN的字符

?PATTERN 向上查找匹配PATTERN的字符

查找替换:

在末行模式下使用s命令

格式为 :ADD1,ADD2 s@PATTERN(正则表达式)@string@gi ,其中g 代表golal ,i表示不区分大小写

例:1,+9s@[[:space:]]\{1,\}#@@g 从第一行到第10行中,查找以至少一个空白字符,且紧跟# ,替换为空

例:1,28s@^[^#].*@#&@g 从第一行至第28行中,替换以非# 开头的行,前面加#

例:1,28s@\(l\(..e\)\)\(.*\1\)@L\2\3@g 替换前后相同的l为L

将当前文件中的部分内容另存为另外一个文件,w

末行模式下 :ADDR1,ADDR2w /PATH/to/somwhere

将另外一个文件的内容填充在当前文件中

末行模式下 :r /PATH/To/Somewhere

根shell 交互

末行模式下 :!COMMAND

Vim窗口属性定义

1、显示或取消行号

:set nu 显示行号

:set nonu 取消行号显示

2、设定vim编辑器显示忽略或区分字符大小写

:set ic 忽略大小写

:set noic 不忽略大小写

3、设定自动缩进

:set ai 或 :set autoindent 设置自动缩进

:set noai 取消自动缩进

4、高亮显示搜索结果

:set hlseartch 高亮显示

:set nohlsearch 取消高亮显示

5、语法高亮

:syntax on 语法高亮显示

:syntax off 关闭语法高亮显示

6、显示与之匹配的括号

:set sm 显示与之匹配的括号

:set nosm 取消显示与之匹配的括号

相关推荐

七条简单命令让您玩转Git
七条简单命令让您玩转Git

凭借着出色的协作能力、快速部署效果与代码构建辅助作用,Git已经得到越来越多企业用户的青睐。除了用于开发商业及消费级应用之外,众多科学及政府机构也开始尝试使用这...

2023-10-07 12:14 guanshanw

基本完整的关于Git分支branch的操作
基本完整的关于Git分支branch的操作

Git使用背景项目中要用到dev或者其他分支开发完代码,需要将该分支合并到master的需求操作步骤下面以dev名称为lex为分支名为例来操作一遍客户端操作:...

2023-10-07 12:14 guanshanw

Git 进阶(合并与变基)
Git 进阶(合并与变基)

在Git中整合来自不同分支的修改主要有两种方法:合并(merge)以及变基(rebase)合并(merge)merge流程图merge的原理是找到这两个分...

2023-10-07 12:13 guanshanw

Git学习笔记 003 Git进阶功能 part5 合并(第一部分)

合并(merge)是很常用的操作。尤其是一个庞大的很多人参与开发的企业级应用。一般会设定一个主分支,和多个副分支。在副分支开发完成后,合并到主分支中。始终保持主分支是一个完整的,稳定的最新状态的分支。...

非标题党,三张图帮你理解git merge和git rebase的区别
非标题党,三张图帮你理解git merge和git rebase的区别

初始场景:基于正常的开发分支修改几个小bug,然后在合并到开发分支上。gitmergegitcheckoutfeaturegitmergeho...

2023-10-07 12:13 guanshanw

git 初次使用(01)
git 初次使用(01)

先从github上克隆代码下来:使用vscode克隆代码如下图,填写上github仓库地址:vscode有时候克隆代码速度比较慢,可以用命令行方式克隆gitc...

2023-10-07 12:12 guanshanw

Git 远程操作

4.Git远程操作命令说明gitremote远程版本库操作gitfetch从远程获取版本库gitpull下载远程代码并合并gitpush上传远程代码并合并4.1远程版本库操作gitre...

Git常用命令-总结
Git常用命令-总结

创建git用户$gitconfig--globaluser.name"YourName"$gitconfig--globaluser.em...

2023-10-07 12:12 guanshanw

git中删除从别人clone下来项目的git信息,并修改为自己的分支

如果你从别人的Git存储库中克隆了一个项目,并想要删除与该存储库相关的Git信息,并将其修改为你自己的分支,则可以执行以下步骤:使用gitclone命令克隆存储库:gitclone<u...

git系列-回滚和放弃本地修改

回滚历史提交就是reset的功能。这种情况是已经提交远程仓库,需要回滚到之前的提交。gitreset--hardcommitId//注:强制提交后,当前版本后面的提交版本将会删掉!gi...

GIT使用小技巧大全
GIT使用小技巧大全

在大型软件工程的开发过程中,版本控制是无法绕过去的;目前来说,最火的版本控制软件就是GIT了。早两年SVN比较火,不过被大神linus喷了几次后,就日落西山了,...

2023-10-07 12:11 guanshanw

git相关命令-上
git相关命令-上

这些命令都是看了文档后,个人觉得比较有用的一些,展示给大家。回到远程仓库的状态抛弃本地所有的修改,回到远程仓库的状态。gitfetch--all&...

2023-10-07 12:10 guanshanw

Git命令行接口:掌握Git的必备技能
Git命令行接口:掌握Git的必备技能

Git是一款强大的分布式版本控制工具,它支持命令行界面操作。熟练掌握Git命令行接口,是开发者使用Git的必备技能之一。在这篇文章中,我们将介绍Git命令行接口...

2023-10-07 12:10 guanshanw

Git命令详解
Git命令详解

相信各位小伙伴们应该都对git有一些了解,毕竟作为代码管理的神器,就算不是IT行业的小伙伴肯定也或多或少的听说过一些。今天就来和小伙伴们分享一下自己总结的常用命...

2023-10-07 12:10 guanshanw

工作7年收集到的git命令
工作7年收集到的git命令

概念git中的术语解释:仓库也叫版本库(repository)stage:暂存区,add后会存到暂存区,commit后提交到版本库git安装linux...

2023-10-07 12:10 guanshanw

取消回复欢迎 发表评论: