VIM_readme

本文为在使用vim过程中,自己归纳总结的vim常用操作技巧

1.  I   定位到行首,并开始输入

2.  A  定位到行尾,并开始输入
3.  输入$,定位到当前行倒数第二个数,默认最后一个为标点符号
4.  如果你的系统环境不是中文,而你想使用中文的vimtutor,就运行vimtutor zh



//******************* 文档操作***********************************
:e file --关闭当前编辑的文件,并开启新的文件。 如果对当前文件的修改未保存,vi会警告。
:e#或ctrl+^ -- 回到刚才编辑的文件,很实用。
:f或ctrl+g -- 显示文档名,是否修改,和光标位置当前百分比
:f filename -- 改变编辑的文件名,这时再保存相当于另存为。
:wq -- 保存并退出。
ZZ -- 保存并退出。
:x -- 保存并退出。

:Sex -- 水平分割一个窗口,浏览文件系统;
:Vex -- 垂直分割一个窗口,浏览文件系统;

:sp     vim水平分割窗口(split)
快捷键  Ctrl ws
:vsp    vim垂直分割窗口(vsplit)
快捷键  Ctrl wv


//*******************光标的移动***********************************
w: 前移一个单词,光标停在下一个单词开头;
e: 后移一个单词,光标停在下一个单词末尾;
gg: 到文件头部。
G: 到文件尾部。
ctrl+f: 下翻一屏。
ctrl+b: 上翻一屏。
ctrl+d: 下翻半屏。
ctrl+u: 上翻半屏。
ctrl+e: 向下滚动一行。
ctrl+y: 向上滚动一行。
n%: 到文件n%的位置。

i: 在光标前插入;一个小技巧:按8,再按i,进入插入模式,输入=, 按esc进入命令模式,就会出现8个=。 这在插入分割线时非常有用,如30i+<esc>就插入了36个+组成的分割线。
I: 在当前行第一个非空字符前插入;
gI: 在当前行第一列插入;
a: 在光标后插入;
A: 在当前行最后插入;
o: 在下面新建一行插入;
O: 在上面新建一行插入;

:r filename在当前位置插入另一个文件的内容。
:[n]r filename在第n行插入另一个文件的内容。
:0 r !sed  '1,5p' read.txt   在第0行,插入read.txt文件的1-5行内容。  这里!使得能使用外部命令,下面的:r 理解为插入内容。
!command  执行命令
r!command  读入命令的输出

:!! 执行上一次的外部命令。

:r !date 在光标处插入当前日期与时间。同理,:r !command可以将其它shell命令的输出插入当前文档。

c[n]w: 改写光标后1(n)个词。
c[n]l: 改写光标后n个字母。
c[n]h: 改写光标前n个字母。      
[n]cc: 修改当前[n]行。                                                             单独一个cc,删除当前行,并且光标处于输入状态
[n]s: 以输入的文本替代光标之后1(n)个字符,相当于c[n]l。         
[n]S: 删除指定数目的行,并以所输入文本代替之。                    单独一个S,删除当前行,并输入文本代替

删除包含特定字符串的行
:g/str/d       str为要特定字符串

[n]x: 剪切光标右边n个字符,相当于d[n]l。
[n]X: 剪切光标左边n个字符,相当于d[n]h。
y: 复制在可视模式下选中的文本。
yy or Y: 复制整行文本。

y$: 从光标当前位置复制到行尾。
y0: 从光标当前位置复制到行首。
:m,ny<cr> 复制m行到n行的内容。
[n] dd: 删除(剪切)1(n)行
p: 在光标之后粘贴。
P: 在光标之前粘贴。

/something: 在后面的文本中查找something。
?something: 在前面的文本中查找something。

//*******************grep***********************************
vimgrep /匹配模式/[g][j] 要搜索的文件/范围 
g:表示是否把每一行的多个匹配结果都加入
j:表示是否搜索完后定位到第一个匹配位置

