vim 技巧-不断增加中...
1,如何在文档中插入另一个文档
:r
2,如何把编辑的文档转换成html
:TOhtml
3,如何调用外部程序,并把输出的结果定向到一个新的文档中
:split +enew | r !
4,如何在文档中用一个单词替换不同的单词(一次替换多个字符串)
:%s/word1/|word2/|word3/newword/g #全文替换
:s/word1/|word2/|word3/newword/g #光标所在行替换
5,如何得到文件的16进制编码
:%!xxd
可以用
:%!xxd 来还原
6,显示不可见的字符
:set list
:set nolist
7,删除,复制,...到指定的位置
先指定位置
m
d
y
8,如果却掉用gvim打开事的~文件
:set nobackup
当然也可以把这一句加到~/.vimrc文件中
9,如何在插入模式下,进行命令模式下的操作
:
10,如何统一缩进的格式
indent -kr -i8n
其中的8是要缩进的半字节数
11,删除包含特定单词的行
:g/word/d
思考一下g命令的其他的用法
12,如何按一个键注释一行,一段...
map
发散开来,如何按一个(几个)键来删除/修改/匹配/补全...一行,一段等
:h map
13,如何注释掉多行(有多种方法)
1) sed -e 'n,m s/^/#/g'
2)
14,如何删除{}等括号里的行
:di{
:diB
15,关闭打开的多个缓冲区中的一个
:[N] bw
N是第几个缓冲区,更加详细的情况请见:
:h bw
16,不退出insert模式,而对文本进行操作
:
17,向打开的文件列表中加入新文件
:args
思考: 如何从列表中删除文件
18,//回车后下一行的起始处自动添加 //
/*回车后,下一行的起始处自动添加*
:set fo=r #添加
:set fo-=r #取消
19,如何去掉windows下留下的^M字符
:%s/^M$//
20,如何把光标移到函数的末尾
][
21,在函数之间跳转的快捷方式
[[ 用来跳到光标前面的一个函数开始处。
如果光标在函数体内的话,那就是所在函数的开始处。
][ 用来跳到光标后面的一个函数结尾处。
如果光标在函数体内的话,那就是所在函数的结尾处。
]] 用来跳到光标后面的一个函数开始处。
如果光标在函数体内的话,那就是下一个函数的开始处。
[] 用来跳到光标前面的一个函数结尾处。
如果光标在函数体内的话,那就是上一个函数的结尾处。
----------page 66----------
22,自动缩进的选项
set autoindent
set cindent
23,如何查看组合键的映射值
:h function_key
24,搜索高亮显示
:h hlsearch
:h nohlsearch
25,一个供参考的.vimrc
贴个vimrc供参考
set tabstop=2
set number
set autoindent
set tabstop=4
set tabstop=4
set shiftwidth=4
set incsearch
set encoding=gb2312
set fileencodings=ucs-bom,utf-8,gb2312,big5,latin1
set fileencoding=gb2312
set termencoding=gb2312
set background=dark
26,自动补全括号
:iab ( ()
详细信息请阅读:h iab
27,如何删除所有的偶数行
假设你的文本有不到 20000 行,那么输入以上的命令就可以删除所有的偶数行。
详解:h q ; h a; h @a
28,如何隔两行插入一个空格
ggqajo
详解: :h q :h a :h @a
29,
如果文件格式:
1-01......
1-02.............
1-03..
2-01.....
2-02....
.
.
.
在vim中如何实现:
1-01......1-01
1-02.............1-02
1-03..1-03
2-01.....2-01
2-02....2-02
.
.
.
: %s//(/d/+-/d/+/)/(.*/)$//1/2/1/
30,绕行设置wrap
:h wrap
31,匹配一个单词
//
32,文件编码的乱码问题
:h encoding
:h fileencoding=utf-8
33,原帖由 "weismart" 发表:
我是想在vi中对同一行不同位置的逗号做不同的替换
行1、“kk,789,中国人,日本鬼,美国佬"
行2、“test,鸡,鸭蛋,臭屁,7788“
行3、等等
对第一行这个串,我想把第一个“,”换成“‘,”,
第二个逗号换成..........
:%s//(.*/),/(.*/),/(.*/),//1/',/2/',/3/'/g
34,自动缩进的空格数设定
:h shiftwidth
35,一次注释多行
ctrl+v
I
//
36,怎么才能让vi把.sqc的文件用c的语法高亮呢?当然在打开后可以用
set filetype=c..........
在.vimrc中加入
au BufNewFile,BufRead *.sqc,*.sqf setf c
37,sbuffer
38,
简单总结一下modeline:
1、适用场合
当你想对某个文件进行特殊的设置而又不想影响其它文件,因此并不打算在
.vimrc里面修改这些设置的时候。
2、modeline有两种格式:
(1)第一种格式:
[Copy to clipboard] [ - ]
CODE:
[text]{white}{vi:|vim:|ex:}[white]{options}
[text] 随便什么文本,或者空白。
{white} 至少一个空格或tab。
{vi:|vim:|ex:} 后面三个字符串之一,"vi:", "vim:" 或 "ex:"。
[white] 可有也可无的空格。
{options} 被set的选项列表,用冒号':'分隔。
举例:
vi:noai:sw=3 ts=6
/* vim:tabstop=8:expandtabs:shiftwidth=8 */
(2)第二种格式:
[Copy to clipboard] [ - ]
CODE:
[text]{white}{vi:|vim:|ex:}[white]set {options}:[text]
[text] 随便什么本文,或者空白。
{white} 至少一个空格或tab。
{vi:|vim:|ex:} 后面三个字符串之一,"vi:", "vim:" or "ex:"。
[white] 可有也可无的空格。
set 字符串"set " (注意set后面的那个空格不可少)。
{options} 选项列表,用空格分开。
: 一个冒号。
[text] 随便什么文本,或者空白。
举例:
/* vim: set ai tw=75: */
/* vim: set shiftwidth=4 autoindent : */
3、注意:
vi:或vim:或ex:前面的那个空格不可少,这可以最大限度地避免误判。但,
vi:和vim:可以直接放在行首,而ex:不行。
4、带版本的modeline:
用法一目了然,所用数字为实际版本号乘以100。
vim600: 版本大于等于6.0
vim<600: 版本小于6.0
vim=600: 版本等于6.0
vim>;600: 版本大于6.0
5、两种格式的区别:
对于第一种格式,一旦识别,该行剩余部分都将被使用,因此,这样的写法
/* vi:ts=4: */
将因为后面的*/而出错。
而采用第二种格式就没有这个问题了,因为它将显式地以一个冒号结束。
/* vi:set ts=4: */
6、modeline写在哪儿?
vim只会在一个文件的前modelines行和后modelines行中寻找modeline命令
模式,modelines的默认值是5。
7、modeline的开关是什么?
开:set modeline
关:set nomodeline
事实上,set modelines=0 的效果和set nomodeline是一样的。
39,替换掉文件中的M控制字符
:%s/^M/回车/g
这里的^M是Ctrl + v 之后再Ctrl + m ;
这里的回车是Ctrl + v 之后再回车。
40,删除括号中的内容{},[],()
di} 或 di] 只删除括号中间的内容
da} 或 da] 连括号一起删除
diB
详解: man d
41,vsp 分割窗口后调整窗口的大小
详解: :h vsp
42, 插入换行
1,2,3,
s/,/, /g
43,如何进行快速粘贴
yM
yH
yL
*查看所有的影射的键值
:h function_key
*如何把文件反转
:g/^/m0
小结 :
(1)使用了g命令
(2)使用了m : move 命令
试想把现在的每一行都移动到文档的第一行,整个文件会怎么样。
思考:我们可以用g命令来对某些特定的行做上表记,也可以反转这些行;我们可以利用可以利用m命令来移动任意的文本,和任意位置的文本,对于我们编辑文本来说十分的方便。
*------------------------vim中寄存器的使用-------------------------
:h q
:h @
在编辑文件时我们时常会有一些重复的操作,这时就可以使用寄存器。其用法如下:
q{0-9a-z".=*} #按下q再按下{}号中的数字或字母
......一系列操作
q
N@{0-9a-z".=*} #按下n一个数值键,用来表示你想要你以前的操作执行多少次。最后一个字符是你第一次按下的键。
-----------------------------end----------------------------------
*vim中的文档排版命令
:[range]ce
:[range]ri
:[range]le
*vim大小写的变化(以下均为按键)
一个字符大小写: ~
一个单词变大小写: g~w
一行变大小写: g~g~
高亮选择的范围:{visual}~
高亮选中范围全变大写:{visual}U
高亮选中范围全变小写:{visual}u
当前行全变大写:gUU / gUgU
当前行全变小写:guu / gugu
*去掉$符号
%s//n//g
---------------------------查找相关---------------------------------
*在实用/匹配时忽略大小写
//cab #这里将匹配ab AB Ab aB 等
*匹配多个模式
//cthis /| that #匹配this或that 忽略大小写
-----------------------------end----------------------------------
*删除文件中的空行?
::g/^[[:blank:]]*$/d