vim swap file

vim中的swp即swap文件,在编辑文件时产生,它是隐藏文件。

如果原文件名是data,那么swp文件名就是.data.swp。如果文件正常退出,则此文件自动删除。

以下两种情况不会删除swp文件:

  1. Vim非正常退出,这种情况下,除非手动删除swp文件(也可以在vim提示时删除),否则它会一直存在。
  2. 多个程序同时编辑一个文件。

可以通过选项禁止产生swp文件

set noswapfile

vim 删除每行开头结尾空格

行末:$ 行首:^ 空格:\s

行末空格:\s+$ 行首空格:^+\s

有些人认为行末的空格是无用,浪费而难看的。要删除这些每行后面多余的空格,可以执行如下命令:

:%s/\s+$//

命令前面指明范围是 “%",所以这会作用于整个文件。“substitute” 命令的匹配模式是 \s\+$。这表示行末($)前的一个或者多个(+)空格(\s)。

其他删除

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
:%s/r//g 删除DOS方式的回车^M 
:%s= *$== 删除行尾空白 

:%s/^(.*)n1/1$/ 删除重复行 

:%s/^.{-}pdf/new.pdf/ 只是删除第一个pdf 

:%s/<!--_.{-}-->// 又是删除多行注释(咦?为什么要说「又」呢?) 

:g/s*^$/d 删除所有空行 :这个好用有没有人用过还有其他的方法吗?
:g!/^dd/d 删除不含字符串'dd'的行 
:v/^dd/d 同上 (译释:v == g!,就是不匹配!) 

:g/str1/,/str2/d 删除所有第一个含str1到第一个含str2之间的行 


:v/./.,/./-1join 压缩空行 
:g/^$/,/./-j 压缩空行 

ndw 或 ndW 删除光标处开始及其后的 n-1 个字符。 
d0 删至行首。 
d$ 删至行尾。 
ndd 删除当前行及其后 n-1 行。 
x 或 X 删除一个字符。 
Ctrl+u 删除输入方式下所输入的文本。 
^R 恢复u的操作 
J 把下一行合并到当前行尾 
V 选择一行 
^V 按下^V后即可进行矩形的选择了 
aw 选择单词 
iw 内部单词(无空格) 
as 选择句子 
is 选择句子(无空格) 
ap 选择段落 
ip 选择段落(无空格) 
D 删除到行尾 
x,y 删除与复制包含高亮区 

dl 删除当前字符(与x命令功能相同) 
d0 删除到某一行的开始位置 
d^ 删除到某一行的第一个字符位置(不包括空格或TAB字符) 
dw 删除到某个单词的结尾位置 
d3w 删除到第三个单词的结尾位置 
db 删除到某个单词的开始位置 
dW 删除到某个以空格作为分隔符的单词的结尾位置 
dB 删除到某个以空格作为分隔符的单词的开始位置 
d7B 删除到前面7个以空格作为分隔符的单词的开始位置 
d) 删除到某个语句的结尾位置 
d4) 删除到第四个语句的结尾位置 
d( 删除到某个语句的开始位置 
d) 删除到某个段落的结尾位置 
d{ 删除到某个段落的开始位置 
d7{ 删除到当前段落起始位置之前的第7个段落位置 
dd 删除当前行 
d/text 删除从文本中出现“text”中所指定字样的位置, 
一直向前直到下一个该字样所出现的位置(但不包括该字样)之间的内容 
dfc 删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括该字符)之间的内容 
dtc 删除当前行直到下一个字符“c”所出现位置之间的内容 
D 删除到某一行的结尾 
d$ 删除到某一行的结尾 
5dd 删除从当前行所开始的5行内容 
dL 删除直到屏幕上最后一行的内容 
dH 删除直到屏幕上第一行的内容 
dG 删除直到工作缓存区结尾的内容 
d1G 删除直到工作缓存区开始的内容  

vim 中做列插入

行首 :%s/^/your_word/ 行尾 :%s/$/your_word/

对指定列插入:

1 定位光标位置 2 ctrl+v进入visual-block模式 3 j移动光标选择列编辑行 4 I大写的i 5 输入列编辑文本 6 esc 7 保存完成

vim 列替换

文本中第1列至30列替换成“foo”: :%s/^.\{30\}/foo/g , 其中{n}表示.重复n次

将第12列至30列替换成“foo”::%s/\(^.\{11\}\).\{19\}/\1foo/g , 其中(…)是pattern的用法,后面的\1就是引用了这个pattern

将第12至20列替换为“foo”,第28至37列替换为“bar” , :%s/\(^.\{11\}\).\{9\}\(.\{7\}\).\{10\}/\1foo\2bar/g , 这里引用了两个pattern,后面分别用\1和\2来引用

vim 编辑中文

您现在的位置:首页 –> Linux –> 比较完美地解决了 vim 编辑中文的问题 比较完美地解决了 vim 编辑中文的问题

作者:Chen3feng’s space 来源: Chen3feng’s space 发布时间:2009-11-03 09:07:27 浏览(2100) 评论(0) 标签: vim 中文 欢迎您,来自Google搜索的朋友!如果喜欢,您也可以把这篇文章分享到新浪微博:,这样除了作为收藏还分享给了您的朋友!您也可以通过RSS订阅来获取我们的文章:Goolge源(推荐), FeedSky源。 祝您好运!

我刚来公司的时候,发现公司的 Linux 开发环境没有配置中文,因为绝大多数同事都是在 VC/SourceInsight/UltraEdit上编辑后sz到服务器上编译,所以没人在意这个问题。而我习惯于在 vim 下直接写代码,很不习惯,就搞了一下。

首先让 vim 支持中文,这个修改配置即可,但是没想到后来那么麻烦。

一开始尝试统一设置为 en_US.UTF-8,SecureCRT 的编码也设置为 UTF-8,vim 好了,但是 cat 和 more GB 编码的文件时会乱码。

设置为 en_US.ISO8859-1,cat 和 more 好了,vim 又不行了。

很奇怪 vim 的 fileencoding 里面设置了检测中文的选项,

set fileencodings=utf-8-bom,ucs-bom,utf-8,cp936,gb18030,ucs,big5

为什么不起作用呢?后来明白了 UTF-8 本身能够兼容中文,所以 vim 不管语言是不是中文,vim 都会进行中文的检测,而语言设置为 en_US,编码不是 UTF-8 的时候,则认为环境不支持中文,直接忽略 fileencodings 里的cp936,gb18030等中文编码。

这就好办了。

因为我们的系统大部分还都是 GB 编码,而 cat 和 more 又不会进行编码的自动识别和转换。但是 vim 会,因此就委屈一下 vim,全局依然用 GB 编码。

具体操作:

编辑 ~/.profile 或 .bashrc,加入: export LC_CTYPE=zh_CN.GB18030export LC_ALL=zh_CN.GB18030

编辑 ~/.vimrc,确认含有: set fileencodings=utf-8-bom,ucs-bom,utf-8,cp936,gb18030,ucs,big5 , OK 啦

Reference : http://edyfox.codecarver.org/html/vim_edit_tips.html