vim 使用教程

```sh
cd
ls
cd ../
cd -
pwd
cp
rm
mkdir
tar
mv
mb
tar -zcf
chmod
ssh
top
q
free

```

数字0含空字符到行首,^不含空字符到行首。
G移到到整个页面的最后一行的第一个非空字符。
gg移到整个页面的第一行的第一个非空字符。
w和e一般对英文作用比较好,并且大写的W E会忽略标点符号。
数字+| 移动光标所在行的第N个字符,一个汉字代表2个字符。
数字+G 移动到第N行,第一个非空字符。
{}移动到上一个或下一个段落,以空白行为划分。
()移动到上一个或下一个句子,以英文的?!等为划分,不常用。
%用来匹配括号的另一半,但只支持英文的括号。
CTRL+O 临时进入插入常态模式,即正在插入时,突然需要输入一条命令,命令执行后又回到插入模式。
J 连接此行与下一行。
A 与 I 及 a与 i,大写I在行首插入文字,大写A在行尾插入文字。
大写的O在上面插入一行,小写的O在下面插入一行。
大写X删除光标前的字符。
d0 d$删到行首或行尾。同时d$等同于D
dG 删除至文章的尾部,如定位光标在第5行,则删除第5行及其后的所有内容。
d1G 删除光标所在行,及其前面的所有内容。等同于dgg
大写R进入替换模式,可以从光标处一直改到按ESC.小写替换一个字符。
大写C等同于c$替换至行尾,但输入后直接进入插入模式。
cc取代整行,也可以用大写的S。
cw只适用于英文,替换一个单字。
~ 替换大小写
s与r类似,但会直接删除字符进入插入模式。

数字+大写G 光标移动到第N行
例子:5r我 把光标所在后的4个加上光标处1个字符共5个替换为 我。
3i我 ,在光标前插入3个我,但是要按esc后才出现效果。
3dd 删除光标以下含光标处共3行。
3x删除3个字符。
这些命令最好都是把 数字放在前面。

shiftwidth 缩写 sw 可能通过 :set sw=4 让
>> 命令使整行向右移动4个字,有汉字的缩进效果哦,合令刚好相反。
textwidth 缩写为tw ,可以:set td=100,也就是每行有100个字符,它对排版,文字居中,居左,居右有作用。
:ce :ri :le

gq为重排命令,可将段落或行重新排成一块。
gqap为整段重排。gq+数字+q ,可以重排几行。
非整行复制时,若粘贴,则在行或段尾加入。整行时,P(大写)表示之上一行,小写p为在下一行粘贴。
yG复制到档尾,y1G复制到档首。y0 y$ 2yy 复制2行,y2w 复制两个字符(汉字也是复制两个)

"a 这个就表示缓冲区a ,小写时在缓冲区a 中写内容,大写时,在原有缓冲区内容的基础上增加内容。 如 "ayy 就是复制一行放到缓冲区a中。

英文.(句号)表示重做,如删除一行后,再用6. 表示再向上重新删除6行。

/搜索,向下 ?搜索向上。 *匹配光标处的文字,搜索向下。g*部分匹配光标处文字,向下。#向上与*反,g#向上与g*反。n继续寻找,N反向继续寻找。

替换 :范围 /被替换的内容/ 换成什么/ 选项 c confirm 每次替换都询问,e error 显示错误信息 g globe 整行替换(否则只替换每行的第一外)i ignore 忽略大小写。如
:1,$s/lookfor/xfuture/g 替换第一行至最后一行中的lookfor为xfuture,是每一行中的每一个lookfor。
因为%可以代表当前文档,所以%与 1,$效果一样。小写s代表替换。

mx来标记书签,x为书签位置,可以用26个小写字母来表示,当按下`x 回到标签所在位置,'x 回到标签所在行的行首。 ` 是TAB键上方的那个,后一个'为单引号。如果设置和引用书签时用大写,如`A,则可以在不同的文件之间切换,牛B啊!

阿拉伯数字的书签目录是系统自己记的,`0代表回到前一次编辑文件中离开时的最后位置 `1代表回到前两次编辑文件中离开时的最后位置 ,含0可以记10个文件。无论是何时,达到mark处,想回到原来的位置(文件),可使用ctrl+o.
:marks 获取当前的书签列表。

