vi 的一些常用命令及配置
记下一些我可能会经常用到的一些命令。
vi 的一些常用命令
# 显示行号 :set nu # 取消显示行号 :set nonu # 到行首 0 # 到行尾 $ # 到文件头 :1 # 到文件尾 :$ G # 复制当前行 yy # 粘贴 p # 删除当前字符 x # 删除 n 个字符 nx # 撤销上一步操作 u # 撤销当前行所有操作 U # 重新加载文件 :e # 强制重新加载文件 :e! # 复制第126行至第130行到150行后 :126,130 co 150 # 复制第126行至第130行到文件最后 :126,130 co $ # 移动第126行到第130行的内容到第150行下 :126,130 m 150 # 删除当前行 dd # 删除当前行及其后n-1行 ndd # 删除一个单词 dw # 删除 n 个单词 ndw # 删除到行首 d0 # 删除到行尾 d$ # 在光标前插入 i # 在当前行插入 I # 在光标后 a # 在当前行尾插入 A # 在当前行之下新开一行 o # 在当前行之上新开一行 O # 修改当前字符,接着的字符是修改后的字符 r # 进入覆盖状态 R # 删除当前字符,然后进入插入模式 s # 删除当前行,然后进入插入模式 S # 从光标开始处向文件尾搜索 "keyword" /keyword # 从光标开始处向文件头搜索 "keyword" ?keyword # 在同一方向重复上一次搜索 n # 在反方向重复上一次搜索 N # 将当前行中所有 "word1" 用 "word2" 替换 :s/word1/word2/g # 将第10行至20行中所有 "word1" 用 "word2" 替换 :10,20s/word1/word2/g # 将文件中所有的 "word1" 用 "word2" 替换 :g/word1/s//word2/g # 批量为多行添加注释。在 Linux 中,文本每行的起始标志是 ^ ,结束标志是 $ 。 :10,20s/^/#/g # 批量为多行添加注释。如果注释字符是 // ,则需要使用转义符,如下: :10,20s/^/\/\//g # 批量取消注释 :10,20s/^#//g # 删除所有以 # 开头的行 :g/^#/d # 删除所有以空格(\s代表空格)开头的行 :g/^\s/d # 删除以空格#(.*代表多个)开头的行 :g/^.*#/d # 删除空白行 :g/^$/d # 删除由空格组成的行 :g/^\s*$/d
另外,在某些系统中,没有预装 vi,但又不想使用那么重的 vim 的时候,可以安装 vim-tiny。
在通过 ssh 使用 vi 的时候,一般习惯使用鼠标右键粘贴剪切板中的内容,有时候不能生效,显示 VISUAL,这时可以在 vi 的命令模式输入:
set mouse-=a
就可正常了。但第二次再进入的时候,又会失效了。这时可以在 ~ 下面增加一个 .vimrc 文件,内容如下:
if has('mouse') set mouse-=a endif
这样今后就会一直生效了。