显示标签为“vim”的博文。显示所有博文
显示标签为“vim”的博文。显示所有博文

2013年11月18日星期一

VIM ---- Removing duplicate lines

STEP 1:

sort all lines 

:sort u

STEP 2:

remove duplicates , the first leaves only the last line, the second leaves only the first line.

g/^\(.*\)$\n\1$/d
g/\%(^\1$\n\)\@<=\(.*\)$/d

Breakdown of the second version:

g//d <-- Delete the lines matching the regexp
\@<= <-- If the bit following matches, make sure the bit preceding this symbol directly precedes the match
\(.*\)$ <-- Match the line into subst register 1
\%( ) <--- Group without placing in a subst register.
^\1$\n <--- Match subst register 1 followed by end of line and the new line between the 2 lines



2013年11月13日星期三

vim大小写转换

vim中大小写转化的命令是
gu或者gU
形象一点的解释就是小u意味着转为小写;大U意味着转为大写.

剩下的就是对这两个命令的限定(限定操作的行,字母,单词)等等

1、整篇文章大写转化为小写
  打开文件后,无须进入命令行模式。键入:ggguG

解释一下:ggguG分作三段gg gu G
gg=光标到文件第一个字符
gu=把选定范围全部小写
G=到文件结束
2、整篇文章小写转化为大写
  打开文件后,无须进入命令行模式。键入:gggUG

解释一下:gggUG分作三段gg gU G
gg=光标到文件第一个字符
gU=把选定范围全部大写
G=到文件结束
3、只转化某个单词
guw 、gue
gUw、gUe
这样,光标后面的单词便会进行大小写转换
想转换5个单词的命令如下:
gu5w、gu5e
gU5w、gU5e
4、转换几行的大小写
将光标定位到想转换的行上,键入:1gU 从光标所在行 往下一行都进行小写到大写的转换
10gU,则进行11行小写到大写的转换
以此类推,就出现其他的大小写转换命令
gU0        :从光标所在位置到行首,都变为大写
gU$        :从光标所在位置到行尾,都变为大写
gUG        :从光标所在位置到文章最后一个字符,都变为大写
gU1G      :从光标所在位置到文章第一个字符,都变为大写

2013年10月7日星期一

VIM_开多窗口&操作

:split             当前窗口一分为二,两个窗口显示相同内容。 
:sp                split的缩写形式  
:new               split 一个新文本窗口
:vsplit 以上所有命令都适用于打开垂直分割窗口,只要在前面加v(vetical)

: vsplit file_name       打开垂直窗口2并在其中打开file_name文件
或者用 : vsp file_name   结果一样,vsp为vsplit缩写

在多窗口情况下
01# 打开文件
02:e ../myFile.pl
03
04# 显示缓存
05:ls
06
07# 切换
08:b [filename]
09:bn (n a number) move to nth buffer
10:bp previous buffer
11:bn next buffer
:set diff 此命令用于比较两个文件

2013年9月17日星期二

VIM_cursor_movement

Moving by Char
  H           J          K         L
(left)    (down)    (up)    (right)

Moving by Word
Forward:        W   to head of word
                      E    to end  of  word
Backward:      B    to head of word
                      GE   to end  of word

注释多行文本

1. 使用vim打开要操作的文件
2. Ctrl+V,进入VISUAL BLOCK模式
3. 使用上下的方向键移动光标,选择你需要注释的行
3. shift+i
4. 输入注释符号 #
5. esc,退出visual block模式,

取消注释多行文本

取消注释也类似,而且更简单一些,如下:
1. 使用vim打开要操作的文件
2. Ctrl+V,进入VISUAL BLOCK模式
3. 使用上下的方向键移动光标,选择你需要取消注释的行
3. 输入 x,删除所有的 #,同时退出visual block模式

2013年9月10日星期二

VIM_技巧_左右对齐

对齐:左对齐,右对齐,居中对齐

将指定的lines靠左对齐
: {range} left {margion}
example:
: 1,15 left     (全部贴边)
: 1, 20 left 4 (左边全部空开4格)

右:
: {range} right {margin}

中:
: {range} center

每行的行首都添加一个字符串:%s/^/要插入的字符串
每行的行尾都添加一个字符串:%s/$/要插入的字符串
% 代表针对被编辑文件的每一行进行后续操作
$ 代表一行的结尾处
^ 代表一行的开头处

2013年8月21日星期三

VIM 编辑技巧

http://hi.baidu.com/yanyulou/item/d0ccf59b87cdacdd1f427134

Basic:
:e filename          #Open filename for edition
:r filename          #读入一个文件内容,并写入到当前编辑器中 
:w newfilename       #将该编辑器中的内容写入到一个新文件中

vim 批量替换

%s/source_pattern/target_pattern/g
替换每一行所有的source_pattern为target_pattern

%s/source_pattern/target_pattern/
替换每一行的第一个的source_pattern为target_pattern

n,$s/source_pattern/target_pattern/g
替换从第n行开始到最后一行的所有source_pattern为target_pattern

n,$s/source_pattern/target_pattern
替换从第n行开始到最后一行中每一行的第一个source_pattern为target_pattern

s/source_pattern/target_pattern/g
s/source_pattern/target_pattern
替换当前行的所有/第一个source_pattern为target_pattern


批量数字操作

%s/\d\+/\=submatch(0)+1/
对每一行的第一个数字加一

:for i range(1,5)|put ='string '.i.|endfor
结果:
string 1
string 2
string 3
string 4
string 5