打开文档,若是gvim就用 :gvim+文件名,若是vim就用 :vim +文件名

1

*跳到与光标处一样的单词。
%匹配括号等。
w 下一个单词的词头,e 下一个单词的词尾。小写e,w 以空格划分单词,大写真正的区分单词。
^ 跳到本行的第一个非空,而0含有空哦。
g_跳到本行的第一个非空,而$含有空哦。
fa 跳到当前行的a字母出现的下一个位置,f很好用哦。
3fa→ 在这行中查找a出现的第三个位置.
f和t对应t为向前查。这样就推导出一个命令  dfa删除从当前光标到下一个字母a。
:e#等同于ctrl+^可以让两个打开的文件相互切换。
多文件切换编辑时的一个主要区别:如果是一次打开多个文件,叫argument list ,如果是在编辑一个文件时,又打开了其它的文件,这时这些文件叫做:bufferlist.

而多个文件切换时的命令:  :n  :N 后一个,前一个文档,只适用于argument list.
:bn :bp 则适用于 bufferlist. :bl 编辑 bufferlist中的最后一个文件。
:b+文件名或编号,可以打开对应的文件。:ls可以显示文件的列表,看到编号和文件名。
在列表符号中:#代表前一次编辑的档案,%代表当前编辑的档案。+表示该文件已经修改过,-号表示bufferlist 中的文件尚未载入。

:e!放弃一切修改,重新载入这个文件,就像刚打开时那样。
:f 或 ctrl+g 会显示当前文件的名称,是否修改过,以及当前光标的位置。
:f +文件名,可以重命名当前文件。

:q! 舍弃修改,强制退出
:x 等同于 ZZ  存档后离开 ,注意区别若无修改则直接关闭,而:wq 即使无修改,退出直前也会再写入一次。
:w + 档名,另存他档,保存另一个文件。
:qa! 强迫中止当前正在进行的动作,而去执行下达的命令。
:set noswf 关掉VIM自动保存的那个紧急回复的文件。.文件名.swp 一般是隐藏的,并且没有密码功能。
:X 大写X会提示输入密码,给文件加密。
:recover +档名 紧急恢复。

:r + 文件名,可以在光标位置插入 这个文件的内容,好强大,有木有。
:35r + 文件名,将文件插入到第36行之后。
标示指令:有三种模式,字符,行,块。分别使用小字v 大写V ,CTRL+v(小写) windows下ctrl+v 是粘贴键,所以用ctrl+q 来进入其中。
可视化块会以列来标示选中,还记得列表只要标题吗,这样就很好用呢!在这个模式下,选中内容后,可以用shift+> 来将内容右移一个TAB位置。相反的符号则相反。
ctrl+w n(是字母,不是数字,可以将视窗上下一分为二),ctrl+w s 将原视窗一分为二,但第二个里的内容仍是第一个里的,即复制一个视窗。ctrl+w q 关闭视窗。
ctrl+w j   ctrl+w k 移至下一个或上一个视窗。
:sp + 文件名,可以新开一个视窗来编辑文件或新建 一个文件来编辑。
Ctrl+w o 使当前视窗成为唯一编辑的视窗,其它的隐藏掉。
@: 這是 Vim 的一個很特殊的指令,可以重複前一次的冒號命令。
:sh(ell) 執行 shell。使用 exit 回到 vim。
按下:后,可以使用上下左右键来找寻之前用过的:命令。
大寫 K 會顯示游標所在處之 word 的 man page 系統線上使用手冊。
:r !commond 這個就妙了!會在游標所在處次一行插入外部指令 commond 執行後的輸出內容。例如 :r !date 就會插入日期時間。
      :h name 這樣就會叫出 name 這個說明檔,如果後面沒接 name, 則會叫出 help.txt
:ver 會顯示版本


