请问下面这个命令中的等号是什么意思
:%s= *$== 删除行尾空白
这是vim初学者普遍感到疑惑的一个问题,为什么:s命令后有时候是”/”,有时候是”:”,还有时候是”=”甚至其它符号?
其实在vim的很多命令里,都允许用户自行定义分隔符。上面的命令等同于大家常见的:
:%s/ *//
只不过:s命令的参数分隔符由”/”变成了”=”。
但这样做有什么好处呢?
在上面的例子里你看不到把”/”换成”=”有什么好处,但如果你想替换的是”/usr/local/share/fonts/msfonts/simsun.ttc”这样的内容呢?如果你还使用”/”做为命令分隔符,你要对上面这个路径中的每一个”/”都使用”\”转义一下。但如果你用”=”作为分隔符的话,就不必如此了。
不仅仅:s命令可以这样做,其它具备多个参数的命令也可以,例如vimgrep命令。
看看vim中文手册里怎么说吧::help E146
我明白了 全文搜索…打扰了…
冒号后面的百分号干啥用的 不加它好像没啥区别?
好 谢谢!
@karl
先填充一些空格,然后用这条命令试试:
%s/^\(.*\%<17v\) */\1/g
:help /\%v
@Easwy
在vim中查找替换时,中文字符被当做一个字符,我想把它当做两个字符看待,应该怎么设置?
比如说以下两行:
运行命令:
查找7个字符,中文字符被当做一个字符宽度看待的话就没法实现:
http://www.ibm.com/developerworks/cn/linux/l-tip-prompt/tip15/
说的:6、将各字段数据左对齐
@karl
你发的命令不完整,还是不太清楚你这个需求是什么。把<替换成<后再发。
这个的原因是:我照
http://www.ibm.com/developerworks/cn/linux/l-tip-prompt/tip15/
想把有中文字符的列对齐,但查找时:执行如下:
s/^\{70}
指令,找出来的长度并不一样长
再请教博主:在vim中查找替换时,中文字符被当做一个字符,我想当做把它当做两个字符看待,应该怎么设置?
@Jason
不是调用sed实现的
在UNIX系统中很多语法看上去都很类似,这跟UNIX的发展史有关
以小弟愚见
vim中的这一类功能
应该都是调用sed实现的 所以语法也一样 sed -e ‘s/^$/d’
@伐木丁丁
不需要设置FS,vi会把s后面的那个字符当做分隔符,也就是说s后面如果是/,那么分隔符就是/,如果s后面是=,分隔符就是=
分隔符只能是单个字符,不能使用多个字符做为分隔符的。
请教一个问题。
:%s= *$== 这个命令直接就可以使用吗?要不要做类似awk的 FS之类的设置?
要不然vim怎么知道我是用/作分隔符还是用=还是:等等。
我看了一下E146。他说只要不是字母和数字,以及” | 等就可以。
问题是vim怎么识别的,会不会用 =:=:=:之类把它搞晕了。
@Easwy
搞定了,原来是编译vim72的时候采用的是 ./configure && make && make install
应该 ./configure –enable-multi_byte
谢谢指点。
今天顺便把你的教程从序言到19章全看了一遍。写的很好。非常感谢你这样热心的人。
@伐木丁丁
你知道你这个文件确切编码吗?如果知道,把fileencoding的值设成这个编码值看一看,不知道的话,你可以用:set fileencoding命令设置成各种编码值,看看在哪个值下不会出现乱码。
另外,建议把fileencodings的值调整一下,把ucs-bom放在第一位:
set fileencodings=ucs-bom,utf-8,gbk,big5,gb2312,gb18030
给出我的设置做为参考:
我的设置中前三个和你相同,第四个稍有不同
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,sjis,euc-kr,ucs-2le,latin1
@Easwy
我在 vim主页下载了vim72源码包。安装在公司机器上。安装目录是/usr/local/share/vim/vim72
并把原先的vim rpm -e 了。原先的vim在/usr/share/vim/vim64目录下面。
同样的vimrc,但是中文就变成乱码了。也非完全乱码,一个汉字接着~Q~k等等奇怪的字符,然后又是一个汉字。总之是某些汉字夹杂着许多不识别的字符。汉字都是正确的解码汉字(也就是文中原来的汉字,但是有些汉字变成了乱码)。
我反复试了
set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8
set fileencodings=utf-8,ucs-bom,gbk,big5,gb2312,gb18030
特别是第四个选项,我大小写,zh-CN.UTF-8等等,都是一样的乱码效果。
其中,我suse安装的是中文版。echo $LANG 显示zh-CN.UTF-8.
能请教一下如何处理吗?
@伐木丁丁
vim版本太低,我记得下拉菜单似乎是vim 7.0以后才有的。
另外,看看这个帮助手册:
:help ‘completeopt’
请教一个问题。
我在家里的opensuse11.0上面使用vim71的时候。
ctrl+x ctrl+n/p 能够显示粉红色的候选单词列表。
在公司的suse10上面,使用vim64.
ctrl+x ctrl+n/p 完全不显示候选单词列表。
而且明明有多个候选单词,它直接给我一个唯一匹配,其实明显不是唯一匹配。
偶尔显示多个候选单词,效果不是下拉列表形式,而是 1/2/3等的形式。
我两边的vimrc都是一样的。没有使用自加的 .vim插件。也没有设置一些特殊的vim选项(凡是设置的我自己都明白什么意思)。
这是为什么啊?
很好很强大!