在Linux下处理文本,vim几乎是绕不过去的坎,而如果能够熟练掌握vim的使用,也一定可以起到事半功倍的效果,尤其是在处理大文件的情况下。本文只列出了笔者在实践中经常用到命令,同时也列出了部分非vim的Linux常用文本处理命令。另外,相对于vi,笔者也更喜欢vim。
1、命令篇,即下面命令都是在非编辑模式下执行,在编辑模式下,按Esc键即可退出编辑模式,进入命令模式
- gg 跳转到首行
- G 或者 shift+g 跳转到尾行
- :xx 跳转到xx行,注意前面的冒号
- x+Enter x 是数字,表示向下跳x行
- :set nu 显示行号
- :set nonu 不显示行号
- /xxx 全文搜索字符串xxx,n查找下一个,N查找上一个
- dd 删除光标所在行;yy 复制光标所在行
- ndd 删除光标所在行(包括)开始的向下n行;nyy 复制光标所在行(包括)开始的向下n行
- dnG 或者 dngg 删除从光标所在行到n行;ynG 或者 yngg 复制从光标所在行到n行
- dG 删除光标所在行到最后所有数据;yG 复制光标所在行到最后所有数据
- ggdG 删除全文,结合1和2就比较容易理解了;ggyG
- d$ 删除光标所在处(包含),到该行的最后一个字符;y$
- d0 删除光标所在处(包含),到该行的最前面一个字符;y0
- p/P 粘贴复制的数据到光标所在下一行/上一行
- u 撤销上一次操作
- Ctrl+r 重新执行撤销的操作
- . (一个点)重复执行最近一次操作
- h 或 左箭头键(←) 向左移动一个字符
- l 或 右箭头键(→) 向右移动一个字符
- k 或 上箭头键(↑) 向上移动一个字符
- j 或 向下箭头键(↓) 向下移动一个字符
- pg up 向上翻页
- pg dn 向下翻页
- :w 保存不退出
- :wq 或者 ZZ 或者 shift+zz 保存并退出
- :q 退出,必须没有执行修改操作
- :q! 强制退出不保存
- Ctrl+v Visual Block模式,这是一个关键时候很实用、很好玩的操作,类似于windows下按住alt键的选择操作,可以根据光标移动进行范围选择
- :sp 多窗口编辑,在做文件比对的时候,很有用。多次输入 :sp 可以不断分隔窗口,:q 可以退出本次分隔窗口
- 其实大多数远程终端工具(如xshell等)都可以支持非常丰富的鼠标操作(如窗口分隔,复制、粘贴操作)。不熟悉命令的同学,选择一个好用的终端工具也是一个一劳永逸的方法
2、编辑篇
- a 从光标所在字符后开始编辑
- A 从光标所在行行尾开始编辑
- i 从光标所在字符前开始编辑
- I 从光标所在行行首开始编辑
- o 从光标所在行下一行(新行)开始编辑
- O 从光标所在行上一行(新行)开始编辑
3、Linux文本命令
- wc -l test.txt 统计文本行数。
- sed -i 's/旧字符串/新字符串/g' test.txt 替换test.txt中的所有“旧字符串”为“新字符串”,并保存(直接修改原文件)。需要注意的是,如果字符串是特殊字符,需要使用 \ 转义。
当然,vim支持的功能远远不止这些,例如,读取多文件、另存为等功能,但是个人认为没有兴趣的话这些没必要记,直接多打开一个shell窗口就可以了。另外,Linux下的文本处理命令也远不止 vim 和 sed命令,还有 awk、grep等更多丰富命令。