个配置:autoindent[ai]   autowrite[aw] background[bg] backup[bk]
writebackup[wb] backupdir[bdir]  browsedir[bsdir]就是菜单项 文件/打开
会弹出的文件浏览选择窗口。cindent[cin] 更适合C语言的缩进。
cmdheight[ch]状态栏的行数,建议设为2行。
compatible[cp]设为和VI兼容,但这样的话 VIM的扩展功能会受抑制。默认为OFF.
 confirm[cf]各种确认动作,预设为OFF.
directory[dir]swap档存放的目录。
ignorecase[ic]寻找时不分大小写,会对中文造成困扰。预设为off.
incsearch[is]加强式搜索,在输入patern时就在文件内移对光标找对应的patern.
hlsearch[hls]符合字串时,会反白表示,预设为OFF.
textwidth[tw]一种折行功能,规定了可以一行有多宽,以放多少字节为单位。
wrapmargin[wm]与tw类似,只是宽度是从视窗右边向左边算起。
wrap假折行,只在屏幕显示,并未插入eof.
wrapscan[ws]预设已开,就是在搜索时若到尾部了,可以从头开始再找。循环。
ruler[ru]在屏幕右下角显示,游标在文档中的位置,如底部,顶部或百分比。
statusline 修改状态列显示的格式。 shiftwidth[sw]设定〉〉移动的多少,可以用作缩进也行。
tabstop[ts]预设为8个字符的宽,为一个tab键的宽度。
showcmd[sc]在状态列显示目前所执行的指令及未未完成的指令片段。
showmde[smd]显示当前的模式,在载入文件时,会在这个地方显示文件名及其总行数,总字数。
visualbell 以屏幕闪动代替beep声。
list 也是一种模式,这样会让TAB的地方以^I的显示,行尾以的EOL显示成$
:set nolist 也就是nooption 可以取消设置。
swapfile[swf]是否需swap至磁碟。
:history[hi]记录所用过的:后的命令频数,默认为20步。
在.vimrc文件里 "是注释的标志,其后内容不起作用。
* 指前所綁住的字元或字元集合,出現 0 次或 0 次以上。
\+ 和 * 作用相同,但不包括出現 0 次。
\= 指前所綁住的字元恰好出現 0 或 1 次。
\| 這是多選,就是 or 的意思,被 \| 隔開的 pattern,任一個符合的話就算符合。
以下是中括号的用法,表示一个范围。
[...] 字元集合,表示中括號中所有字元中的其中一個。
[?..] 這是上述 [. . . ] 的補集,表非中括號內字元的其中一個。
. 除換行字元外的任一單一字元。
? 匹配行首,指其後綁住的字串,出現在行首才符合。
$ 匹配行尾,指其前綁住的字串,出現在行尾才符合。含換行字元。
\< 匹配字(word)首。所謂 word 包括文數字及底線。
\> 匹配字尾。這就是前所提及的限定用法
\{n,m} 指前所綁住的字元或字元集合最少出現 n 次,最多出現 m 次。n就是最小值, m是最大值。{}中若只有一个数字,则表示出现这个限定的次数。
中介字元,用来简化正则表达式的写法,如下:
\s 表空白字元,即 Space 或 Tab。
\S 表非空白字元。
\d 表數目字(digits),即 [0–9]。
\D 表非數目字,即 [^0–9]。
\w 表一般字元(word character),包括底線。即 [0–9a–zA–Z_]。
\W 表非一般字元,即 [^0–9a–zA–Z_]。
\a 表英文字母(alphabetic character),即 [a–zA–Z]。
\A 表非英文字母,即 [^a–zA–Z]。
\l 表小寫字母(lowercase character),即 [a–z]。
\L 表非小寫字母,即 [^a–z]。
\u 表大寫字母(uppercase),即 [A–Z]。
\U 表非大寫字母,即 [^A–Z]。
:g/^\s*$/d  删除空白行的意思。
:%s/^\d\d\d\d\d\d\d\d\d\>/ID:&/g  其中&代表要搜索的符合条件的内容。
\U 在 pattern 的位置的時候是指非大寫字
母的樣式,即 [?A–Z],但如果是在置換字串位置的時候是指將其後的字串通通改成大寫。
折叠:可以在可视模式下,选中行或块,然后用zf来折叠

1

 

