Linux vim编辑器
参考文章 Vim 练级攻略
快捷操作#
- 打开文件
vim fileName - 打开多个文件
vim file1 file2 ... - 打开新的文件
:open fileName - 在新的窗口代开新的文件
split:fileName - 上下切换文件(循环)
:bp:bn - 上下切换文件
:n :N - 查看当前的文件列表
:args :files :ls - 打开远程文件
:e ftp://192.168.10.76/sun.txt
插入命令#
i在当前位置插入I在行首插入a在当前位置后插入A在当前行尾插入o在当前行下一行插入一行O在当前行上一行插入一行
查找和替换#
/text查找text,按n查找下一个,按N查找上一个?text反向查找text,按n查找上一个,按N查找下一个- 查找特殊字符
.*[]%/?~$的时候需要转意 :set ignorecase设置之后查找的时候忽略大小写set noignorecase设置之后查找区分大小写- 光标在打次上面的时候按
#或者*进行查找,#相当与/ *相当与? :set hlsearch高亮显示所有查找到的结果:set nohlsearch高亮显示所有查找到的结果:nohlsearch关闭当前的高亮显示,如果再次搜索或者按下n或N键,则会再次高亮。:set incsearch逐步搜索模式,对当前键入的字符进行搜索而不必等待键入完成。:set wrapscan重新搜索,在搜索到文件头或尾时,返回继续搜索,默认开启。:start,ends/word/replace/g替换从开始行到结束行匹配到的内容,不询问。:start,ends/word/replace/gc替换从开始行到结束行的内容,询问。:1,$s/word/replace/g替换从第一行到最后一行匹配到的内容。
删除、复制以及粘贴#
x向后删除一个字符.X向前删除一个字符。dd删除行,并把删除的保存在剪切板里.dte删除光标到e之前的字符。p粘贴剪切板的内容到下一行.P粘贴剪切板的内容到当前行.cw替换从光标所在位置后到一个单词结尾的字符.yy拷贝当前行.yw复制当前单词。ye复制当前光标到词尾的字符。y[0/$]复制从光标到结尾/开头。u撤销改动.CTRL+r反撤销.J把下一行和当前行拼接组成一行
光标移动#
hjkl左下上右.w/e: 移动到下一个单词的开头/结尾。0数字零,到行头.^到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等).$到本行行尾.g_到本行最后一个不是blank字符的位置.[f/F]a本行的下一个/上一个a字符处。3[f/F]a光标后/前第三个a字符处。[t/T]a本行的下一个或上一个a前或后。gg移动到文件头nG移动到文件的第n行G移动到文件尾H移动到当前屏幕内第一行的第一个字符M移动到当前屏幕中间行的第一个字符L移动到当前屏幕最后一行的第一个字符+移动到下一行第一个字符。-移动到上一行的第一个字符。ctrl + f\b\d\u(上\下)(一屏半屏)n + Space向后移动n个字符(或)移动到下\上一个空行处%: 在匹配的括号之间来回移动。*/#: 当光标在单词上时,移动到下一个/上一个对应的单词。
区块选择#
v选择指定的字符vi": 选择被"包括的字符,不包含"。v2i): 选择第二层)之间的字符。va": 选择被"包括的字符,包含"- 注:
"可以替换成w单词,W空格分割的单词,"')}]
V选择指定的行CTRL + v区块选择y复制选择的内容d删除选择的内容,并把删除的内容复制到剪切板-
p粘贴行前插入空格 :
CTRL+V进入多行编辑模式jk移动选中要编辑的行$跳到行位,选中所有行内容I在行首插入空格ESC完成
行后插入:
ctrl+vjk$AESC
设置#
- 显示行号
set nu - 不显示行号
set nonujj
split 切割窗口#
:sp再打开一份当前文件:split fileName在当前窗口打开指定文件ctrl + w + w在打开的文件之间切换ctrl + w+hjkl在文件中左右切换:close关闭光标所在文件:only关闭其他窗口nsplit fileName指定打开窗口大小 nnCTRL+w + +放大窗口,n可以不指定nCTRL+w + -缩小窗口,n可以不指定ctrl + w+——上下最大化窗口ctrl + w+|左右最大化窗口vsplit fileName垂直分割CTRL + W + h\j\k\l在窗口之间跳转CTRL + W + H\J\K\L把窗口移动到最左\上\下\右:qall关闭所有:wall保存所有
编辑提示#
ctrl+n/ctrl+p提示输入单词,多次按下上下切换。ctrl+x+ctrl+n根据当前文档内容进行提示。ctrl+x+ctrl+f根据当前目录下的文件名进行提示。ctrl+x+ctrl+o根据语法进行提示,注意文件扩展名。ctrl+x+ctrl+l行自动补齐,当前行的前两个单词和已经存在行的前两个单词相同,则自动补全行。
文件浏览#
-
:E [path]: 打开文件目录,path 为可选项。-上级目录R重命名文件D删除文件s排序文件:bn下一个文件:bp上一个文件:bf第一个文件:bl最后一个文件:ls查看已经打开的文件列表,每个文件有一个编号-非活动的缓冲区a当前激活的缓冲区h隐藏的缓冲区%当前缓冲区#交换缓冲区=只读缓冲区+已经修改的缓冲区
:buffer n切换到:ls显示的对应文件buffer path切换到对应文件,支持自动补全:set scb同步滚动分屏里的文件:set scb!取消同步滚动:He在下方分屏浏览文件:He!在下方分屏浏览文件:Ve在左边分屏浏览文件:Ve!在右边分屏浏览文件vim -p file1 file2 ...用tab页的方式打开问价bufdo tab split把buffer中的文件用tab页打开TeTab页浏览目录gt下一个tabgT上一个tabigt第i个tab:tabs查看tab页下面打开的文件:tabclose关闭当前tab页:tabclose i关闭第i个tab页
:mksession ~/.mysession.vim保存会话到文件vim -S ~/.mysession.vim打开会话文件qa退出全部文件wqa保存并退出全部文件
单词大小写替换#
-
gu转换为小写。guw转换当前光标到词尾。gu3w转换当前光标开始的三个单词。gu$转换当前光标到行尾。gu0转换当前光标到行首。guG转换当前光标到文章尾部。
-
gU转换为大写。
录制宏#
qa: 开始录制名字为a的宏。q: 结束宏录制。@@: 执行最近录制的宏。-
@a: 执行录制的宏a。 -
100@a: 执行录制的宏a100 遍。生成数字1到100: 在只有一个数字1的文本总执行下面命令:
qa Yp ctrl+a q 99@a
可视化选择#
ctrl+v: 选中之后可以输入下面的指令。J:连接选择的行。- ``:左右缩进。
=:自动缩进。