Linux学习-vi编辑器

##################################################

vi编辑器简介

这是文本的编辑器,后面多次用到了这个命令,导致我不会,验证影响了我的进度
vi是Linux中最经典的文本编辑器,为什么使用这个,就是速度快,
vi的核心设计思想,让程序员的手指始终保持在键盘的核心区域,就能完成所有编辑操作
vi只能编辑不能排版,没有图像界面
vi不支持鼠标操作,没有菜单,只有命令,
vim是从vi发展出来的,有代码补全,等功能,被称为编辑器之神,
程序员都是首选vim,在Linux中直接把vi做成了vim的软连接,你使用vi命令就是使用的vim

###################################################

vim编辑:

vim是LINUX系统必备啊
安装:sudo apt-get install vim
配置:sudo vim /etc/vim/vimrc,在这个里面进行配置,更加详细的配置上网查

##############################################

vi打开新建文件:

vi 文件名 ,文件存在就是打开,不存在就是新建,vi hello.py
vi 文件名 +行数,打开文件并且定位行,
异常处理,如果vi异常退出,在磁盘上可能会有保持的交换文件,下次在使用vi时,会看到发现交换文件,按d可以删除交换文件,注意输入的时候关闭输入法,
在vim格式未保存时退出,或者两台机器同时操作一个文件时都会出现这个问题(保存在一个swap文件) 
看看当前的文件内容是不是原先的内容,如果觉得和你想要的差不多不需要恢复,那就直接执行rm指令删除那个swap文件
执行这个操作不会对你现在的文件产生影响。如果内容变化较大,你想要恢复,那就按 :q

##########################################

工作模式

有三种工作模式,这个很重要,

1,命令模式,打开和esc,
命令模式,使用vi命令打开一个文件,就是命令模式, 命令模式下,可以进行常规的操作,比如定位,翻页,复制,粘贴,删除, 在其他的图形编辑器下都是鼠标操作的,但是vi是通过命令的,
2,末行模式,冒号:
末行模式,执行保存,退出等操作, w就是write,写入的意思,保存, q就是退出,quit的意思,退出, 末行模式是出口,命令模式就是入口, 怎么进入出口,就是输入冒号:,进入末行模式, 从末行模式到命令模式,按一下esc就进入命令模式
3,编辑模式,i,
编辑模式,正常的编辑文字, 输入字母i,insert,就进入了编辑模式,不能使用鼠标,其他基本一样, 按esc返回命令模式,在命令模式可以快速定位,在编辑模式只能上下键定位代码, 编辑模式到命令模式,命令模式到末行模式,编辑模式不能直接到末行模式, 现在基本可以操作了
工作模式练习: 文件改完之后用命令q和wq和!w都不能退出来!上网一查才发现原来vi命令在直接用vi
+enter进入文件的时候这些命令退出不了, 解决方法:直接用ctrl+z退出就行了 .test.py.swp .test.py.swo,这种文件都是不正常退出文件导致的交换文件,这些可以使用rm直接删除, 末行模式的命令 :w 保持 :q 退出 :wq 保持退出 :q! 强行退出,不保存退出,这也是比较常用的,比如修改错了, :x 这也是保持退出

###########################################

常用命令:

vi非常强大,命令非常多,不要期望一下子都记住,
要按照使用频率学习,使用vi命令的时候,
命令线路图 重复次数,输入一个数字,跟上一个命令,就可以重复执行指定次数, 1,移动和选择(多练),这个比较多, 2,编辑操作,删除,复制,粘贴,替换, 3,撤销和重复 4,查找和替换 5,编辑 注意关闭中文输入法,因为输入vi命令的时候是没有显示的,

#############################################

进入vi的命令 
vi filename :打开或新建文件,并将光标置于第一行首 vi
+n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑

##########################################

移动命令

上下左右的移动,
h向左,j向下,k向上,l向右
行内移动,
w 向前移动单词,b先后移动一个单词,
0数字零立刻到行首,$dollor符号立刻到行尾,
^到行首,第一个不是空白字符的位置,
行数移动:
gg 文件顶部,G文件末尾,这个命令非常的重要,
数字gg,移动到指定行数,数字G移动到指定行数,
:数字,移动到对应行数,一般都是还是用go,

