Linux之vim总结
1.vim的模式
- 正常模式:可以使用快捷命令。
- 插入模式:可以进行文本编辑。
- 可视模式:正常模式下按v进入,移动光标可以选择内容;正常模式下按V进入可视行模式,这个模式是整行整行的选择;
- 替换模式:正常的模式下按R进入,可以替换内容。
2.vim的打开
- vim -r 文件名:恢复上一次异常退出的文件。
- vim -R 文件名:文件以只读的方式进行打开。(可以进行强制保存)
- vim -M 文件名:文件以只读的方式进行打开。(不可以进行强制保存,也就是没法进行任何修改)
- vim + 文件名:从文件的末尾开始。
- vim +数字 文件名:打开文件后光标在第几行。
- vim +/字符串 文件名:打开文件之后,会把找到的所有字符串进行标亮,光标会停留在第一个匹配到字符串的位置。
3.vim打开后文档的操作
- :e 文件名:关闭当前的文件打开新的文件,如果本文件没有进行保存,vim会报警提示。
- :e! 文件名:放弃对本文档的修改并打开新的文档。
- :e + 文件名:打开新的文件并从文件的末尾进行编辑。
- :e + 数字 文件名:打开新文件并在第N行进行编辑。
- :enew:打开一个新的未进行命名的文档。
- :e!:从新加载当前的文档并舍弃以进行修改的动作。
- :e#或者CTRL+^:回到刚才编辑的文档。
- :f或者CTRL+g:显示文档的名称,是否进行修改和光标的位置。
- :f 文件名:改变编辑的文件名,这个时候保存就是另存。
- :w:保存修改。
- :行数1,行数2w 文件名:保存本文件中行数1到行数2中的内容到新的文件中。
- :wq:保存并退出。
- :ZZ:保存并退出。
- :x:保存并退出。
- :q:退出当前窗口。(CTRL-w q)
- :saveas 新的文件名:另存为。
- :set nu:可以显示文本行号。
- set nonu:可以取消文本行号。
- :set (no)ai:可以开启智能换行或者取消。
- vimdiff:可以对比两个文件的差异性。
- :diffof:取消两个文件的差异对比。
- :pwd:显示当前文件所在的位置。
4.vim中光标的移动
- h或者退格:向左移动一个字符;l或者空格:向右移动一个字符;j:向下移动一个字符;k:向上移动一个字符。
- gj:移动到一段内的下一行;gk:移动到一段内的上一行。
- +或者enter:把光标移动至下一行第一个空白的字符。
- w:向前移动一个单词,光标停留在下一个单词的开头;W:和w的作用差不多,但是会忽略一些标点。
- e:向前移动一个单词,光标停留在下一个单词的末尾;E:和e的作用差不多,但是如果有标点会移动到标点。
- b:向后移动一个单词,光标停留在上一个单词的开头;B:和b的作用差不多,但是会忽略一些标点。
- ge:后移一个单词,光标停留在上一个单词的末尾;gE:同ge,但是包含单词相邻的标点。
- (:前移1句;):后移1句;{:前移一段;}:后移一段。
- ^:移动到本行第一个非空白字符;g^:和^作用差不多,但是是移动到当前屏幕行第一个非空白字符。
- $:移动到行尾;数字|:把光标移动到数字列上;数字G:文件的第数字行;:数字:移动到第数字行;:$:移动到最后一行;
- H:光标移动到屏幕最顶端一行;M:光标移动到屏幕中间一行;L:光标移动到屏幕最低端一行。
- gg:到文件头;GG:到文件的尾
- CTRL+e:向下滚动一行;CTRL+y:向上滚动一行;
- zz:将当前行移动到屏幕的中央;zt:将当前行移动到屏幕顶端;zb:将当前行移动到屏幕底部。
5.文本的插入
- i:再光标前插入;I:再当前行第一个非空字符前插入;gl:再当前行第一列插入;
- a:在光标后插入;A:在当前行最后插入;o:在下面新建一行进行插入;O:在上面新建一行进行插入。
- :r 文件名:在当前文件中插入另一个文件的内容。
- :数字r 文件名:在第数字行插入另一个文件的内容。(如果改行有内容就在下一行进行插入)
- :r !date:在光标处插入当前的日期和时间;:r !命令:可以把命令结果插入。
- c[数字n]w:修改光标后n个词。
- c[数字n]l:修改光标后n个字母。
- c[数字n]h:修改光标前n个字母。
- [数字n]cc:修改当前n行。
6.文本的复制和粘贴
- [数字n]x:剪切光标右边n个字符,相当于d[数字n]l。[数字n]X:剪切光标左边n个字符,相当于d[n]h。
- y:复制可视模式下选中的文本。
- yy或者Y:复制整行的文本。
- y[数字n]w:复制n个词。y[数字n]l:复制光标右边n个字符。y[数字n]h:复制光标左边n个字符。
- y$:从光标当前位置复制到行尾。
- y0:从光标当前位置复制到行首。
- :m,ny:复制m到n行。ygg:复制光标以上所有的行。yG:复制光标一下所有的行。
- d:删除在可视模式下选中的文本。
- d[数字n]w:删除n个单词。d[数字n]l:删除光标右边n个字符。d[数字n]h:删除光标左边n个字符。
- d$:删除当前位置到行尾的内容。d0:删除当前位置到行首的内容。[数字n]dd:删除n行。
- :m,nd:三处m到n行的内容。dgg:删除光标以上所有的行。dG:删除光标一下所有的行。
- p: 在光标之后粘贴。P: 在光标之前粘贴。
注意:as:一个词;aw:一句。ap:一段。ab:一块(包括在圆括号中的)。y,d,c,v都可以跟。
7.文本查找和替换
- /查找内容:在后面的文本中查找内容。
- n:向后查找。N:向前查找。
- :s/旧的/新的:用新的替换当前行第一个旧的。
- :s/旧的/新的/g:用新的替换当前行所有的旧的。
- :n1,n2s/old/new/g :用new替换文件n1行到n2行所有的old。
- :%s/old/new/g :用new替换文件中所有的old。
- :%s/^/xxx/g :在每一行的行首插入xxx,^表示行首。
- :%s/$/xxx/g :在每一行的行尾插入xxx,$表示行尾。
注意:所有替换命令末尾加上c,每个替换都将需要用户确认。
:[range]g/内容/模式 命令:如:%g/^he/normal dd表示对所有的行执行以he开头的在normal模式下dd。其中对于range有如下规定,如果不指定就是当前行,如果是m,n就是m到n行,0就是最开始的一行,$就是最后一行,.是当前行,%是所有行。
8.文本的排版
- <<:向左缩进一个shift的宽度;>>:向右缩进一个shift的宽度。
- :ce:本行文字居中;le:本行文字靠左;ri:本行文字靠右。(这里可以结合V模式进行使用)
- :set spell:开启拼写检查;:set nospell:关闭拼写检查。
- z=:显示一个有关拼写错误单词的列表,可从中选择。
- zg:告诉拼写检查器该单词是拼写正确的。
- zw:与上一命令相反,告诉拼写检查器该单词是拼写错误的。
9.编辑多个vim文件
如vim 文件1 文件2 ......
可以使用:next(:n)编辑下一个文件,使用:previous编辑上一个文件,使用:wnext,保存当前文件,并编辑下一个文件,使用:wprevious,保存当前文件,并编辑上一个文件,使用:args 显示文件列表。
- vi -o filenames :在水平分割的多个窗口中编辑多个文件。
- vi -O filenames :在垂直分割的多个窗口中编辑多个文件。
- vim -p 文件1 文件2 ....:打开多个文件,每个文件占用一个标签页。
- :tabn:切换到下一个标签。Control + PageDown,也可以。
- :tabp:切换到上一个标签。Control + PageUp,也可以。
- [n] gt:切换到下一个标签。如果前面加了 n , 就切换到第n个标签。第一个标签的序号就是1。
- :tab split :将当前缓冲区的内容在新页签中打开。
- :tabc[lose] :关闭当前的标签页。
- :tabo[nly] :关闭其它的标签页。
- :tabs:列出所有的标签页和它们包含的窗口。
- :tabm[ove] [N]:移动标签页,移动到第N个标签页之后。 如 tabm 0 当前标签页,就会变成第一个标签页。
- :buffers或:ls或:files :显示缓冲区列表。
- ctrl+^:在最近两个缓冲区间切换。
- :bn:下一个缓冲区;:bp :一个缓冲区;:bl :最后一个缓冲区。
- :b[n]或:[n]b :切换到第n个缓冲区。
- :nbw(ipeout) :彻底删除第n个缓冲区。
- :nbd(elete) :删除第n个缓冲区,并未真正删除,还在unlisted列表中。
- :ba[ll] :把所有的缓冲区在当前页中打开,每个缓冲区占一个窗口。
- :vsplit(:vsp) :把当前窗口分割成水平分布的两个窗口。
- :qall :关闭所有窗口,退出vim。
- :wall :保存所有修改过的窗口。
- :only :只保留当前窗口,关闭其它窗口。(CTRL-W o)
- :close :关闭当前窗口,CTRL-W c能实现同样的功能。
- ctrl+w ctrl+w: 切换到下一个窗口。或者是ctrl+w w。
- ctrl+w p: 切换到前一个窗口。
- ctrl+w h(l,j,k):切换到左(右,下,上)的窗口。
- ctrl+w t(b):切换到最上(下)面的窗口。<BR>
- ctrl+w H(L,K,J):将当前窗口移动到最左(右、上、下)面。
- ctrl+w r:旋转窗口的位置。
- ctrl+w T:将当前的窗口移动到新的标签页上。
10.vim快速编辑
- [n] u: 取消一(n)个改动。
- :undo 5 :撤销5个改变。
- :undolist :你的撤销历史。
- ctrl + r: 重做最后的改动。
- U:取消当前行中所有的改动。
11.文件加密
- vim -x file: 开始编辑一个加密的文件。
- :X :为当前文件设置密码。
- :set key=:去除文件的密码。
- :e ++enc=utf8 filename:让vim用utf-8的编码打开这个文件。
- :set fenc或:set fileencoding,查看当前文件的编码。