2.2. vim简单使用操作¶
2.2.1. 屏幕翻滚类命令¶
``gg`` 回到文件头部
``<num>`` 到当前行第<num>列
``$`` 到当前行末尾
``Ctrl+u`` 向文件首翻半屏
``Ctrl+d`` 向文件尾翻半屏
``Ctrl+f`` 向文件尾翻一屏
``Ctrl+b`` 向文件首翻一屏
``nz`` 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部
2.2.2. 删除¶
``dd`` 删除光标所在的一行文字,同时本行文字会放到缓存中
``d0`` 删至行首
``d$`` 删至行尾
``dw`` 删除一个单词/光标之后的单词剩余部分
``x`` 删除当前字符
2.2.3. 复制¶
yy
复制本行文字到缓存中number yy
复制number行到缓存中
2.2.4. 粘贴¶
p
把缓存中的行粘贴到光标所在的下一行,P
把缓存中的行粘贴到光标所在的上一行
2.2.5. 文件¶
:r filename
把文件filename的内容粘贴在光标以下行:w
保存当前编辑的文件名:w filename
当filename不存在时,把修改后的文件存为文件filename ,当文件filename存在时,报错。!w filename
如果文件filename存在时,把修改后的文件保存为文件filename
2.2.6. 在多个文件之间切换¶
:n
开始编辑vi激活的文件列表中的下一个文件:n filenames
指定将被编辑的新的文件列表
2.2.7. 在当前文件和另外一个文件间切换¶
:e filename
使用filename激活vi(在vi中装入另一个文件filename)e!
重新装入当前文件,若当前文件有改动,则丢弃以前的改动:e+filename
使用filename激活vi ,并从文件尾部开始编辑:e+number filename
使用filename激活vi ,并在第number行开始编辑:e#
开始编辑另外一个文件
2.2.8. 查找¶
/pattern
向后寻找指定的pattern ,若遇到文件尾,则从头再开始?pattern
向前寻找指定的pattern ,若遇到文件头,则从尾再开始n
在上次指定的方向上,再次执行上次定义的查找N
在上次指定的方向的相反方向上,再次执行上次定义的查找/pattern/+number
将光标停在包含pattern的行后面第number行上/pattern/-number
将光标停在包含pattern的行前面第number行上%
移到匹配的”()”或”{}”上
2.2.9. 选项设置¶
all
列出所有选项设置情况term
设置终端类型ignorance
在搜索中忽略大小写list
显示制表位(Ctrl+I)和行尾标志($)number
显示行号report
显示由面向行的命令修改过的数目terse
显示简短的警告信息warn
在转到别的文件时若没保存当前文件则显示NO write信息nomagic
允许在搜索模式中,使用前面不带“”的特殊字符nowrapscan
禁止vi在搜索到达文件两端时,又从另一端开始mesg
允许vi显示其他用户用write写到自己终端上的信息
2.2.10. 替换命令¶
命令:
: ranges /pat1/pat2/g
- 说明:
:
这是Vi的命令执行界面range 是命令执行范围的指定: 百分号(%)表示所有行
点(.)表示当前行
美元($)表示最末行
s 表示其后是一个替换命令
简单命令:
:s/vivian/sky/
替换当前行第一个 vivian 为 sky:s/vivian/sky/g
替换当前行所有 vivian 为 sky:n,$s/vivian/sky/
替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky:n,$s/vivian/sky/g
替换第 n 行开始到最后一行中每一行所有 vivian 为 sky说明:n 为数字,若 n 为
.
,表示从当前行开始到最后一行
字符串的首次出现进行替换
:g
放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作:%s/vivian/sky/
(等同于:g/vivian/s//sky/
) 替换每一行的第一个 vivian 为 sky:%s/vivian/sky/g
(等同于:g/vivian/s//sky/g
) 替换每一行中所有 vivian 为 sky
可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#vivian/#sky/#
替换当前行第一个 vivian/ 为 sky/:%s+/oradata/apras/+/user01/apras1+
(使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/
删除文本中的^M
问题描述:对于换行,window下用回车换行(0A0D)来表示,linux下是回车(0A)来表示。这样,将window上的文件拷到unix上用时,总会有个^M.请写个用在unix下的过滤windows文件的换行符(0D)的shell或c程序。
使用命令:
cat filename1 | tr -d “^V^M” > newfile;
使用命令:
sed -e “s/^V^M//” filename > outputfilename
说明: ^V和^M指的是Ctrl+V和Ctrl+M. 你必须要手工进行输入 ,而不是粘贴。
在vi中处理:首先使用vi打开文件,然后按ESC键,接着输入命令:
%s/^V^M//
:%s/^M$//g
如果上述方法无用,则正确的解决办法是:
tr -d "\r" < src >dest tr -d "\015" dest strings A>B
2.2.11. 已熟悉¶
编辑: i
退出:
Esc : * q 退出 * q! 强制退出 * wq 保存并退出