屏幕移动,
ctrl
+b,向上翻页,ctrl+f,向下翻页,
H屏幕顶部,M屏幕中间,L屏幕底部,注意只需要一个大写字母,
段落移动, {这是往上寻找段落,}这是往下寻找段落,这是比较常用的切换方式 括号切换,小括号,方括号,花括号,都是程序员常用的,可以使用百分号
%切换括号
如果有代码需要随后处理,需要参考别的代码,把编号移走,到时候怎么回来呢?
可以使用标记,可以使用m 输入一个字母,然后移动光标,怎么胡来输入单引号,然后输入直接的标记的字母 ‘k,不用管标记如何删除,相同的会覆盖,删除行标记也会删除,不用管,
选中命令,
要复制要先选中,可以使用v,切换到可视模式,V 切换到可视行模式,ctrl
+v,可视块模式,可以竖着选,很厉害, 可视模式下,可以使用移动命令,快速选中文本,

#############################################

撤销命令
u,在命令模式,输入u,撤销上次的命令,可以不停的回撤,到最初的命令,undo,
ctrl+r,在命令模式,就是恢复撤销的命令,
这两个非常的重要,保命的命令, 

删除命令 x 删除光标所在的字符,或者选中的字符,
5+x,这就是删除5个字符, d 需要和移动命令结合在一起用,删除选中的文本, dd 可以把光标所在的行删除 D,可以删除至行尾, 删除命令可以结合移动命令使用,所以移动命令很重要,
复制和粘贴的命令 y 复制,copy的英文,yy 复制一行,可以myy复制多行 p粘贴 paste,,
5+p,就是粘贴的内容复制5次, 注意1:删除命令,本质就是剪切, 可以再复制回来,比如dd,删除一行,p,就复制回来了, 注意2:如果在其他软件复制的内容,你在命令模式p粘贴是不行的,要i,进入编辑模式,点击右键粘贴就对了,按esc就可以返回命令格式了,
替换命令 如果修改一个单词,就可以使用替换命令,比较快,否则就是i进入编辑模式,然后修改,然后esc,才可以, r,替换当前字符,输入r,然后输入H,这样就会把当前字符替换成大H了, 如果是使用编辑模式呢,要输入i,然后删除,然后大写输入,然后esc退出编辑模式, R,替换当前行光标后的所有内容,
缩排和重复执行命令 缩排就是缩进,空格越少级别越高,
>> 这是向右缩进 << 这是向左移动代码 . 重复上次的操作,

###############################################

查找
/str  查找str
n查找下一个
N查找上一个
* 单词快速匹配,这是向上寻找,
# 单词快速匹配,这是向下寻找,

####################################################

查找和替换:

:%s///g,这就是替换的格式,

全局替换 :
%s/旧文本/新文本/g,,这是全局替换,:%s/hello/world/g
可视区域替换 可视区域范围内的替换,这样可以控制开发的风险, 先选中,然后:s
/旧文本/新文本/g,只是没有百分号,这就是可视区域替换
确认替换, 这是推荐使用的方式, :
%s///gc,confirm确认的意思, (y/n/a/q/l/^E/^Y)?yes,no,all替换所有,q退出,只需要记住前四个 而且这个是每一个替换都要确认,

###############################################

进入编辑命令的方式:

I,大写的i,可以在行首插入,
A,这个是在行尾进入编辑模式,这个用的多,

i,当前字符前面添加文本,
a,当前字符后添加文本,这个用的少,

o小写,在光标上方插入一个空行,O, O大写,在光标下方插入一个空行, 编辑和数字是可以连起来用的,
1,输入10,表示重复10次 2,输入i进入编辑模式 3,输入*,也就是重复的文字, 4,按下esc,返回命令模式,返回之后,vi就会把2,3两步重复10次, 所以在编辑之前不要随便输入数字,会重复的,
利用可视块,对多行代码添加注释,
1,移动到需要增加注释的第一行代码,按^来到行首 2,ctrl+v,进入可视块模式 3,输入大I进入编辑模式,并在行首插入, 4,输入#,也就是注释 5,按下esc回到命令模式,返回之后会在选中的每一行添加#号了,

######################################

分屏命令:

末行命令拓展,
e.,在末行模式,输入e,会打开内置的文件浏览器,浏览当前目录下的文件,edit
找到文件,然后回车,就到了另一个文件了,注意,这个时候一定文件要保存,
在末行模式,e 文件名,直接到了另一个文件,不知道文件名,就是e. 点,
这样可以不用退出vi,就可以继续编辑另一个文件了,
:n 文件名,这是新建一个文件,
:w 文件名 ,这是把当前编辑的文件全部写入一个文件,当前编辑的文件不会切换,
w,为什么要这么设计?可以阶段性的备份代码,
分屏命令练习
sp 文件名,横向增加分屏
:vsp 文件名,纵向分屏
ctrl+w,这是快捷键
r,互换窗口
c 关闭窗口,

############################################

###########################################

原文地址:https://www.cnblogs.com/andy0816/p/12486045.html