vim作为编程ide的一些技巧

前言:

vim,这里就不介绍了,用功linux的基本都知晓了,一般我们写个小脚本的话,很多人习惯用特定的ide编辑器进行编程,如果能够熟练使用vim后,一定会让你在工作中更持续激情下去。

vim开发c

这里用vim作为c的编辑器

vim ~/.vimrc
#输入一下内容
:set number
:set sw=8
:set ts=8
:set sm
:set cin
:syntax on

然后效果是:


image.png

可以清楚的看到,vim代码风格,有行数,有颜色的特效了。
因为vim启动时会先加载~/.vimrc,所以我们加配置文件来做到。

vim一些常见命令:

这里备注一下,下面内容来自博客:
vim高级使用

1)一些常用的Vim配置,在~/.vimrc中

syntax on       支持语法高亮

set nu          显示行号
set nonu      不显示行号

set ai          设置自动缩进

set shiftwidth=4   设置自动缩进 4 个空格, 当然要设自动缩进先.

set sts=4          即设置 softtabstop 为 4\. 输入 tab 后就跳了 4 格.

set tabstop=4      实际的 tab 即为 4 个空格, 而不是缺省的 8 个.

set expandtab      在输入 tab 后, vim 用恰当的空格来填充这个 tab.

:set hls 打开搜索高亮

:set nohls 取消搜索高亮 

:set list : 显示特殊字符

:set nolist 


2)多文件编辑

:e filename  vim将在原窗口中打开新的文件, 若旧文件编辑过, 会要求保存.

:sp filename vim将分割出一个横向窗口, 并在该窗口中打开新文件.

:vsp filename vim将在右边分割出一个窗口, 并在该窗口中打开新文件.

如果:sp 或 :vsp没有指定文件,则在新窗口中打开原文件。

ctrl+w w来在vim打开的多个窗口中切换.

ctrl+w q来关闭多个窗口中当前的窗口.

 打开的两个文件上下窗口分布 : vim -o file1 file2
 打开的两个文件左右窗口分布 : vim -O file1 file2           



3) 查找

/xxx(?xxx) 表示在整篇文档中搜索匹配xxx的字符串, / 表示向下查找, ? 表示向上查找.查找到以后, 再输入 n 查找下一个匹配处, 输入 N 反方向查找.

*(#) 当光标停留在某个单词上时, 输入这条命令表示查找与该单词匹配的下(上)一个单词. 同样, 再输入 n 查找下一个匹配处, 输入 N 反方向查找. (可以使用shift+* 或 shift + #来查找当前光标所在单词)

g*(g#) 此命令与上条命令相似, 只不过它不完全匹配光标所在处的单词, 而是匹配包含该单词的所有字符串.

% 本命令查找与光标所在处相匹配的反括号, 包括 () [] { }.

在vim中一般查找 :/str,如果有空格则需要:/str str2/ 



4) 光标移动

w(e) 移动光标到下一个单词. b 移动光标到上一个单词.

0 移动光标到本行最开头. ^ 移动光标到本行最开头的字符处. $ 移动光标到本行结尾处.

向前向后翻页 ctrl+f 和 ctrl+b. 

% 跳转到相配对的括号. 

G(shift+g)   - go to the last line in the vim editor (文件的末尾) 

1G - goto line number 1(文件的开始)

20G - goto line number 20



5)拷贝, 删除与粘贴

x表示删除当前字符。 

在 vi 中 y 表示拷贝, d 表示删除, p 表示粘贴. 其中拷贝与删除是与光标移动命令结合的, 看几个例子就能够明白了.

yw 表示拷贝从当前光标到光标所在单词结尾的内容. dw 表示删除从当前光标到光标所在单词结尾的内容. y0 表示拷贝从当前光标到光标所在行首的内容. d0 表示删除从当前光标到光标所在行首的内容. y$ 表示拷贝从当前光标到光标所在行尾的内容. d$ 表示删除从当前光标到光标所在行尾的内容. yfa 表示拷贝从当前光标到光标后面的第一个a字符之间的内容. dfa 表示删除从当前光标到光标后面的第一个a字符之间的内容.

特殊地: yy 表示拷贝光标所在行. dd 表示删除光标所在行. D 表示删除从当前光标到光标所在行尾的内容.

删除整个文档 :1,$d

删除某行后面的换行符号:在命令状态下,在某一行上按"J"键将Join下一行,呵呵 

u 撤销上次的操作,ctrl+r恢复上次的撤销。 

删除所有空白行(^是行的开始,\s*是零个或者多个空白字符;$是行尾) :g/^\s*$/d



6)替换

单个字符替换用r,覆盖多个字符用R,用多个字符替换一个字符用s,整行替换用S.

:s/vivian/sky/ 替换当前行第一个 vivian 为 sky

:s/vivian/sky/g 替换当前行所有 vivian 为 sky

:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky

:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky

n 为数字,若 n 为 .,表示从当前行开始到最后一行

:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky

:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/

:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/

:2,50s/part1/part2      #用part2替换第2行到第50行中每行第1个part1

:2,50s/part1/part2/g    #用part2替换第2行到第50行中所有的part1

:.,+3s/part1/part2      #用part2替换当前行以及当前行后面的三行中每行第1个part1

:.,+3s/part1/part2/g    #用part2替换当前行以及当前行后面的三行中所有的part1 

例如将每行增加 xxx : :%s/\(.*\)/\1 xxx/g 



7)visual block状态

ctrl+v进入,列块选择,例如4l选中光标接下来的4列,7j光标开始的7行,执行4l和7j后选中7行4列的块, 也可以在ctrl+v后使用hjkl来控制选择的行和列,可以使用y,d等进行拷贝删除操作。例如删除多行前面的空格。

(块编辑:编辑一行,效果被应用到所有选中的行)例如注释多行:ctrl+v选择块后,然后I进入编辑状态在第一行的开始输入#,然后两次esc退出后,刚才选中的所有行前面自动加#,从而达到注释所有行的目的。

shift+v可以用来选中多行,然后:s/aaa/bbb/g, 对选中的行中进行替换。

shift+v选中多行后,执行d直接删除选中的多行。

[http://man.chinaunix.net/newsoft/vi/doc/visual.html](http://man.chinaunix.net/newsoft/vi/doc/visual.html) 



8) 其他

查看当前vim打开的文件:vim下:f

vim中去除空行或行末的^M:dos2unix ufile

VIM中sort不能用:只能在terminal下执行sort -u file > file_new

**vim中diff文件: 如果已经打开了一个文件,则 **:vert diffsplit file2, 如果还没有打开文件,则直接执行vi -O test_vi.txt test_vi2.txt,此时两个文件左右排列,如果需要两个文件上下排列的话,执行vi -o test_vi.txt test_vi2.txt。 vimdiff最多可以同时比较4个文件。

不退出vim,直接执行命令,例如在perl文件中,直接执行不退出,:!perl % 。 如果前面已经执行过了,则重复前面的命令时,只需要:!!


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容