vim编辑详解

Posted on Posted in vim
Tips: 本文创建于2014年9月30日,已超过 2 年,内容或图片可能已经失效!
文章目录[隐藏]

0

1、打开一个文件

方法1:从命令行中打开文件
$ vim /etc/passwd

方法2:在运行Vim之后,从Vim编辑器中打开文件。
$ vim
:e /etc/passwd

2、保存关闭文件

:w 保存工作文件
:up 保存工作文件
:w newfile 另存为newfile
:up newfile 另存为newfile
:w! newfile 另存为newfile(带有覆写)
:up! newfile 另存为newfile(带有覆写)

😡 保存工作文件并退出
:wq 保存工作文件并退出
ZZ 保存工作文件并退出
:q! 保存工作文件并退出
:qa

3、文件的跳转

:0 移动到文件的顶部
Gg 移动到文件的顶部
1G 移动到文件的顶部

:$ 移动到文件的底部
G 移动到文件的底部

:50 移动到50行
50gg 移动到50行
50G 移动到50行

vim + /etc/passwd 打开/etc/passwd,光标直接到文件最底部
vim +142 /etc/passwd 打开/etc/passwd到143行
vim +/lwan /etc/passwd 打开/etc/passwd编辑用户lwan

ctrl+f 向下滚动整页
ctrl+b 向上滚动整页
ctrl+d 向下滚动半页
ctrl+u 向上滚动半页

{ 移动到当前段落的开始
} 移动到下一个段落的开始
[[ 移动到当前章节的开始
]] 移动到下一个章节的开始

0 移动到当前行的开始位置
$ 移动到当前行的结束位置
^ 移动到当前行的第一个非空字符
g_ 移动到当前行的最后一个非空字符

4、删除

x 删除光标下的字符 ("dl" 的缩写)
X 删除光标前的字符 ("dh" 的缩写)
D 从当前位置删除到行尾 ("d$" 的缩写)
db 从当前位置删除到前一个单词的开头
dw 删除光标之后的单词剩余部分。
d$ 删除光标之后的该行剩余部分。
dd 删除当前行。
diw 删除光标上的单词 (不包括空白字符)
daw 删除光标上的单词 (包括空白字符)
dG 删除到文件末
dgg 删除到文件首
nx 删除从光标开始的n个字符
ndd 向下删除当前行在内的n行
c 功能和d相同,区别在于完成删除操作后进入INSERT MODE
cc 也是删除当前行,然后进入INSERT MODE
"dl" 删除字符 (缩写: "x") |dl|
"diw" 删除内含单词 *diw*
"daw" 删除一个单词 *daw*
"diW" 删除内含字串 (见 |WORD|) *diW*

"daW" 删除一个字串 (见 |WORD|) *daW*
"dd" 删除一行 |dd|
"dis" 删除内含句子 *dis*
"das" 删除一个句子 *das*
"dib" 删除内含 '(' ')' 块 *dib*
"dab" 删除一个 '(' ')' 块 *dab*
"dip" 删除内含段落 *dip*
"dap" 删除一个段落 *dap*
"diB" 删除内含 '{ ' ' }' 大块 *diB*
"daB" 删除一个 '{ ' ' }' 大块 *daB
u 撤销上一步操作
ctrl+r 回复上次的撤销
U 撤销对当前行的所有操作
:g/^\s*$/d 删除所有的空白行
:%s/^.//g 删除每行第一个字符

5、windows想unix格式转换

查看格式
cat -v file(如果是windows格式,文件每行的最后,会有特殊字符显示)
转换
:set fileformat=unix

6、搜索

/so 向光标下搜索so字符串
?so 向光标上搜索so字符串
n 向下搜索前一个搜索动作
N 向上搜索前一个搜索动作

7、复制粘贴

yy 复制游标所在行整行。或大写一个Y
2yy 或y2y复制两行
y^ 复制至行首,或y0。不含游标所在处字元。
y$ 复制至行尾。含游标所在处字元
yw 复制一个word
y2w 复制两个字(单词)
yG 复制至档尾
y1G 复制至档首
p 小写p代表贴至游标后(下)
P 大写P代表贴至游标前(上)

复制单个字符
首选进入正常模式(按ESC就行)
然后按v(指定粘贴板为"1v 引号不能少),进入visual方式,然后就可以移动方向键选中文本,然后按y,就拷贝完成,
如果你要从光标处开始复制 4 个字符,可以按 4yl (复制光标后的)("14yl)("110yl 后面10个字符),4yh(复制光标前的) ,就复制了4个字符到缓冲区中了,
按下来就可以用 p (指定粘贴板为"1v 引号不能少)命令随便粘贴了(1为指下粘贴板名)

8、替换

:s/old/new 用new替换行中首次出现的old
:s/old/new/g 用new替换行中所有的old
:n,m s/old/new/g 用new替换从n到m行里的所有old
:%s/old/new/g 用new替换当前文件里所有的old

一些例子

  1. #将That or this 换成 This or that  
  2. :%s/\(That\) or \(this\)/\u\2 or \l\1/  
  3. —-  
  4. #将句尾的child换成children  
  5. :%s/child\([ ,.;!:?]\)/children\1/g  
  6. —-  
  7. #将mgi/r/abox换成mgi/r/asquare  
  8. :g/mg\([ira]\)box/s//mg//my\1square/g    <=>  :g/mg[ira]box/s/box/square/g  
  9. —-  
  10. #将多个空格换成一个空格  
  11. :%s/  */ /g  
  12. —-  
  13. #使用空格替换句号或者冒号后面的一个或者多个空格  
  14. :%s/\([:.]\)  */\1 /g  
  15. —-  
  16. #删除所有空行  
  17. :g/^$/d  
  18. —-  
  19. #删除所有的空白行和空行  
  20. :g/^[  ][  ]*$/d  
  21. —-  
  22. #在每行的开始插入两个空白  
  23. :%s/^/>  /  
  24. —-  
  25. #在接下来的6行末尾加入.  
  26. :.,5/$/./  
  27. —-  
  28. #颠倒文件的行序  
  29. :g/.*/m0O  <=> :g/^/m0O  
  30. —-  
  31. #寻找不是数字的开始行,并将其移到文件尾部  
  32. :g!/^[0-9]/m$ <=> g/^[^0-9]/m$  
  33. —-  
  34. #将文件的第12到17行内容复制10词放到当前文件的尾部  
  35. :1,10g/^/12,17t$  
  36. ~~~~重复次数的作用  
  37. —-  
  38. #将chapter开始行下面的第二行的内容写道begin文件中  
  39. :g/^chapter/.+2w>>begin  
  40. —-  
  41. :/^part2/,/^part3/g/^chapter/.+2w>>begin  
  42. —-  
  43. :/^part2/,/^part3/g/^chapter/.+2w>>begin|+t$  
» 转载请注明来源:若我若鱼 » vim编辑详解

Leave a Reply

Your email address will not be published. Required fields are marked *

4 × one =