vi, vim 使用教程的更多相关文章

  1. mac OS vi/vim 使用教程

    vi/vim 的使用 基本上 vi/vim 共分为三种模式 分别是 命令模式(Command mode) 输入模式(Insert mode) 底线命令模式(Last line mode) 命令模式: ...

  2. Linux上vi(vim)编辑器使用教程

    vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim).vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率.vi是“visual interface”的缩 ...

  3. 【转】Linux上vi(vim)编辑器使用教程

    Linux上vi(vim)编辑器使用教程 ------------------------------------------------------------ ikong ------------ ...

  4. 新手指南:Linux上vi(vim)编辑器使用教程

    vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim).vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率.vi是“visual interface”的缩 ...

  5. Vim入门教程

    尽管网上有成打的Vim在线教程,但是要么艰深晦涩,要么太过肤浅.本教程的目标让每个阶段都有斩获,从理解它的哲学(将和你终身相伴)到超越现在编辑技巧,成为其中的牛人. 简单来说,本教程的学习方式将使你终 ...

  6. Vim简明教程【CoolShell】

    vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...

  7. Vim简明教程【CoolShell】(转)

    vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...

  8. 转: vim简明教程

    vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...

  9. Vi/VIM键盘图, Vi/vim学习图

    Vi/vim学习图 引用: Vi键盘图片可视化教程 http://www.cnblogs.com/me115/archive/2010/11/16/1878295.html 网上的文章易流失.感谢分享 ...

随机推荐

  1. C#+Layui开发后台管理系统

    ​我是笑林新记,分享一下我一套C#开发的后台管理系统,希望对大家有帮助!欢迎关注微信公众号:笑林新记   后台开发语言:C# 前端框架:layui   前天用毛笔笔画制作了一个毛笔字效果的Logo,主 ...

  2. matlab图像处理程序大集合

    1.图像反转 MATLAB程序实现如下:I=imread('xian.bmp');J=double(I);J=-J+(256-1);                 %图像反转线性变换H=uint8( ...

  3. 一文告诉你Java日期时间API到底有多烂

    前言 你好,我是A哥(YourBatman). 好看的代码,千篇一律!难看的代码,卧槽卧槽~其实没有什么代码是"史上最烂"的,要有也只有"史上更烂". 日期是商 ...

  4. 接口新建学习---cookie策略

    一.为什么要添加cookie? 模拟浏览器,因为http是无状态协议,像览器一样的存储和发送Cookie,如果发送一个http请求他的响应中包含Cookie,那么Cookie Manager就会自动地 ...

  5. udp 连接

    在今天的内容里,我对 UDP 套接字调用 connect 方法进行了深入的分析.之所以对 UDP 使用 connect,绑定本地地址和端口,是为了让我们的程序可以快速获取异步错误信息的通知,同时也可以 ...

  6. Paginator Django 分页 When QuerySets are evaluated QuerySets 执行原理 QuerySets are lazy 惰性执行 访问db取数据的时机

    https://docs.djangoproject.com/en/2.2/topics/pagination/ Paginator objects¶ The Paginator class has ...

  7. 阿里巴巴微服务与配置中心技术实践之道 配置推送 ConfigurationManagement ConfigDrivenAnyting

    阿里巴巴微服务与配置中心技术实践之道 原创: 坤宇 InfoQ 2018-02-08 在面向分布式的微服务系统中,如何通过更高效的配置管理方式,帮助微服务系统架构持续"无痛"的演进 ...

  8. nginx 配置文件解读

    参考:链接 在微服务的体系之下,Nginx正在被越来越多的项目采用作为网关来使用,配合 Lua 做限流.熔断等控制 --源自 nginx Lua 脚本语言,用标准C语言编写并以源代码形式开放, 其设计 ...

  9. Linux 输入输出重定向, &>file, 2>&1, 1>&2

    Linux 输入输出重定向, &>file, 2>&1, 1>&2 一.1和2在Linux中代表什么 1.1 输出重定向 1.2 输入重定向 1.3 绑定重定 ...

  10. java中的IO处理和使用,API详细介绍(二)

    字符流 [向文件中写入数据] 现在我们使用字符流 /** * 字符流 * 写入数据 * */ import java.io.*; class hello{ public static void mai ...