Vim可以分为三种模式,分别为:
命令行模式(Command mode)
插入模式(Insert mode)
底行模式(Lastline mode)
命令行模式
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
插入模式
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
底行模式
将文件保存或退出vim,也可以设置编辑环境,如寻找字符串、列出行号……等。
不过,一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。
5. Vim的基本操作
a) 进入Vim
在系统光标提示符后,输入vim及文件名后,回车,进入Vim编辑画面。
特别注意,进入vim之后,是处于「命令行模式(command mode)」,要切换到「插入模式(Insert mode)」才能够输入文字。
b) 切换至插入模式(Insert mode)编辑文件
在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。
c) 插入模式(Insert mode)切换到命令行模式(Command mode)
在插入模式下,按一下「ESC」键即可。
d) 退出vim及保存文件
在命令行模式(Command mode)下,按冒号「:」键,进入底行模式(Last Line mode)
常见底行模式下的命令行:
:w filename 文件以filename为文件名保存
:wq 文件存盘并退出vim
:q 文件不存盘并退出vim
:q! 文件不存盘强制退出vim
6. 命令行模式下的功能键(部分)
a) 从命令行模式切换为插入模式的三种方式
「 i 」:从当前光标位置进入插入模式
「 a 」:从当前光标位置的下一个字符进入插入模式
「 o 」:从当前光标位置的下一行进入插入模式
b) 从插入模式切换为命令行模式
按「ESC」键
c) 移动光标
vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
d) 行尾追加
不管光标在该行的什么位置,直接按大写字母「A」即可
e) 删除单词
dw:把光标停留在需要删除的单词前面,依次按下「d」「w」,即可
de:把光标停留在需要删除的单词前面(无视单词前面的空格),依次按下「d」「e」,即可
f) 从当前光标处删除到行末
把光标停留在需要删除的句子前面,依次按下「d」「$」,即可
g) 快速跳转到行首
按下数字「0」,即可
h) 使用计数以删除单词
示例:this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up.
依次将鼠标定位到ABC前,按「d」「2」「w」,可以删除:ABC DE
将鼠标定位到FGHI前,按「d」「4」「w」,可以删除:FGHI JK LMN OP
将鼠标定位到Q前,按「d」「3」「w」,可以删除:Q RS TUV
得到句子:
this line of words is cleaned up.
i) 删除当前行
鉴于删除当前行这一操作的高频性,vim设计者简化了快捷键,按「d」「d」即可。
连续删除两行,从当前行开始,则为:「2」「d」「d」
j) 撤销更改
a. 按小写字母「u」,撤销上一步的更改操作;
b. 按大写字母「U」,撤销整行的更改操作;
c. 「Ctrl+R」撤销上一步「撤销操作」。
k) 将刚删除的内容置入其他行
之前刚刚删除的内容,会放入Vim编辑器的寄存器中。基于如此原理,可以将之认为成Windows操作系统的「剪切」操作。
先在想删除的行,按「d」「d」,进行删除操作;
再在想插入那行的前一行按「p」键即可。
l) 替换
将光标放到需要改的字符前,先按「r」键,再输入想更改的字符即可。
m) 跳转
顶部跳转命令:先按「Control」+「g」键,在终端底部调出一栏,然后输入「g」「g」即可;
底部跳转命令:先按「Control」+「g」键,在终端底部调出一栏,然后输入大写字母「g」即可;
特定行跳转命令:直接输入行号,然后输入大写字母「g」即可。
n) 查找命令
字符串查找:
输入英文斜杠「/」,后面紧接需要搜索的字符串即可。
查找下一个相同字符串,就紧接着按小写字母「n」;
查找上一个相同字符串,就紧接着按大写字母「N」。
配对括号查找:
在编程语言里,配对括号「 ( 」「 ) 」「 { 」「 } 」很常见,当定位到一个配对括号的一半时(注意光标要定位在该括号之前),按「%」,即可自动跳转到与之匹配的第一个配对括号处。
o) 替换字符串
当前行替换命令
在标准命令行模式下,光标定位到当前行,按英文冒号「 :」,再输入s/oldstring/newstring/g 回车,即可。
完整语句为:
:s/dogg/dog/g
特定几行替换命令
在标准命令行模式下,按英文冒号「 :」,再输入#,#s/oldstring/newstring/g 回车,即可(其中#代表特定的首尾两行的行号)。
完整语句为:
***:*5,8s/dogg/dog/g
全文替换命令
在标准命令行模式下,按英文冒号「 :」,再输入%s/oldstring/newstring/g 回车,即可(其中#代表特定的首尾两行的行号)。
完整语句为:
*:*%s/dogg/dog/g
全文替换命令(每个匹配项替换前需确认)
在标准命令行模式下,按英文冒号「 :」,再输入%s/oldstring/newstring/gc 回车,即可(其中#代表特定的首尾两行的行号)。
完整语句为:
*:*%s/dogg/dog/gc
作者:饥人谷_李维超
链接:https://www.jianshu.com/p/8b679b35c9d5
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。Vim可以分为三种模式,分别为:
命令行模式(Command mode)
插入模式(Insert mode)
底行模式(Lastline mode)
命令行模式
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
插入模式
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
底行模式
将文件保存或退出vim,也可以设置编辑环境,如寻找字符串、列出行号……等。
不过,一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。
5. Vim的基本操作
a) 进入Vim
在系统光标提示符后,输入vim及文件名后,回车,进入Vim编辑画面。
特别注意,进入vim之后,是处于「命令行模式(command mode)」,要切换到「插入模式(Insert mode)」才能够输入文字。
b) 切换至插入模式(Insert mode)编辑文件
在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。
c) 插入模式(Insert mode)切换到命令行模式(Command mode)
在插入模式下,按一下「ESC」键即可。
d) 退出vim及保存文件
在命令行模式(Command mode)下,按冒号「:」键,进入底行模式(Last Line mode)
常见底行模式下的命令行:
:w filename 文件以filename为文件名保存
:wq 文件存盘并退出vim
:q 文件不存盘并退出vim
:q! 文件不存盘强制退出vim
6. 命令行模式下的功能键(部分)
a) 从命令行模式切换为插入模式的三种方式
「 i 」:从当前光标位置进入插入模式
「 a 」:从当前光标位置的下一个字符进入插入模式
「 o 」:从当前光标位置的下一行进入插入模式
b) 从插入模式切换为命令行模式
按「ESC」键
c) 移动光标
vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
d) 行尾追加
不管光标在该行的什么位置,直接按大写字母「A」即可
e) 删除单词
dw:把光标停留在需要删除的单词前面,依次按下「d」「w」,即可
de:把光标停留在需要删除的单词前面(无视单词前面的空格),依次按下「d」「e」,即可
f) 从当前光标处删除到行末
把光标停留在需要删除的句子前面,依次按下「d」「$」,即可
g) 快速跳转到行首
按下数字「0」,即可
h) 使用计数以删除单词
示例:this ABC DE line FGHI JK LMN OP of words is Q RS TUV cleaned up.
依次将鼠标定位到ABC前,按「d」「2」「w」,可以删除:ABC DE
将鼠标定位到FGHI前,按「d」「4」「w」,可以删除:FGHI JK LMN OP
将鼠标定位到Q前,按「d」「3」「w」,可以删除:Q RS TUV
得到句子:
this line of words is cleaned up.
i) 删除当前行
鉴于删除当前行这一操作的高频性,vim设计者简化了快捷键,按「d」「d」即可。
连续删除两行,从当前行开始,则为:「2」「d」「d」
j) 撤销更改
a. 按小写字母「u」,撤销上一步的更改操作;
b. 按大写字母「U」,撤销整行的更改操作;
c. 「Ctrl+R」撤销上一步「撤销操作」。
k) 将刚删除的内容置入其他行
之前刚刚删除的内容,会放入Vim编辑器的寄存器中。基于如此原理,可以将之认为成Windows操作系统的「剪切」操作。
先在想删除的行,按「d」「d」,进行删除操作;
再在想插入那行的前一行按「p」键即可。
l) 替换
将光标放到需要改的字符前,先按「r」键,再输入想更改的字符即可。
m) 跳转
顶部跳转命令:先按「Control」+「g」键,在终端底部调出一栏,然后输入「g」「g」即可;
底部跳转命令:先按「Control」+「g」键,在终端底部调出一栏,然后输入大写字母「g」即可;
特定行跳转命令:直接输入行号,然后输入大写字母「g」即可。
n) 查找命令
字符串查找:
输入英文斜杠「/」,后面紧接需要搜索的字符串即可。
查找下一个相同字符串,就紧接着按小写字母「n」;
查找上一个相同字符串,就紧接着按大写字母「N」。
配对括号查找:
在编程语言里,配对括号「 ( 」「 ) 」「 { 」「 } 」很常见,当定位到一个配对括号的一半时(注意光标要定位在该括号之前),按「%」,即可自动跳转到与之匹配的第一个配对括号处。
o) 替换字符串
当前行替换命令
在标准命令行模式下,光标定位到当前行,按英文冒号「 :」,再输入s/oldstring/newstring/g 回车,即可。
完整语句为:
:s/dogg/dog/g
特定几行替换命令
在标准命令行模式下,按英文冒号「 :」,再输入#,#s/oldstring/newstring/g 回车,即可(其中#代表特定的首尾两行的行号)。
完整语句为:
***:*5,8s/dogg/dog/g
全文替换命令
在标准命令行模式下,按英文冒号「 :」,再输入%s/oldstring/newstring/g 回车,即可(其中#代表特定的首尾两行的行号)。
完整语句为:
*:*%s/dogg/dog/g
全文替换命令(每个匹配项替换前需确认)
在标准命令行模式下,按英文冒号「 :」,再输入%s/oldstring/newstring/gc 回车,即可(其中#代表特定的首尾两行的行号)。
完整语句为:
*:*%s/dogg/dog/gc