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
进入多行编辑模式j
k
移动选中要编辑的行$
跳到行位,选中所有行内容I
在行首插入空格ESC
完成
行后插入:
ctrl+v
jk
$
A
ESC
设置#
- 显示行号
set nu
- 不显示行号
set nonu
jj
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页打开Te
Tab页浏览目录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
: 执行录制的宏a
100 遍。生成数字1到100: 在只有一个数字1的文本总执行下面命令:
qa Yp ctrl+a q 99@a
可视化选择#
ctrl+v
: 选中之后可以输入下面的指令。J
:连接选择的行。- ``:左右缩进。
=
:自动缩进。