vimgrep /pattern/ %           在当前打开文件中查找
vimgrep /pattern/ *             在当前目录下查找所有
vimgrep /pattern/ **            在当前目录及子目录下查找所有
vimgrep /pattern/ *.c          查找当前目录下所有.c文件
vimgrep /pattern/ **/*         只查找子目录

:vimgrep /flash/gj  **/*.as 搜索当前目录以及所有子目录内as文件中的'flash'

:vimgrep /an error/gj   *.c   在所有.c文件中搜索an error

:vimgrep /an error/gj    *    在当前目录下的文件搜索an error,不包括子目录
cn                                          查找下一个 
cp                                            查找上一个 
copen                                    打开quickfix 
cw                                          打开quickfix 
cclose                                   关闭qucikfix 
help vimgrep                       查看vimgrep帮助 
加数字限定搜索结果的上限
:1vim/pattern/ % 只查找那个模式在本文件中的第一个出现。

//*******************替换***********************************
:s/old/new - 用new替换当前行     第一个    old。
:s/old/new/g - 用new替换当前行    所有的     old。
:n1,n2 s/old/new/g - 用new替换文件n1行到n2行所有的old。
:%s/old/new/g - 用new替换      文件中所有的    old。
:%s/^/xxx/g - 在每一行的行首插入xxx,                               ^表示行首。
:%s/$/xxx/g - 在每一行的行尾插入xxx,                                $表示行尾。
所有替换命令末尾加上c,每个替换都将需要用户确认。 如:%s/old/new/gc,加上i则忽略大小写(ignore)。

还有一种比替换更灵活的方式,它是匹配到某个模式后执行某种命令,、SDF
语法为 :[range]g/pattern/command
例如 :%g/^ xyz/normal dd。
表示对于以一个空格和xyz开头的行执行normal模式下的dd命令。

如果不指定range,则表示当前行。
m,n: 从m行到n行。
0: 最开始一行(可能是这样)。
$: 最后一行
.: 当前行
%: 所有行
//*******************编辑***********************************
我们可以一次打开多个文件,如
vi a.txt b.txt c.txt 
使用:next(:n)编辑下一个文件。
:2n 编辑下2个文件。
使用:previous或:N编辑上一个文件。
使用:wnext,保存当前文件,并编辑下一个文件。
使用:wprevious,保存当前文件,并编辑上一个文件。
使用:args 显示文件列表。
:n filenames或:args filenames 指定新的文件列表。
vi -o filenames 在水平分割的多个窗口中编辑多个文件。
vi -O filenames 在垂直分割的多个窗口中编辑多个文件。

vim -p files: 打开多个文件,每个文件占用一个标签页。
:tabe tabnew -- 如果加文件名,就在新的标签中打开这个文件, 否则打开一个空缓冲区。
^w gf -- 在新的标签页里打开光标下路径指定的文件。
:tabn -- 切换到下一个标签。Control + PageDown,也可以。
:tabp -- 切换到上一个标签。Control + PageUp,也可以。

:tab split -- 将当前缓冲区的内容在新页签中打开。
:tabc[lose] -- 关闭当前的标签页。
:tabo[nly] -- 关闭其它的标签页。
:tabs -- 列出所有的标签页和它们包含的窗口。
:tabm[ove] [N] -- 移动标签页,移动到第N个标签页之后。 如 tabm 0 当前标签页,就会变成第一个标签页

//*******************关闭子窗口***********************************
:qall -- 关闭所有窗口,退出vim。
:wall -- 保存所有修改过的窗口。
:only -- 只保留当前窗口,关闭其它窗口。(CTRL-W o)
:close -- 关闭当前窗口,CTRL-W c能实现同样的功能。 (象 :q :x同样工作 )
. --重复上一个编辑动作

//*******************宏***********************************
qa:开始录制宏a(键盘操作记录)宏的名字叫a
q:停止录制
@a:播放宏a

//*******************文件加解密***********************************
vim -x file: 开始编辑一个加密的文件。
:X -- 为当前文件设置密码。
:set key=   去除文件的密码。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值