VIM学习笔记(三)

VIM编辑多个文件
不管有多少个文件要编辑,都可以在vim中处理它们。可以定义一个要编辑的列表。从一个文件转到另一个文件。也可以在不同文件之间复制粘贴
1. :edit foo.txt关闭当前,打开新的
2:help E37
3.:write
:edit! foo.txt
:hide edit foo.txt
4. 
vim 1.cpp 2.cpp 3.cpp 
:next
:2next
:previous
:wnext
:first
:last
5,:args
6. :set autowrite自动存盘
7:args five.c six.c seven.h
:args *.txt
8.ctrl-^在两个文件间快速切换
9,ma与mA的差别
 :marks A
:marks  AB
10.备份
 :set backup
  :set backupext=.bak
11.保存原始版本
:set patchmode=.orig
12.使用寄存器
如果要从一个文件中复制出好几块独立的文本到另一个文件去,可以将这些独立的文本存到一个寄存器中,在这里我们只用从a到z26个字母作为寄存器的名字
“fyaw
13向文本中追加内容
:write >>1.cpp
14.只读方式运行
vim -R file
Unix默认只读
vim file
15强制性避免对文件进行修改
vim -M file
帮助文件就是这样
去掉保护 :set modifiable
:set write
16更改文件名
:edit copt.c
:saveas move.c
:file move.c

