目录
将CapsLock 键 改为 ESC键
原创Vim教程-01前言
原创Vim教程-02小试牛刀
原创Vim教程-03帮助(辅助)
原创Vim教程-04移动
对区域进行选择(图)
Vim教程-05小幅改动
Vim教程-06定制你的Vim
Vim教程-07编辑多个文件
Vim教程-08分隔窗口
Vim教程-09大刀阔斧
Vim教程-10灾难恢复(小专题)
教程-11奇技(技巧)
搜索命令和模式语言(小专题)
快速键入技巧(小专题)
vim折行(小专题)
将CapsLock 键 改为 ESC键
windows:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode
Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,3a,00,01,00,01,00,3a,00,00,00,00,00
MAC:
原创Vim教程-01前言
1. VIM是一种技能而不是一种知识,不要试图从本课程中获取任何什么知识.
2. 在学习VIM时,不用贪图一下全部掌握众多的精致的技巧,而是最好看一条技巧后,马上在编辑器上进行操作,这样可以建立一种自然的反射,不是由头脑来搜索应该使用哪个操作技巧.
3. Vim的目的只有一个,节省敲击键盘的次数,最好不用鼠标.
linux RedHat 5 更新vim.
概述:
想装 ctags,装不上.看到老外有篇日志,是在vi 7.2版本上运行.怕是vi版本的原因,于是想升级,网上升级的方法写得少,有的写的太无语了,只有他自己看得懂.这里,简单说下.搞半天了,终于ok.
更新vim步骤:
1.下载压缩文件:
在vim的 官网 上下载所需的版本,这里选择 vim-7.4.tar.bz2.
2.解压:
假设下好的.bz2文件放在 /mnt/hgfs/share/vi 目录中,cd到该目录下:
cd /mnt/hgfs/share/vi
解压该 .bz2 文件
tar -xjf vim-7.4.tar.bz2
之后会看到新有个 vim74/ 的目录,转到改目录下:
cd vim74/
此时会看到其下有个 configure 文件.
3.配置:
输入
./configure --prefix=/usr/local/vim72 --with-x enable-gui=gtk2 --with-features=big
4.安装:
连续输入
make
make install
5.链接:
ln –s /usr/local/vim72/bin/vim /usr/bin/vim
完毕
1. 中文帮助的手册的安装
https://sourceforge.net/
镜像源:http://sourceforge.mirrorservice.org
搜索:vim documentation chinese version
tar -xzvf vimdoc-1.9.0.tar.gz
安装:
./vimcdoc.sh -i
:help 打开帮助手册
2.中英文帮助切换
:set helplang=en
:set helplang=cn
3.帮助主题(超级链接)之间的跳转
a) ctrl + ] 跳转到当前光标所在单词的对应的主题.
b) ctrl + o 回到前一个主题.
原创Vim教程-02小试牛刀
1. Normal模式与Insert模式
Normal模式:键入的每个字符都被视为一个命令.
Insert模式:键入的字符作为实际要输入的文本内容.使用i命令(insert).
2. 现在是什么模式?
打开显示模式: :set showmode
关闭显示模式: :set noshowmode
3. 模式之灾
使用Vim经常忘记自己身在何种模式,或者不经意敲了哪个字符就切换到别的模式去了.按再次
移动光标命令:
k 上
h 左 l 右
j 下
也可以用箭头键来移动光标,会大大的降低效率.想象一下要是你在一小时内这样的做一百次会占用你多少时间?在编辑器中移动光标是十分常用的操作,这些字符在键盘上都分布在你右手周围,精心挑选的.
1. 删除一个字符命令:x
这是在追忆古老的打字机的时代,在打字机上删除字符就是用xxxx来覆盖它的.
2. 删除一行命令:dd
删除后下面的行会移上来填补空缺.
3. 删除换行符命令:J
把两行合并为一行,也就是说两行之间的换行符被删除了.
1. 撤消命令:u (undo)
如果误删了过多的内容,命令u更简便,它可以撤消上一次的操作.
撤消命令还有另一种形式,U命令,它一次撤消对一行的全部操作,即打开文件时的状态.
2. 重做命令:ctrl + r(repeat)
如果你撤消了多次,可以用ctrl+r来反转撤消的动作.换名话说它是对撤消的撤消.
1. 追加
(1) 光标之后插入文本命令:a (append)
(2) 另起一行命令:o/O
o命令可以在当前行的下面另起一行,并使当前模式转为Insert模式,而大写的O,是在当前行的上面另起一行.
i: 在光标前插入(一个小技巧:按8,再按i,进入插入模式,输入=, 按esc进入命令模式,就会出现8个=)
I: 在当前行第一个非空字符前插入;
a: 在光标后插入;
A: 在当前行最后插入;
o: 在下面新建一行插入;
O: 在上面新建一行插入;
2. 使用命令计数
指定的数字要紧挨在它所要修饰的命令前面.
假设你要向上移动9行,这可以用"kkkkkkkkk"或"9k"来完成.
a (append) 行尾追加三个感叹号,可以用a!!!另一个办法是3a!
删除3个字符可以用3x.
3. 退出
(1) 放弃编辑命令: :q! (quit)
有时你会在做了一连串修改之后突然意识到最好是放弃所有的修改重新来过,这个命令由3个部分组成:冒号,用以进入冒号命令行模式;q命令,告诉
编辑器退出;最后是强制命令执行的修饰符(!)
(2) 放弃所有修改后还想以该文件的初始内容作为开始继续编辑:e! (edit)
(3) 保存并退出命令:ZZ 或 :wq (write quit)
原创Vim教程-03帮助(辅助)
帮助文档
你想做的任何操作都可以在Vim的帮助文件中找到答案,所以不用怕问问题.
1. 打开帮助命令: :help 或
2. 打开用户手册的目录: :help usr_toc.txt
3. 常用的帮助命令的使用:
a) ctrl + ] 跳转到当前光标所在单词的对应的主题.
b) ctrl + o 回到前一个主题.
(1) 查看关于某个特殊主题的帮助 :help {subject}
:help x 关于x命令的帮助
:help deleting 关于如何删除的内容
:help index 所有Vim命令的索引
(2) 关于某个控制字符的帮助 CTRL -
:help CTRL-A
(3) 查找其它模式下的帮助
:help i_CTRL-H insert模式
:help v_CTRL-A Visual模式
:help c_CTRL-B Command模式
(4) 关于命令行选项 -subject
:help -R vim -R file.txt 以只读的形式打开文档
(5) 关于命令选项的说明 'showmode'
:help 'showmode'
(6) 特殊键用尖括号中的简单的描述性名字表示
:help i_
(7) 错误ID号的作为帮助的主题
:help E37
(8) 关于函数"subject"的帮助
:help add() //Vimscript 中使用
(9) 关于编译时特性"+subject"的帮助
:help +visual
Call Help
(10) 查找一个以"pattern"开始的帮助标记.重复按
:help pattern 按下
(11) 同时列出匹配"pattern"的所有可能的帮助主题.
:help pattern 按下
(12) 在所有帮助文件中搜索全部文本查找指定的pattern.
:helpgrep pattern
下一个匹配 :cn
前一个匹配 :cprev :cN
第一个/最后一个匹配项 :cfirst :clast
打开/关闭快速修改窗口 :copen 直接回车进行进入编辑
:cclose 关闭快速修改窗口
原创Vim教程-04移动
4.1 以word为单位的移动
w命令(word):光标向前移动一个word,光标会移动到下一个word的首字符上,同时可以加计数前缀,如3w,将光标向前移动3个word.
b命令(backward):光标向后移动到前一个word的首字符上,同时可以加计数前缀,如3b,将光标向后移动3个word.
e命令(end of word):光标向前移动到下一个word的最后一个字符上.
ge命令:光标向后移动到前一个word的最后一个字符上.
This is a line with example text.
This is-a line,with special/separated/words(and some more).
有一些被认为是non-word的特殊字符,比如"."、"-"、"/"、"(".
大写命令:W B E gE
W: 移动下一个长单词第一个字符,但忽略一些标点;
E: 移动到下一个长单词最后一个字符,如果词尾有标点,则移动到标点;
B:前一个长单词第一个字符,忽略一些标点;
gE:同 ge ,不过‘单词’包含单词相邻的标点。
备注:混合使用这几种不同的大小写命令,可以让你更快的在文本前后移动。
(: 前移1句。
):后移1句。
{ : 前移1段。
} : 后移1段。
f命令(find):向后单字符搜索命令,如fx在当前行查找下一个字符x,同时也可以使用计数命令,如3fx.
F命令:向左单字符搜索命令.
t命令(to):向右单字符搜索命令,只不过不是把光标停留在被搜索字符上,而是它之前的一个字符上.
T命令:向左单字符搜索命令.
This is-a line,with special/separated/words(and some more).
备注: 可以同时与;键来重复使用这些命令.
%命令:光标跳转到与当前光标相匹配的括号上.括号:() [] {}
if (a==(b*c)/d)
如果当前光标没有停留在一个可用的括号字符上,会向前找到第一个括号,与之匹配.
$命令:光标移动当前行行尾,与
^命令:光标移动到当前行第一个非空白的字符上.
0命令:光标移动到当前行第一个字符上,与
This is a line with example text.
nG: 到文件第n行。
G命令(go):光标定位到计数指定的行,如果没有指定计数,光标会定位到最后一行的.(头部)
gg命令:定位到第一行与1G的效果相同.(开头)
n%命令:光标定位到计数指定的行上,如50%,90%等.
CTRL+g命令:显示信息行,如行号,总行数,以及当前行在文件中的百分比.
:set number命令:显示行号.
:set nonumber命令:关闭显示行号.
:set ruler命令:显示当前光标的位置.
:set noruler命令:关闭显示当前光标的位置.
CTRL-u命令(up): 文本向下滚动半屏,窗口向上滚动半屏.
CTRL-d命令(down): 文本向上滚动半屏,窗口向下滚动半屏.
CTRL-e命令(extra): 文本向上滚动一行,窗口向下滚动一行.
CTRL-y命令: 本文向上滚动一行,窗口向下滚动一行.
CTRL-f命令(forward): 本文向下滚动一屏,窗口向上滚动一屏.
CTRL-b命令(backward): 本文向上滚动一屏,窗口向下滚动一屏.
n%命令:光标定位到计数指定的行上,如50%,90%等.
zz命令:当前行置于正中央.
zt命令(top):当前行置于屏幕顶端.
zb命令(bottom):当前行置于屏幕底端.
H: 把光标移到屏幕最顶端一行。
M: 把光标移到屏幕中间一行。
L: 把光标移到屏幕最底端一行。
1.常用命令
/string命令:向下搜索一个字符串.
?string命令:向上搜索一个字符串.
n命令:下一次搜索,可以加计数命令.
N命令:前一次搜索,可以加计数命令.
备注: . ^ ~ $有特殊的意义,需要一个反斜杠\
2.大小定问题
:set ignorecase: 开启搜索忽略大小写.
:set noignorecase: 闭关搜索忽略大小写.
3.命令历史记录
按下/来搜索,先别按回车键,上箭头键会显示你上一次进行搜索的命令.
4.在文本中查找下一个word
*命令:向下搜索下一个当前光标所在的单词.
#命令:向上搜索上一个当前光标所在的单词.
备注:\
\>:单词结束符.
\<:单词开始符.
\
6.高亮显示搜索结果
:set hlsearch(highlight search):开启高亮显示搜索结果.
:set nohlsearch(highlight search):关闭高亮显示搜索结果.
:nohlsearch :去掉当前的高亮显示.
7.调整搜索
:set incsearch :使用键入目标字符串同时就开始搜索.
:set noincsearch :关闭使用键入目标字符串同时就开始搜索.
:set wrapscan :到达文件的尾部会向另一个方向进行搜索.
:set nowrapscan :关闭到达文件的尾部会向另一个方向进行搜索.
Vim使用正则表达式进行搜索的,功能十分的强大.
1. 一行的开关与结尾
^字符:匹配一行的开头.
$字符:匹配一行的结尾.
the solder holding one of the chips melted and the
/^the / the中间的the /the$
2. 匹配任何一个字符
.字符:匹配任何一个字符
We use a computer that became the cumin winter.
com cam cum /c.m
备注:如果是特殊字符,需要反斜杠.如ter.
1. 常用命令
``命令:当使用G命令进行跳转时,回到原来的跳转位置.
跳转:包括G /与n等搜索命令,但不包括fx或tx,以及word为单位的移动命令,或者光标的移动均不包括.
CTRL-o命令(old):跳转到前一个光标停留的位置.
CTRL-i命令:跳转到下一个光标停留的位置,
以上根据jumps跳转的
:jumps命令:显示你曾经跳转过的位置.
2. 具体的命令的标记命令
m命令(mark):定义一个标记,如ms,名为s(start)的标记.
'命令:跳转到某个名字的标记.如's.
:marks :查看所有的标记
`进行此次跳转之前的跳点
' ' ``都是到上次跳转的位置.
`[ 最后一次修改的起始位置. `做上角的那个标志
`] 最后一次修改的结束位置.
对区域进行选择(图)
Vim教程-05小幅改动
5.1 操作符命令和位移
d: 删除(剪切)在可视模式下选中的文本。
d0: 删除(剪切)当前位置到行首的内容
[n] dd: 删除(剪切)1(n)行。
dgg: 剪切光标以上的所有行。
dG: 剪切光标以下的所有行。
dw命令(delete word):删除一个word,w可以看作一个word,也可以看作右移了一个word.
d4w命令:删除四个word,4w看作一次右移4个word.
d2e命令:删除2个word,光标移动到第二个word的尾部.
d$命令:删除光标到行尾. D = d$
5.2 改变文本
1. 常用命令
cw命令(change word):改变命令,与d命令类似,执行完成后会进入Insert模式,意为改变一个word.
cc命令:改变整行,保持原有的缩进.
c$命令:删除到行尾的内部,等于d$a. C = c$
2. 快捷命令
D = d$ C = c$ s = cl S = cc
删除一个字符命令:x 退格 :X
删除字符并插入:s 删除行并插入:S
3. 命令记数放在哪里?
3dw d3w 3d2w 这些有什么区别呢???
第一个数字是计数命令代表命令的重复次数,第二个数字是位移命令代表作用的范围.
4. 替换单个字符
r命令(replace):替换单个字符,你也可以使用s或cl命令来完成相同的功能,但使用r命令不需要再
Kexxxxxd not found ... press F1 to continue.
备注:r命令同样可以使用数字计数,如5rx等操作
5.3 重复改动
.命令:重复上一次做出的修改.
1. 如删除HTML语言:
To generate a table of contents.
命令 :f< 然后 df> 就可以用: ...
2. . 命令重复的是修改命令,而不是被改动的内容
xyz 1
xyz 2
cwxyz
5.4 Visual模式
1. 选择文本范围
v命令:进入visual模式,移动光标覆盖你想操纵的文本范围,最后键入操作符.
2. 选择多行
vjj命令:选择3行,可以选择多行.
3. 选择文本块
CTRL-v:进入visual块模式,以文本块为对象进行操作,常常用来编辑表格.
如欲删除Q2列,则可以把光标置于Q2的Q上后w选 ,d就可以删除Q2列了,块区域范围的调整.
4. 文本块操作
o命令(other end):会让光标置于被选中的文本的另一端,对角的位置上去,可以通过光标移动进行块的所选范围进行移动.
O命令:同一行左右两个角之间进行移动.
备注: 在visual块模式下,进行操作.
5.5 移动文本
1. p命令(put):以前通过用d或x进行删除的文本都可以用p命令来进行读取.
如:dd删除行后,将光标移动到想放入的地方然后p命令进行放入.
2. P命令:把取回的内容放在光标之前.
备注:可以与计数命令一起使用,如dd删除行之后,3p会将删除的行取回三次放在当前位置.
5.6 复制文本
1. y命令(yanking):将文本复制到一个寄存器中,用p命令取回.
备注:如d命令类似:
yw:复制一个word
y2w:复制两个word
yy:复制一整行
y$:复制光标到行尾,D或d$(删除光标到行尾的内容)类似.
Y:与yy类似,复制一整行.规律是存在例外的.
5.7 文本对象
daw命令(delete a word):删除一个单词,光标位于单词的中间而你要删除这个单词时使用的.
This is an example.
diw命令(delete inner word):删除一个单词,不删除之后的空格符.
cas命令(change a sentence):要修改一整个句子,删除之后的空格符,由Normal模式转到Insert模式.
cis命令(change inner sentence):要修改一整个句子,不会删除之后的空格符.
5.8 替换模式
Normal -> i a -> Insert -> Esc -> Normal -> V -> Visual -> R -> Replace
Normal
键入
备注:
Vim教程-06定制你的Vim
6.1 vimrc文件
如果你厌倦了手工键入常用的命令,或者要使你喜好的选项和映射一次性准备好,这时可以统统写入到vimrc(vim run command)的文件里,Vim在启动时会读取这个文件.
vimrc位置:
Unix and OS/2: ~/.vimrc
Windows : $VIM\_vimrc
在光标所在位置读取文件 :read filepath
语法高亮 :set filetype = vim
在编辑文件的时候可以使用: !shell命令 例如 : !data
6.2 vimrc示例文件
" When started as "evim", evim.vim will already have done these settings.
if v:progname =~? "evim"
finish
endif //evim已经不常用了
" Use Vim settings, rather than Vi settings (much better!).
" This must be first, because it changes other options as a side effect.
set nocompatible
//compatible 是兼容的意思
vim 是 vi 的最流行的加强版。它在 vi 的基础上增加了很多功能,但就不与 vi 完全兼容了。
set compatible 就是让 vim 关闭所有扩展的功能,尽量模拟 vi 的行为。
但这样就不应用 vim 的很多强大功能,所以一般没有什么特殊需要的话(比如执行很老的 vi 脚本),都要在 vim 的配置开始,写上 set nocompatible,关闭兼容模式。由于这个选项是最最基础的选项,会连带很多其它选项发生变动(称作副作用),所以它必需是第一个设定的选项。
请采纳
" allow backspacing over everything in insert mode
set backspace=indent,eol,start
//2.backspace有几种工作方式,默认是vi兼容的。对新手来说很不习惯。对老vi 不那么熟悉的人也都挺困扰的。可以用set backspace=indent,eol,start来解决。
indent: 如果用了:set indent,:set ai 等自动缩进,想用退格键(Backspace)将字段缩进的删掉,必须设置这个选项。否则不响应。
eol:如果插入模式下在行开头,想通过退格键合并两行,需要设置eol。
start:要想删除此次插入前的输入,需设置这个。
if has("vms")
set nobackup " do not keep a backup file, use versions instead
else
set backup " keep a backup file (restore to previous version)
set undofile " keep an undo file (undo changes after closing)
endif
//这个就是关于备份文件的 阅读一下就好了
//如何让VIM 不生成备份 文件(~文件)
设置 _vimrc
加入
set nobackup
也可以指定一个其备份的地方:
set backupdir=D:/Program/ Files/Vim /tmp
set history=50 " keep 50 lines of command line history
// :history 就可以列出输入的历史的命令
这个命令就是最多50行
set ruler " show the cursor position all the time
//一直显示光标所在的行列 右下角
set showcmd " display incomplete commands
//显示没输入完的命令
//也就是你输入一个 f就显示一个f 然后输入要查找的字符。
//就可以在右下角看到你在输入什么
set incsearch " do incremental searching
//就是你在使用 /string 的时候
// 输入到/str 边输入,结果就边高亮显示
" Don't use Ex mode, use Q for formatting
map Q gq
//映射 就是输入Q 完成gq的作用 就会进入Ex模式
//Ex模式可以一直输入一些命令
" CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo,
" so that you can undo CTRL-U after inserting a line break.
inoremap u
//也是vim的脚本,这个可以去学一下vim额脚本
" In many terminal emulators the mouse works just fine, thus enable it.
if has('mouse')
set mouse=a
endif
//有鼠标就可以使用 a是enable的意思
" Switch syntax highlighting on, when the terminal has colors当终端有颜色时,打开语法突出显示
" Also switch on highlighting the last used search pattern.同时打开高亮显示上次使用的搜索模式
if &t_Co > 2 || has("gui_running")
syntax on
" 打开语法高亮
set hlsearch
endif
" Only do this part when compiled with support for autocommands.
if has("autocmd")
" Enable file type detection.
" 'cindent' is on in C files, etc.
" Also load indent files, to automatically do language-dependent indenting.
" Put these in an autocmd group, so that we can delete them easily.
augroup vimrcEx
au!
" For all text files set 'textwidth' to 78 characters.
autocmd FileType text setlocal textwidth=78
" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid or when inside an event handler
" (happens when dropping a file on gvim).
autocmd BufReadPost *
\ if line("'\"") >= 1 && line("'\"") <= line("$") |
\ exe "normal! g`\"" |
\ endif
augroup END
else
set autoindent " always set autoindenting on
endif " has("autocmd")
" Convenient command to see the difference between the current buffer and the
" file it was loaded from, thus the changes you made.
" Only define it when not defined already.
if !exists(":DiffOrig")
command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis
\ | wincmd p | diffthis
endif
if has('langmap') && exists('+langnoremap')
" Prevent that the langmap option applies to characters that result from a
" mapping. If unset (default), this may break plugins (but it's backward
" compatible).
set langnoremap
endif
" Add optional packages.
"
" The matchit plugin makes the % command work better, but it is not backwards
" compatible.
packadd matchit
6.3 简单的映射
一个映射可以把一连串Vim命令用一个按键来表示. 如:用一个功能键或字符串,将某个word单词,变成{word},可以使用:map命令.
:map
:map \abc i{
{amount}
6.4 选项窗口
:options命令:在帮助主题中寻找或设置相应的选项.
" Each "set" line shows the current value of an option (on the left).
" Hit
" A boolean option will be toggled.
" For other options you can edit the value before hitting
" Hit
" Hit
" Hit
:set all命令:查看所有的设置选项.
6.5 常用选项
:help 'wrap' :查看某个选项的帮助.
:set shiftwidth& :shiftwidth修改为默认值8.
set nowrap :不要折行.
set sidescroll=10: 一行占满了后,还查看,自动左右滚动10个字符.
set whichwrap=b,s :跨行移动命令
set whichwrap=b,s,<,> :跨行移动命令 智能上上下下
set whichwrap=b,s,<,>,[,] :跨行移动命令 智能上上下下 Insert模式下,也能如此.
set list :show
set listchars=tab:>-,trail:-,eol:$$ :修改样式
set iskeyword=@,48-57,_,192-255 :关键字默认字符要求 @:代表所有的字母;48-57 ASCII从48>到57 即0到9;192-225 可以打印的字符;
set iskeyword+=- :增加连词符
set iskeyword-=- :去掉连词符
fdafd-fdasfdasfs
set cmdheight=3 :number of lines used for the command-line 命令行高度.
6.6 使用高亮
:syntax enable:打开语法支持
:set filetype=c :改变当前文件所属类型.
:set filetype=java
:set filetype=vim
:syntax clear 关闭当前高亮.
:colorscheme evening:打开不同的颜色主题.
Vim教程-07编辑多个文件
7 编辑多个文件
7.1 编辑另一个文件
:edit filename.txt :编辑另一个文件
:edit! filename.txt :强制编辑另一个文件,不进行保存当前缓冲区的内容.
:hide edit filename.txt :隐藏缓冲区内容,直接编辑另一个文件,但此时不保存当前的文件.
7.2 文件列表
(1) 打开多个文件
vim note05.txt note06.txt note07.txt
(2) 文件列表——当前在编辑哪个文件???
:args命令(arguments):显示当前的文件列表,当前文件以[]括起来.
(3) 文件列表中的切换
:next命令 :打开编辑下一个文件.
:next!命令 :强制打开编辑下一个文件.
:wnext命令 :完成两个单独的命令 :write :next
:previous命令 :打开编辑上一个文件.
:wprevious命令 :保存当前文件,打开编辑上一个文件.
:last命令 :打开最后一个文件,wlast命令.
:first命令 :打开第一个文件,wfirst命令.
:2next命令 :使用计数命令,向前跳过两个文件.
(4) 自动保存
:set autowrite :在不同的文件转移时,不需要每次都执行write命令.
:set noautowrite :关闭自动保存.
备注:与word自动保存不同的,过一段时间会自动保存,指某个事件发生时自动保存这个文件.
(5) 编辑另一个文件列表
:args note01.txt note02.txt note03.txt
:args *.txt :支持通配符.
(6) 最后文件了吗???
当你有一个列表文件要编辑时,Vim会假设你要全部编辑它们.如果你要退出,需要再执行一次退出命令.
切换到另一个文件
1. CTRL-^:两个文件之间快速的切换.
:args note01.txt note02.txt note03.t xt
:next或previous之后,可以使用这个命令非常方便的在两个文件中进行切换.
2. 多个文件之间的标记
(1) 全局标记: 使用大写字母命名标记.
如:note06.txt 50% mM note07.txt G mB
'或`命令进行跳转到自定义标记的位置.
备注:如果你删除了局部标记所在的行,也就相当于删除了这个局部标记.
与全局标记不同,全局标记会一直存在下去.
(2) 预定义的标记
`":关闭文件时的光标的位置.
`.:文件最后一次修改的地方.
备注:在多文件中也可以使用CTRL-o CTRL-i两个同样试用.
7.4 备份
:set backup :生成备份文件,文件名为原文件名加一个~.
备注:ZZ进行退出,是不能生成备份文件的,需要使用:write
:set backupext=.bak :修改生成一个名为原文件名加.bak的备份文件.
:set patchmode=.orig :保存一份修改前的原始文件作为副本,同时后缀为.orig.
7.5 在文件间复制粘贴
1. 简单的复制粘贴
:edit thisfile.txt
/This
vjjj$y
:edit otherfile.txt
/There
p
2. 使用寄存器
复制多个独立的文本到另一个文件中时,这时可以使用寄存器,使用a到z的字母作为寄存器的名字.
CTRL-v jjj$ "b y :把一个文本 块复制到名为b(block)的寄存器中.
"f yas :把一个句子复制到名为f(first)的寄存器中.
"l 3Y :把3个整行的内容复制到名为l(line)的寄存器中.
"b p :取出寄存器b中的内容文本.
"w daw :删除一个word并将其存入名为w(word)的寄存器中.
3. 向文件中追加内容
:read note06.txt :向当前文件进行追加note06.txt文件内容.
:write >> note06.txt :将当前文件追加到文件名为note06.txt文件中去,只能追加到文件的最后.
:write logfile :将当前文件写入到logfile中去
备注:Visual模式下也可以进行选择要写入的文本.
7.6 查看文件
vim note07.txt :直接打开编辑文件,可以读写.
vim -R note07.txt :以只读的方式打开该文本.
view note07.txt :以只读的方式打开该文本.
vim -M note07.txt :强制性地避免对文件进行修改,其中的-M选项告诉Vim工作于viewer模式中. 只能看
:set modifiable 可以进入到编辑模式
:set write 可以保存了
7.7 更改文件名
:write filename :将当前文件写入到新的文件中去.
:saveas filename :将当前文件进行另存为操作.
:file filename :与saveas功能相似,也可以实现文件名的更改.
Vim教程-08分隔窗口
8. 分隔窗口
分隔窗口:将一个窗口分隔成多个窗口的过程,优点在于可以同时显示或编辑多个文件,或者可以显示或编>辑同一个文件的不同置.
8.1 分隔一个窗口
:split命令 :将屏幕分 成上下两个窗口,并将光标定位在上面的窗口中.
CTRL-w w命令(window) :切换当前活动窗口,与CTRL-w CTRL-w命令功能相同.
:close命令 :关闭当前活动窗口.比如:quit或ZZ均可以关闭当前窗口,但是其优点在于可以阻止你关闭最后一个窗口,不会意外的将Vim退出.
:only命令 :关闭除当前窗口外的所有其它的窗口.
8.2 为另一个文件分隔出一个窗口
备注: 可以重复的使用:split或:new命令打开任何你喜欢的窗口数目.
8.3 窗口的大小
:3split note.txt :高度为3的新窗口,名为note.txt的文件.
CTRL-w(window) + :窗口高度增加1行.
CTRL-w(window) - :窗口高度减小1行.
备注: 可以增加计数命令,如4CTRL-w -,一次减少4行.
{height}CTRL-w _ :窗口高度指定为一个固定的height.
备注: 不指定高度时,默认让窗口达到它的最大的高度.
:set mouse=a :打开鼠标支持.
常用选项:
winminheight :强制窗口的最小高度.
winminwidth :强制窗口的最小宽度.
equalalways :自动让所有窗口均摊屏幕上可用的高度和宽度.
8.4 垂直分隔 vertical
1. 常用命令
:vsplit otherfile :垂直打开第二个窗口同时在新打开的窗口中开始编辑.
:vnew :垂直打开一个新的窗口并开始编辑一个空的缓冲区.
2. 切换窗口
CTRL-w h :切换到左边的窗口
CTRL-w j :切换到下边的窗口
CTRL-w k :切换到上边的窗口
CTRL-w l :切换到右边的窗口
CTRL-w t :切换到顶部的窗口 top
CTRL-w b :切换到底部的窗口 bottom
8.5 移动窗口
CTRL-w H :向左移动窗口
CTRL-w J :向下移动窗口
CTRL-w K :向上移动窗口
CTRL-w L :向右移动窗口
8.6 针对所有窗口操作的命令
1. 常用命令
:qall :quit all 关闭所有的窗口.
:wqall :write quit all 保存所有窗口内容并关闭窗口.
:qall! :quit all ! 强制关闭所有的窗口,不为文件保存.
2. 为每一个文件打开一个窗口
vim -o *.txt :水平打开多个文件,并且为每个文件打开一个窗口.
vim -O *.txt :垂直打开多个文件,并且为每个文件打开一个窗口.
:all命令 :将文件列表中的所有文件,各打开一个水平窗口进行显示或编辑.
:vertical all命令 :将文件列表中的所有文件,各打开一个垂直窗口进行显示或编辑.
8.7 使用vimdiff查看文件的区别
vimdiff:是Vim的另一种特殊的启动方式,可以显示文件的不同之处.
1. 常用命令
vimdiff file1.txt file2.txt :以diff模式打开这两个文件进行比较.
:vertical diffsplit test.txt~ :可以运行Vim之后进行比较两个不 同的文件.
:set scrollbind :打开同步滚动,通常这个选项是默认开启的
]c与[c命令 :跳到下一个或上一个两个文件的不同的地方.
2. 消除差异
:diffupdate :重新比较两个文件,更新差异,主要用于修改文本之后.
dp命令 :diff put 将当前窗口不同的内容放到另一个窗口中.
do命令 :diff obtain 从另一个窗口中对应的位置上取来了差异的内容.
8.8 页签
页签:解决平铺在显示屏幕上窗口不够用的问题.
CTRL-w T :将当前活动窗口以页签的形式显示.
:tabedit note07.txt :以页签的形式显示note07.txt文件
gt命令(goto tab) :转到下一个标签页,最后一个标签页的话回到第一个.
gT命令(goto tab) :转到上一个标签页,第一个标签页的话回到最后一个.
{count}gt :转到第count个标签页,首个标签页的编号为1.
:tabonly命令 :会关闭除当前页签之外的所有页签.
8.9 其它
CTRL-w CTRL-^命令:分隔出一个窗口来编辑前一个文件.
常用选项:
scrollbind :打开同步滚动,通常这个选项是默认开启的.
laststatus :0: 永不 1: 只有在有至少两个窗口时 2: 总是
splitbelow :用来控制新打开的窗口出现在当前窗口的下面.
splitright :用来控制新打开的窗口出现在当前窗口的右边.
Vim教程-09大刀阔斧
9.1 命令的记录与回放
1. 操作步骤
a. q{register}命令: 将后续的动作记录到名为{register}的寄存器中,其中给出的寄存器名字>必须是a到z之间的一个字母.
b. 执行你要执行的操作,按下q以结束对命令的记录.
c. @{register}命令:执行刚刚记录下来的宏.
2. 举个例子
#include "stdio.h"
#include "fcntl.h"
#include "unist.h"
#include "stdli.h"
详细的操作步骤:
qa :开始将后续的命令记入到寄存器a中.
^ :将光标移到行首.
i#include "
$ :将光标移动到行尾.
a.h"
j :移动到下一行.
q :停止记录.
@a :执行记录的宏,可以加计数命令,3@a.
@@ :重复上一次宏的命令.
3. 编辑宏的内容
a. "ap命令 :显示宏的内容
b. "ad$命令 :将编辑好的宏的内容再一次的放入寄存器中.
c. qA命令 :向寄存器a中追加内容.
9.2 替换
1. 通用形式
:[range]subtitute/from/to/[flags] :对一个指定的范围执行替换操作,range指范围,from被替
换的内容,与搜索命令所用的正则表达式类似,to替换为的内容,flags指一些常用的标记.
如:s/the /these /g
如:s/one\/two/one or two/g
s=one/two=one or two=g 功能一样.
2. 常用选项
range :作用范围,range=% 范围为所有行,而缺省只作用于当前行.
flags :标记,flags=g (global) 将改变一行所有符合目标字符串的全部字符进行替换.
flags=c (confirm):在执行每个替换前请求用户确认
y 好吧,yes 直接进行替换
n 不,no 先留下
a 全部,all
q 退出,quit
l 把现在这个修改结束后进行退出,last
CTRL-E 向上滚屏一行
CTRL-Y 向下滚屏一行
9.3 命令的作用范围 range的范围
:45,49s/this/that/g :对第45行到第49行的文本执行替换操作.
:33s/this/that/g :对指定行进行替换操作.
:.,$s/this/that/g :当前行到最后一行范围,如%=1,$.
:?^Chapter?,/^Chapter/s=this=that=g :使用搜索模式来指定作用范围.
:?^Chapter?+1,/^Chapter/-1s=this=that=g :增与减行的范围操作.
:.+3,$-5s/this/that/g :将当前行的下三行到倒数第六行的作用操作.
:'t,'bs/this/that/g :使用标记确定操作范围.
:'<,'>s/this/that/g :Visual模式确定的范围.
:'>,$s/this/that/g :从上一次Visual模式时选定的文本区域的结束处到文本尾的这样区域
:.,.+4s/this/that/g :.代表当前行到.+4从当前行到向下的4行,一共5行.
9.4 全局命令
:[range]global/{pattern}/{command} :找到符合某个匹配模式的行,然后将命令作用于这些行上,全局命令的默认作用范围是整个文件.
:g=//=s/foobar/barfoo/g :整个文件中包含//的行,进行替换操作.
:g=//=d :整个文件中包含//的行,进行删除操作.
9.5 Visual Block模式
1. 插入文本
Istring
Astring
2. 改变文本
cstring
Cstring
3. 改变文本在大小写
~ :交换大小写 (aBc->AbC)
U :将小写变大写 (abc->ABC)
u :将大写变小写 (ABC->abc)
4. 填充命令
rx命令: 以字符x进行文本块的填充操作.
5. 左右移动
<命令 :会使你的文本向左移动一个shift单位.
>命令 :会使你的文本向右移动一个shift单位.
:set shiftwidth=4
6. 将多行内容粘接起来
J命令 :使文本块纵跨的所有文本被连接为一行.
gJ命令 :如果你想保留那些前导空白和后缀的空白时,可以使用.
9.6 读写文件
1. 读取文件
:read filename :读入文件的内容放在当前行.
:$read filename :追加到文件的最后.
:0read filename :把文件放在第一行的上面.
:80read filename :把文件放在指定行的上面.
2. 写入文件
:write filename :没有指定一个范围时该命令将写入整个文件的内容.
:.,$write filename :当前行到文件尾的内容写入文件,如果文件存在则失败.
:.,$write! filename :强制当前行到文件尾的内容写入文件,会进入覆盖操作.
:.write filename :将当前行写入文件中.
:.write >> filename :将当前行的内容追加到文件中.
9.7 格式化文本
:set textwidth=72 :键入文字的时候每行的内容能自动调节到适应当前设置的宽度,每一行都>会自动调整到只包含最多72个字符,Vim进行格式化时不会打断你的单词.
:gqap :gq为Vim的一个格式化操作符,ap是一个本文对象,a paragraph.
:gg gqG :格式化整个文件的内容.
:gqgq :格式化当前行,可以与.重复命令一起使用.
:gqj :格式化当前行和它下面的一行.
9.8 改变大小写
guw命令 :gu是变小写的操作符,w是位移.
gUw命令 :gU是变大写的操作符,w是位移.
g~w命令 :将字母的大小写进行反转,大写变小写,小写变大写.
gugu命令 :使一整行变为小写,简写为guu,同理gUgU gUU g~g~ g~~.
9.9 使用外部程序
sort < input.txt > output.txt
!5Gsort :!过滤操作符,5G为移动命令,决定了将哪个区域送到过滤程序中.
!!date :!!命令过滤当前行,date命令显示当前时间.
:read !ls :读取当前目录下的内容.
:write !wc :将文本写入一个命令wc中,wc命令是统计行数,单词数,字符数.
Vim教程-10灾难恢复(小专题)
CTRL-z 挂起文件 就会出现swap的文件
10.1. 常用命令
vim -r :显示交换文件位置与信息,是否修改过,是否有另一个进行在对其进行修改.
vim -r note10.txt :打开并恢复文件.
:recover :恢复文件的内容.备份文件
:write note10.txt.recovered :另存为操作.
10.2. 选项对话框
O 以只读的形式打开文本
E 编辑 :原来的。中断之前改的不显示
R 从交换文件中恢复 :恢复备份文件。也就是中断之前,备份的
Q 退出
A 丢弃
D 删除交换文件
10.3. 常用选项
updatecount :连续击键多少次后做一次同步.
updatetime :多长时间之后做一次同步操作.
教程-11奇技(技巧)
11.1 替换一个word
1. 命令格式
:s/\
指示一个word的结束位置.
2. 替换多个文件中的目标
vim *.tst :指定要编辑的文件列表
qq :开始宏记录
:%s/\
:wnext :保存第一个文件并转到下一个文件进行编辑
q :停止宏记录
@q :执行宏操作
999@q :对其余的文本执行同样的操作.
:%s/\
11.2 将Last,First改为First Last
:%s/\([^,]*\),\(.*\)/\2 \1/
\([^,]*\),\(.*\) :from 第一个部分位于\( \)之间,对应Last,\( \)匹配的是除逗号外的任何>字符[^,]*,任意重复*进行匹配,","匹配逗号,而第二个部分位于\( \)之间,对应first的内容,其中的内容.*,"."任意字符,*任意重复次数.
\2 \1 :to 这在Vim中被称为反向引用,它可以用来指代前面出现的\( \)的内容.\2指代第二个\( \)中匹配的内容,也就是First的内容,\1则指第一个\( \)中匹配的内容,即Last的内容.
11.3 排序
:read !ls //读取文件夹下文件的名字
:22,32 !sort -r 对文件名进行排序.
11.4 反转行序
:35,46global/^/m 35
11.5 统计字数
:write !wc 统计字数
g CTRL-g 来统计一下目前已经写了多少字数
11.6 查找帮助页
K命令: Vim会对光标所在的词执行man程序.
cp strstr
加载Man插件: source /usr/share/vim/vim74/ftplugin/man.vim
\K命令: 对光标所在的词执行man程序,水平分隔窗口进行帮助显示.
11.7 消除多余空格
1. 多余空格行
:%global/^\s*$/d
2. 多余空格内容
:%substitue/\s\+$//
\s\+$
\s 匹配任何空白字符,包括空格,制表符,换页符等.
\+ 匹配前面的子表达式一次或多次
* 匹配前面的子表达式零次或多次
11.8 查找一个word在何处被引用
vim `grep -l TNT *.tst` :编辑那些包含了某个词的所有文件,切换的方法:n :N :last :first.
:copen :cclose :cn :cN 同样可以实现不同文件之间的切换.
:grep TNT *.tst :查找每一行,打开匹配的第一个文件并将光标置于第一个包含这个词的文件.
搜索命令和模式语言(小专题)
12. 1忽略大小写
1.常用选项
:set ignorecase :忽略大小写
:set noignorecase:关闭 忽略大小写
:set ignorecase smartcase :智能忽略大小写,至少包括一个大写字母时,整个搜索就会变成大小写敏感的.
2.正则表达式内部的大小写
\c+要查找的字符串:大小写不敏感.
\C+要查找的字符串:大小写敏感。
优点:搜索命令历史列表中调出它们时,还可以精确地使用大小写敏感或不敏感,而不管当前ignorecase选项的属性设置.
12.2 绕回文件头尾
:set nowrapscan : 不循环搜索
12.3偏移
1.增加搜索偏移量
include/2 :光标置于查找内容的第二行,正向下,负向上.
2. 微调查找到结果时的光标位置
/include/e : 光标置于目标字符串的最后一个字符.
include/e+1 光标置于且标字符串的最后一个字符+1的位移,正向右,负向左.
include/b+1 :光标置于目标字符串的第一个字符+1的位移,正向右,负向左,
输入/include /+2
12.4多次匹配
1.常用命令*+()=
/a* :可以匹配任意次数,包括0
/a\+ :可以匹配重复1次或多次
/\(ab\)\+ :可以匹配括号内的内容1次或多次.
/boys\= : 可以匹配一个可有可无的项.
2. 指定重复次数
/ab\{3, 5\} : 重复3次到5次.
/ab\ {, 5\}\ :重复0次到5次
/ab\ {2, \} :重复2345次.
/ab\{0, 1\} :重复0次或1次与三的功能一样了.
/ab\{0, \} :重复0次或多次与*的功能一样了.
/ab\ {1, \} :重复1次或多次与+的功能一样了.
/ab\{3\} :重复3次
3.贪婪与懒惰模式
/ab\ {1, 3\} 尽可能多的匹配,贪婪的思想 默认的模式
/ab\{- 1, 3\} 尽可能少的匹配, 懒惰的思想
12.5多选一
/ foo\ | bar :两者选择其中一个,可以多个进行串联
/\(foo\ |bar)\+ :多次重复选择.
/end\(if\|while\I for\) : 匹配endif endwhile endfor
12.6 字符范围
/[a-z] 26个字母中的一个字母
/[0123456789abcdefj] :指定一个字符列表
/[0-9a-f] :指定一个字符列表
/"[^"]*” :非操作,匹配双引号中的内容,包括其本身
12.7常用的字符集
/\a :所有的字母字符 [a-zA-Z]
/\d :所有的数字 [0 9]
/\x:所有的十六进制数 [0 9a fA-F]
/\s :所有的空白字符
/\l :所有的小写字母 [a z]
/\u :所有的大写字母 [A- Z]
12. 8匹配一个断行\n \s
/the\nword :匹配一个直接断行
/the\_s\+word :匹配一个空白或断行
12.9 例子美国车牌
1 MGU103
\d\u\u\u\d\d\d
\d\u\ {3\}\d\ {3\}
[0 9][A Z]\{3\}[0- 9]\ {3\}
快速键入技巧(小专题)
1.1命令行编辑
1.2命令行的补全
CTRL-D:显示候选列表
1.3命令行历史记录
: history
查看所有的历史记录.
1.4自动补全
CTRL-N:往回找补全内容 Next
CTRL-P :往后找补全内容 Previ ous
1.5补全特殊的文档元素
CTRL X CTRL-F : 文件名补全,如: /workspace/vim/notel3. txt File
CTRL X CTRL-L :整行内容
1.6缩写abbreviate
: iabbrev :i表明这是一个用于Insert模式下的缩写
: cabbrev :c表明这是一个用于Command模式下的缩写
:unabreviate Sop :移除当前的一个缩写
: abclear :移除当前的所有的缩写
1.8编辑表格
1.虚空白
set virtualedit=all :进行 虚空白状态 随便移动光标
1.9 Visual模式的重复
gv命令: 再次选定同一个文字对象,方便快速重复选择区域
1.10控制数字增减
CTRL A:当光标在指定的数字上后,当前数字会加1.
CTRL X:当光标在指定的数字上后,当前数字会减1.
CTRL- S:锁屏
CTRL-Q:恢复正常
vim折行(小专题)
1.折行
1.1手工折行
zf 创建折行
zfap对一个段落进行折叠
zo 打开折行
zc关闭折行
zd删除当 前行的折叠
1.2根据缩进进行折行
:set tabstop=4:4个字符tab键的宽度
:set foldmethod=indent:根据缩进折行
:set cindent shiftwidth=4 : 以程序的缩进
1.3折行嵌套
zR打开多个层次的折行
zM关闭多个层次的折行
1.4常用格式化方法
==:自动缩进的功能