vim的最常用的用法

来源:互联网 发布:上海cnc编程招聘信息 编辑:程序博客网 时间:2024/05/22 00:17
1.剪切,复制,粘贴
用v选中文本之后:
y:复制
d:剪切
无v选中文本:
d$:剪切当前行光标所在的位置到行尾
d^:剪切当前行光标所在的位置到行首
dd:剪切一行
ndd:从光标所在行开始剪切N行
2.剪切1-10行到20行
:1,10 m 20


2光标移动--

1. 按屏幕移动
(1) 最常用的几个命令如下:
Ctrl + f           // 向前(往行号大的方向移动)移动一屏,想来F代表Forward
Ctrl  + b           // 向后移动一屏,B的话应该是Before吧


当前屏幕首行:H
当前屏幕末行:L
当前屏幕中央:M


z.            // 把当前行移动到屏幕中央,不用回车,切记
fx       //往右移动到 x 字符上         
w,W //w:将光标右移一个字。光标停留在下一个字的字首位置




0:移到行首
$:得到行尾


3.字符串替换
:[range]s/{pattern}/{string}/[flags]
全词匹配:
:%s/\<string1\>/string2/g (如果是string1=,则会替换,其他不会)
flags 有如下四个选项
c confirm,每次替换前询问;
e error, 不显示错误;
g globle,不询问,整行替换。如果不加g选项,则只替换每行的第一个匹配到的字符串;
i ignore,忽略大小写
这些选项可以合并使用,如cgi表示不区分大小写,整行替换,替换前询问
:%s/str1/str2/g   替换每一行中所有str1为str2 常用!


:s/str1/str2/g 替换当前行所有str1为str2


:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky


4.快捷搜索:
如果要搜索,一般命令是:   ":/thisisaverylongword"
但是这样输入thisisaverylongword, 这个很长的单词很难输入, 所以有更简单的办法:
 把光标置于thisisaverylongword之上, 然后按*键,或者#键即可直接进行搜索.
 *键是向下搜索, #键是向上搜索.
5.同时查看多个文件,并同时显示
vi file1 file2 file3
:n 切换到文件2 (n=next)
:e# 或 :N    切换回到刚才编辑的文件 
vi file1 file2 file3
:n 切换到文件2 (n=next)
:N 切换到上一个文件
:e filaname (跳转到指定文件,:ls列出当前打开的文件
在vim下
:sp 另外一个文件的路径及文件名
vim  -o filename1 filename2  水平分割窗口


 vim  -O  filename1 filename2 垂直分割窗口
:e  file   不会分割窗口


 :sp  file  将会水平分割窗口
 :vsp  file  将会垂直分割窗口


6.在vim中执行shell命令
1.vim中执行shell命令,有以下几种形式
1):!command不退出vim,
并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容例如:!ls -l
:r !command将shell命令command的结果插入到当前行的下一行例如:r !date
 :1,3   !command    将文本中第一行到第三行的内容输入到命令command中进行处理,
并将第一行到第三行的内容替换为命令的执行结果
52 !bash,那么会把第52行的内容也就是ls -l作为命令执行,同时命令的输出结果会替换第52行的内容,注意其中的区别。
2):!bash来启动一个bash shell并执行命令,不需要退出vim,通过命令exit回到原先的编辑状态


7.文件对比
1. 使用vim的比较模式打开两个文件:
vim -d file1 file2

vimdiff file1 file2


2. 如果已经打开了文件file1,再打开另一个文件file2进行比较:
:vert diffsplit file2
如果没有用vert命令,diffsplit则会分上下两个窗口。


3. 如果已经用split方式打开了两个文件file1,file2,又想比较两文件的不同。
分别在两个窗口里面输入命令:
:diffthis


4. 如果更改了某个窗口的内容,vim又没有自动更新diff检查,可以使用如下命令更新:
:diffupdate


5. 定位到不同点:
[c     跳到前一个不同点
]c     跳到后一个不同点


6. 在窗口间跳转:
ctrl-w w    跳到下一个窗口
ctrl-w h    跳到左侧窗口
ctrl-w l    跳到右侧窗口
ctrl-w j    跳到下方的窗口
ctrl-w k    跳到上方的窗口


7. 合并文档:
dp          将差异点的当前文档内容应用到另一文档(diff put)
do          将差异点的另一文档的内容拷贝到当前文档(diff get)


8. 上下文的展开和查看
比较和合并文件的时候经常需要结合上下文来确定最终要采取的操作。Vimdiff 缺省是会把不同之处上下各 6 行的文本都显示出来以供参考。其他的相同的文本行被自动折叠。如果希望修改缺省的上下文行数为3行,可以这样设置:
:set diffopt=context:3


zf   创建折叠(使用数字表示创建有当前行到下多少行的折叠,比如3j就创建包括4行的折叠)
    zo   打开折叠(l也可以打开折叠)
    zc   关闭当前折叠
    zm   关闭所有折叠
    zr   打开所有折叠
    zE   删除所有折叠
    zd   删除当前折叠
    za   若当前打开则关闭,若当前关闭则打开
    zj   到下一折叠的开始处
    zk   到上一折叠的末尾
0 0
原创粉丝点击