Vim编辑器常用命令总结
Vim是一款高度可定制的文本编辑器,它允许用户通过在终端输入命令来操作文本,Vim的命令丰富多样,掌握这些命令可以让你更加高效地使用Vim,本文将介绍一些Vim中常用的命令。
1. 基本概念
Vim有三种模式:普通模式、插入模式和命令行模式,普通模式下,你可以输入文本;插入模式下,你可以选择文本并插入到光标位置;命令行模式下,你可以输入各种命令。
1.1 进入和退出插入模式
i
:进入插入模式,从光标位置开始输入文本。
I
:退出插入模式,回到普通模式。
a
:进入插入模式,从当前光标位置到行尾开始输入文本。
A
:退出插入模式,回到普通模式。
1.2 进入和退出命令行模式
:
:进入命令行模式。
:q
或ZZ
:退出Vim并返回到系统。
:wq
或:x
:保存修改并退出Vim。
:q!
或ZZ
:强制退出Vim,不保存修改。
2. 文件操作
2.1 打开文件
:e filename
:打开名为filename的文件,如果文件不存在,将创建一个新文件。
:e $filename
:打开名为$filename的文件,这个命令通常用于批处理文件。
:edit filename
:使用默认程序打开名为filename的文件,这个命令通常用于运行外部程序。
2.2 保存文件
:w
:保存当前文件,但不退出Vim,如果文件已修改,会弹出确认对话框。
:w!
:强制保存当前文件,不退出Vim,如果文件已修改,会弹出确认对话框。
:x
:保存当前文件,并退出Vim,如果文件已修改,会弹出确认对话框。
2.3 关闭文件
:q
或ZZ
:退出Vim并返回到系统,如果有未保存的修改,会提示是否保存。
:q!
或ZZ
:强制退出Vim,不保存修改,如果有未保存的修改,会被直接丢弃。
3. 搜索和替换
3.1 /搜索字符串(N次)
/pattern
:在文件中搜索pattern,并将光标移动到第一个匹配项,按n键可以跳转到下一个匹配项,按N键可以跳转到上一个匹配项。
nG/pattern
:在整个文件中搜索pattern,并将光标移动到最后一个匹配项,按nG可以跳转到第一个匹配项,按Ng可以跳转到最后一个匹配项。
%s/pattern/replacement/g
:在整个文件中搜索pattern,并将光标移动到第一个匹配项,用replacement替换匹配项,并跳到下一个匹配项,按%可以重复上一次的操作。
:s/old/new/g
:在整个文件中搜索old,并用new替换所有匹配项,按:可以重复上一次的操作。
3.2 搜索行号(N次)
:line N
:跳转到第N行,如果N为正数,则向下跳转;如果N为负数,则向上跳转,按:可以重复上一次的操作。
:$N,$
:跳转到第N行和第N+1行之间,按:可以重复上一次的操作。
:set number
:显示行号,按:可以重复上一次的操作,要关闭行号显示,请执行命令:set nonumber
。
4. 高级功能
4.1 寄存器和命令扩展
Vim支持寄存器来存储值和命令,以下是一些常用的寄存器:
'a
:光标所在行的字符数(包括空格),可以使用此寄存器来移动光标或计算距离等,要移动到当前行的开头,可以使用命令'a|0"
(注意要加上反斜杠),要删除当前行的开头的一个字符,可以使用命令'a|1d
(注意要加上反斜杠),要删除当前行的最后一个字符,可以使用命令'a|0delete
(注意要加上反斜杠),要删除当前行的第n个字符,可以使用命令'a|ndelete' n是字符的索引(从0开始),要删除光标所在的字符,可以使用命令
'a|deletechar' 'a|deletechar'表示删除当前行的第一个非空白字符),要删除光标所在行的前n个字符,可以使用命令'0,' '0,'表示删除从第0个字符到第n个字符之间的所有字符),要删除光标所在行的后n个字符,可以使用命令
'.,' '.,'表示删除从第n个字符到最后一个字符之间的所有字符),要删除光标所在的一个单词(由空格分隔),可以使用命令'\<,>w' \<,\>w表示选择以光标为中心的一个单词),要复制当前选中的文本(不包括光标所在的部分),可以使用命令
y|p(y表示复制),要将选中的文本粘贴到光标所在的位置,可以使用命令
p|y(p表示粘贴),要在当前行的开头插入一个单词(由空格分隔),可以使用命令
I\<,\>w I\<,\>w表示在当前行的开头插入一个单词),要在当前行的末尾插入一个单词(由空格分隔),可以使用命令A\<,\>w A\<,>w表示在当前行的末尾插入一个单词),要在当前行的第n个位置插入一个单词(由空格分隔),可以使用命令"I|" "I|"表示在当前行的第n个位置插入一个单词),要在当前行的开头或末尾添加n个空格或其他指定的字符,可以使用命令"ggvG" "ggvG"表示在当前行的开头或末尾添加n个空格或其他指定的字符),要反转当前行的内容(包括单词的顺序),可以使用命令":g/^/s//gn" "^"表示每一行的开头,":g/^/s//gn"表示对每一行进行反向查找、替换和移动光标操作),要交换两行的内容(包括单词的顺序),可以使用命令":S/swapfile/swapname" "swapfile"和"swapname"分别是两个文件的名称,":S/swapfile/swapname"表示将这两个文件的内容交换位置并写入磁盘),要交换两列的内容(包括单词的顺序),可以使用命令":%s/\(.*\)\(\=/^\1 \= \2/gc" "\(.*)(\=)"表示查找所有包含等号的列名,"^\1 \= \2"表示将这些列名交换位置并去掉等号和空格),":%s/(.*\)\(\=/^\1 \= \2/gc"表示查找所有包含等号的列名并将其转换为列号的形式("80 = a", "80 = b", "80 = c", "90 = d", "90 = e", "90 = f", "90 = g", "90 = h", "90 = i", "90 = j", "90 = k", "90 = l", "90 = m", "90 = n", "90 = o", "90 = p", "90 = q", "90 = r", "90 = s", "90 = t", "90 = u", "90 = v", "90 = w", "90 = x", "90 = y", "90 = z"),":%s/\(.*\)\(=/^\1 \= \2/gc"表示查找所有包含等号的列名并将其转换为列号的形式("80 = a", "80 = b", "80 = c", "90 = d", "90 = e", "90 = f", "90 = g", "90 = h", "90 = i", "90 = j", "90 = k", "90 = l", "90 = m", "90 = n", "90 = o", "90 = p", "90 = q", "90 = r", "90 = s", "90 = t", "90 = u", "90 = v", "90 = w", "90 = x", "90 = y", "90 = z"),":%s/\(.*)\(\=/^\1 \= \2/gc"表示查找所有包含等号的列名并将其转换为列号的形式("80,55"表示在第80列和第55列之间),":%s/\(.*)\(\=/^\1 \= \2/gc"表示查找所有包含等号的列名并将其转换为列号的形式("80,55"表示在第80
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/151620.html