分割窗口
1.:split
该命令将屏幕分为上下两个窗口并将光标定位在上面的窗口
显示同一个文件的内容
ctrl-w w切换当前活动窗口
2.关闭窗口
:close
:quit
:ZZ
关闭除了当前
:only
3.:split two.c
:split new
:2split new
4.改变当前窗口的高度
ctrl -w +(-)
或用鼠标
5.垂直分割
:vsplit
移动窗口
:ctrl-w K
6.针对所以窗口的操作
:wall :wqall
:qall!
7.为每个文件打开一个窗口
上下
vim -o 1.cpp 2.cpp 3.cpp 
垂直
vim -O 1.cpp 2.cpp 3.cpp
8.:vertical all
9.shell命令vimdiff比较不同 
vimdiff 1.cpp 2.cpp
10.比较
:vertical diffsplit main.c
:set noscrollbind
11.折叠
zo zc
12  ]c [c
13.diffupdate
14 :dp 消除差异
15:tag :stag
16页签
:tabedit thatfile
gt (goto tab)切换
:tab split
:tab help :gt


GUI
1.:set guioptions-=T
:set guioptions+=l
2鼠标
:behave xterm
:behave mswin
点鼠标自动切换到visual
"*p "*P
3 "*指代当前选择区
“+真正的剪切
4.选择模式
:set selecmode+=mouse

 

 

命令的记录与回放
1.qa+记录+q
@a
2.重复上一个宏@@
3全局替换
:%substitute(s)/R/r/g
:%substitute(s)/R/r/c(每次询问)
:s/^the/these/首行
4.:1,5s/this/that/g
5.有一个命令在你不指定作用范围时默认是对整个文件进行操作。要使它们只作用在当前行,可以在命令前加 .
:.write otherfile
:.,$s/yes/no/
"%"等价于“.,$”
6.使用一个搜索模式来指定作用范围
:?^Chapter?,/^Chapter/s=grey=gray=g
7.使用标记
:‘t,’b
:.,.+4 5行
8.全局命令
:/g
9.插入文本
10.set shiftwidth=4
11插入现成文本
:read file
:$r 
12:.write file
:.write >>file
13要是你在键入文字的时候每行的内容能自动雕节到适当当前窗口的大小该有多好
:set textwidth=72
14.格式化文本
gqap
gggqG
15.改变大小写
guG gUG g~G g~~
16  :!调用外部程序
17.容易恢复,因为有交换文件在
18.“\<”匹配一个word的起始位置
“>\”匹配一个word的结束位置
:%s/\<four>\/4/gc
19.:s/ \([^, ]*\),\(.*\)/\2 \1/

[^,]匹配除逗号外的任何东西
* 任意次重复
,匹配,
. 任意字符
19.:source $VIMRUNTIME/...
运行插件
20.“^”这个正则表达式匹配一行的开头(包括空行也可匹配)
21.统计字数
g ctrl-G
22.消除行尾空白
:%s/\s\+$//

搜素命令和模式语言
1.忽略大小写
:set ignorecase
2.正则表达式内部的大小写
\C使大小写敏感
\c使大小写不敏感
/\Cword
/\cword
3.中断程序
unix ctrl-c
ms-dos和ms-windows ctrl-break
4搜索模式光标偏移
/default/2
5多次匹配
“*”在一个模式中表明它前面的项可以匹配任意次数
/a*
/ab* 匹配a或b
/\(ab\)* 匹配ab
/ab\+ 匹配带b的a
/ab\{3,5} 次数以外不计
/a.\{-}b    \{-}匹配它前面的尽可能少
6.多选一
在一个模式中的“或”操作符是“\|”
/foo\|bar\|two
要匹配多次,必需把整个字符串用“\("和“\)”前后括起来
/\(foo\|bar\)\+
/end\(if\|while\|for\)\
/forever\&.../e
7.匹配字符范围
/[a-z]
/[012345abc]
/ \(\d/|\l\)\
8./\a
/\f\+
:set isfname
9匹配一个断行
/the\nword
the word
匹配空格或断行
/the\_sword
_s
/the\_s\+word
10/\_.*匹配到到行尾的所有东西。这样的命令慎用,可能很慢

 

1.VC下使用nmake
:set makeprg=nmake.exe
2.ctags
3,养成习惯
4.gd
5ctrl-N 自动补全
6.tag机制可被用于文件间的跳转。通常的方法是为你正在做的项目生成一个tag文件。之后就可以在这个项目的多个文件之间自由跳转,发现函数定义,结构,类型定义typedef等等。比起你单个地搜索这些文件,可以大大节省你的时间;浏览一个项目之前第一件事要做的事就是为它创建一个tags文件
7.telnet
8.多用户
/usr/local
单用户/home/bin
和/home/shared/vim
9.make程序会运行配置程序并且进行所有必要的编译
查看makefile中对你所用的特定系统的提示
10.测试
make test
11.prefix=$(HOME)
make install
:echo $VIMRUNTIME
12.运行configure程序或修改makefile
13.打造自己的vim界面--用winmanager合并显示NERDTree和TagList


vim脚本
1.执行
:source 脚本名.vim
2
:let i=1
:while与endwhile匹配
3.:for i in range()

:endfor
4.:let可以在任意地方使用全局变量。这意味着在一个脚本
5.:let s:count=1
变量 s:count 局部于该脚本
在另一个脚本无论如何也不会触及到该变量的值
6.
b:name 局部于一个缓冲区的变量
w:name 局部与一个窗口的变量
g:name 全局变量(同样适用于函数)
v:name vim的预定义变量
7.删除变量
:unlet s:count
:unlet! s:count
8一个脚本执行完时,其中的局部变量并不会自动释放。下次执行该脚本时,还可以继续使用该局部变量
9. exist()函数检查一个变量是否已经被定义
它的参数是欲检查的变量的名字为内容的字符串,而不是变量本身
10.为了避免使用反斜杠,可以使用引号以避免作为字符串作为字符串界定符的双引号与作为字符串内容的双引号的冲突
11.双引号中的字符串就不同了。下面是一些在双引号中被另眼看待的字符序列
\t   <Tab>
\n  <NL>,断行符
\r  <CR>,<Enter>
\e  <Esc>
\b  <BS>,backspace
\"   "
\\   \,backslash
\<Esc>   <Esc>
\<c-w>     ctrl-w
12表达式还可含有以下的语素
$NAME 环境变量名
&name vim的选项名
@r  vim中的寄存器名
14:continue
跳转到loop循环的开始,循环继续
:break 向前跳转到“:endwhile”,循环中断
15 执行一个表达式
:exectue “tag”.tag_name
"."用于连接字符串“tag”和变量“tag_name”的值
:tag get_cmd
:normal gg=G
16“:execute”命令只能用于执行“冒号命令”,“:normal”使用可用于执行Normal模式下的命令
:execute “normal”.normal_commands
:execute "normal Inew text\<Esc>"

17.自定义函数
funcyion
endfunction
重新定义
function!
18
:abbrev 
:map
:execte
后面不允许有注释
不过可以
....|"...  “|”字符用于分隔多个命令
19 noremap
noremap <C-S> :updat:e<CR>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值