在Linux中,vi或vim是非常强大的文本编辑器,它们支持多种模式,包括普通模式(CommandMode)、插入模式(InsertMode)和底线命令模式(LastLineMode)。

打开/新建文件:
如果文件存在,则打开;如果不存在,则创建新文件并打开。
插入模式:
在普通模式下按下i键进入插入模式,这时进行文本输入。
从插入模式返回到普通模式:
按下Esc键,退出插入模式返回到普通模式。
移动光标(普通模式):
上下左右移动:k(上)、j(下)、h(左)、l(右)
移动到行首:0或^(到第一个非空白字符)
移动到行尾:$
跳转到特定行数::line_number
剪切、复制与粘贴(普通模式):
剪切一行:dd(删除一行,实际上是剪切)
复制一行:yy(复制当前行)
粘贴:在普通模式下按p(将剪切板的内容粘贴到光标所在位置之后)
查找替换(普通模式下):
查找单词:/word,然后按n向下查找下一个匹配项,按N向上查找
替换::%s/old/new/g(全局替换当前文件中所有出现的"old"为"new")
保存并退出(普通模式下):
保存并退出::wq(writeandquit)
强制保存并退出(即使文件没有写权限)::wq!
不保存并退出::q!
打开命令行模式(普通模式下):
输入:进入底线命令模式,执行更多的命令,如列出文件中所有行号::setnu,回车后生效。
撤销/重做(普通模式):
撤销:u(undo)
重做:Ctrl+r(redo)

删除文本(普通模式):
删除光标处的一个字符:x
删除从光标开始到行尾的所有字符:D
删除光标前的一个词:dw
删除当前行:dd
复制文本(普通模式):
复制光标开始到指定字符的文本:ychar,例如yw表示复制一个词
复制多行:nyy,其中n是要复制的行数
粘贴文本(普通模式):
将剪贴板内容粘贴到光标下方:"*p或"+p(取决于你的系统配置)
替换字符(普通模式):
在当前位置替换一个字符:rchar,例如rX将当前字符替换为大写的'X'
可视化模式(普通模式下):
进入可视化模式:v(可视字符模式)或V(可视行模式)
在可视化模式下选中文本后,进行复制(y)、剪切(d)等操作
分屏操作(命令行模式):
水平分割窗口::split或:sp后跟文件名打开新文件,否则将在当前文件内分屏
垂直分割窗口::vsplit或:vsp同理
切换窗口:C-w方向键,例如C-wj切换到下方窗口
宏录制(普通模式):
开始录制宏:qa(a为宏的名字,替换为其他字母)
执行一系列操作
结束录制宏:q
回放宏:@a(播放宏a)
查找并替换整个文件(命令行模式):
:g/pattern/s//replacement/gc,这会在整个文件中查找pattern并将找到的部分替换为replacement,c表示每次替换询问确认。

跳转至特定符号(普通模式):
跳转到下一个函数或类定义:]m或[m(反向)
跳转到下一个括号匹配:%(在成对的括号间跳转)
缩进操作(普通模式):
增加缩进:(当前行)或}(从当前行到段落结束)
减少缩进:(当前行)或{(从当前行到段落开始)
进入列块选择模式:C-v或Shift+v(在可视模式下进行列选择)
选择列块后进行各种操作,如I插入文本到列块每行开头,A添加文本到列块每行结尾,d删除列块等
书签功能(普通模式):
设置书签:m字母,例如mA设置书签A
跳转到书签:'a或``a`(反向跳转)
显示行号(命令行模式):
显示行号::setnumber或:setnu
隐藏行号::setnonumber或:setnonu
快速定位(命令行模式):
快速跳转到文件中的特定百分比位置::percentage,例如:50%跳转到文件中间
撤销历史记录浏览(普通模式):
浏览撤销历史:g;和g,分别向前和向后浏览撤销点并恢复相应状态
文件替换(命令行模式):
在当前文件中替换另一个文件的内容::rfilename,将filename的内容插入到当前光标位置
语法高亮(命令行模式):
启用语法高亮::syntaxon(大多数情况下vim启动时会自动开启)
查看帮助文档(命令行模式):
在vim内部查看帮助文档::helpcommand,例如:helpmotion查看关于移动命令的帮助
