社区
Linux/Unix社区
帖子详情
VI/VIM高级技巧征集中,欢迎大家来交流,谢绝灌水!
mymtom
2010-12-13 09:20:07
加精
偶然看到2003年有这样的帖子。翻出来重贴!准备好好整理一下!
http://topic.csdn.net/t/20030429/18/1723102_2.html
:r !command
将command的输出插入到当前位置。
...全文
8160
154
打赏
收藏
VI/VIM高级技巧征集中,欢迎大家来交流,谢绝灌水!
偶然看到2003年有这样的帖子。翻出来重贴!准备好好整理一下! http://topic.csdn.net/t/20030429/18/1723102_2.html :r !command 将command的输出插入到当前位置。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
154 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mymtom
2013-09-06
打赏
举报
回复
自己总结的一些常用命令,希望对大家有用: 1. 生成TAGS使用的Makefile ======================================================================== TAGDIRS = \ dir1 \ dir2 \ file1 \ file2 tag: find ${TAGDIRS} \( -type f -o -type l \) \ \( -name "*.[ch]" -o -name "*.ec" -o -name "*.pc" \) \ > cscope.files ctags -L cscope.files \ --c-kinds=+px --fields=+iaS --extra=+q --language-force=c cscope -i cscope.files -kb ======================================================================== 2. 使用TAB的自动完成 ii - #include <> ic - #include "" ff - #ifndef #define #endif df - #define co - /* */ cc - /**< */ if - if () { } ife - if () { } else { } for - for (;;) {} while - while () {} switch - switch {} 3. 自动完成的三种方式 a. 输入标示符的前几个字符,然后按CTRL-P; b. 输入结构体变量后输入"."或者"->"会显示结构体成员; c. 输入函数名和左括号后按TAB, 显示函数参数。 4. cscope搜索 a. 查找函数(或者变量,宏定义等) :csta main |=========================================================================| |Cscope tag: main | | # 行 文件名 / 上下文 / 行 | | 1 17 vim72/runtime/doc/doctags.c <<main>> | | main(argc, argv) | | 2 1 vim72/runtime/macros/maze/maze.c <<main>> | | char *M,A,Z,E=40,J[40],T[40];main(C){for (*J=A=scanf(M="%d" | | 3 1 vim72/runtime/macros/maze/mazeansi.c <<main>> | | char *M,A,Z,E=40,J[80],T[3];main(C){for (M=J+E,*J=A=scanf(" | | 4 11 vim72/runtime/macros/maze/mazeclean.c <<main>> | | main (C) | | 5 10 vim72/runtime/tools/blink.c <<main>> | | main() | | 6 112 vim72/runtime/tools/ccfilter.c <<main>> | | int main( int argc, char *argv[] ) | | 7 39 vim72/runtime/tools/xcmdsrv_client.c <<main>> | | main(int argc, char **argv) | | 8 163 vim72/src/main.c <<main>> | | main | | 9 443 vim72/src/xxd/xxd.c <<main>> | | main(argc, argv) | | 10 17 vim73/runtime/doc/doctags.c <<main>> | | main(argc, argv) | | 11 1 vim73/runtime/macros/maze/maze.c <<main>> | |-- 更多 -- | |=========================================================================| 第三列 p 表示函数原型(protocol) f 函数定义(function) b. 查找文件 :cs find file name :cs f f name name可以是文件名的一部分部分 5. 在源码中, 光标移动至函数名或全局变量名 Ctrl-] 跳转的函数定义 Ctrl-T 返回 (可以多次) 6. 在源码中, 光标移动至文件名 gf 跳转至相应文件。 7. :ls 显示文件列表 :b1 切换到第一个文件 :b2 切换到第一个文件 8. 光标移动到函数前, :Dox 为函数添加注释 9. 拷贝粘贴 yy 拷贝一行 3yy 拷贝3行 dd 剪切一行 p 粘贴 "r3yy 拷贝3行覆盖到r寄存器 "R3yy 拷贝3行追加到r寄存器 "rp 从r寄存器粘贴 ma 设置标记a 'a 跳转到标记a y'a 拷贝当前位置至标记a的内容 d'a 剪切当前位置至标记a的内容 "rd'a 剪切当前位置至标记a的内容覆盖到寄存器r "Rd'a 剪切当前位置至标记a的内容追加到寄存器r 10. 查看寄存器内容 :reg 查看寄存器内容 说明:vi/vim 有26个命名寄存器(a-z)
shance3c
2013-06-05
打赏
举报
回复
没有可用分了,伤不起啊
灰龙001
2013-04-23
打赏
举报
回复
你们说的是文本模式下的VI么?
mymtom
2013-03-22
打赏
举报
回复
vim中快速插入本地路径 :r !echo /usr/local/apache/htdocs/tmp 路径可以用TAB补全,快速准确。
http://bbs.chinaunix.net/thread-4072033-1-1.html
wallkMan
2013-02-15
打赏
举报
回复
都是些幼儿园的小朋友学画画啊。你写一条命令,就可以看到vim的强大了。 foldvim setlocal foldmethod=expr|setlocal foldexpr=getline(v:lnum)!~'^\\s*function' foldc++ setlocal foldmethod=expr|setlocal foldexpr=getline(v:lnum)!~'^[vC]' .....用正则式可以fold任何一种代码类型
mymtom
2013-02-06
打赏
举报
回复
刚刚上传了个更新过的vim配置,Posix接口的tags更新到(IEEE Std 1003.1-2008)。
http://download.csdn.net/detail/mymtom/5038541
jimette
2012-12-21
打赏
举报
回复
对vi 感兴趣。。
max_min_
2012-09-27
打赏
举报
回复
下载ctags 和cscopes 这个两个插件,修改下配置文件。 vim就是很强大了
可以跟踪函数。宏,结构体 等的定义和调用。比较方便
对于上面说的vsp怎么用,
vs 左右分页, sp 上下分页
光标在那里 按q 退出那里,only 保留那里
还有我的vim 可以 随意选择某个单词,5种不同颜色高亮显示出来,如果的联系我, 我发配置文件。
下载一个visualmark 可以高亮显示某一行
对于折叠, 我是 set foldmethod=syntax 高亮折叠 ,同时
set foldlevel = 100 开启vim时不自动折叠
对于ctrl+z 以前一直理解为强制对于文件,后来才知道,其实是隐藏文件,之后再fg的时候就是显示隐藏文件,这个功能还是叫强大方便的(谁用谁知道啊!)
现在在上班 就说这么多了, 大家多多交流吧,强大编译环境
天才在左疯子在右
2012-09-27
打赏
举报
回复
很多快捷键值得我们牢记
Ever_lover
2012-09-25
打赏
举报
回复
插入模式下CTRl+y重复上一行,ggVG全选
jnzw1986
2011-07-15
打赏
举报
回复
《鸟哥的私房菜》这本书中有一章专门讲vi,很好很强大。很值得一看。
xiaobukuai
2011-07-05
打赏
举报
回复
mark
laoshizhuce
2011-01-06
打赏
举报
回复
[Quote=引用 140 楼 laoshizhuce 的回复:]
有人知道linux下怎么消除vim的光标闪烁吗 非GUI
网上搜索的那个方法是用于windows没问题
[/Quote]
还是没有人知道吗
linsen_519
2011-01-04
打赏
举报
回复
好贴~ 俺也出一分力!!!!!!!
打开 vi
vi file 打开或新建文件 file
vi file1 file2 ... 打开或新建多个文件
vi R file 以只读方式打开文件 file
vi r file 修复最近异常关闭的文件 file
view file 以只读方式打开文件 file
vi + file 打开文件 file ,将光标定位到文件最后一行
vi +n file 打开文件 file ,将光标定位到文件的第 n 行
vi +/pattern file 打开文件 file ,将光标定位到第一个匹配 pattern 的行
保存文件、退出 vi
:wq, ZZ, :x 保存文件,退出 vi
:w, :w! 保存当前文件, ! 表示忽略写保护
:w newfile 将文件另存为 newfile
:w %.new 将文件另存为原文件名 +.new 后缀名的文件
:20,100w newfile 将当前文件的 20100 行的内容存入新文件 newfile
:20,100w>>afile 将当前文件的 20100 行的内容追加到文件 afile 末尾
:q, :q! 不保存退出,不保存强行退出
Q 退出 vi ,进入 ex 模式
:vi 退出 ex 模式,进入 vi
:r afile 将文件 afile 的内容读入、追加到当前行下
:nr afile 将文件 afile 的内容读入、追加到第 n 行下
:e newfile 不离开 vi ,编辑新文件 newfile
:n 编辑下一个( nnext )文件(针对多文档编辑的情况)
移动光标
h, j, k, l
光标分别向左、下、上、右移动一个字符,而: 5h 光标向左移动 5
个字符
文字
w, W, b, B 光标向前、向后移动一个单词,而: 2w 光标向前移动 2 个单词
e, E 光标移到下个单词的词尾
), ( 光标移到下句、上句的句首
}, { 光标移到下个、上个段落开始之处
]], [[ 光标移到下个、上个章节开始之处
指定行号
:n 光标移到第 n 行
nG 光标移到第 n 行
G 光标移到文件末行
[CTRLG] 显示文件的总行数、当前行号、列号等信息
通过搜索定位(命令 less 同样支持)
/pattern , ?pattern 由前往后、从后往前查找 pattern
/,? 由前往后、从后往前继续上一次查找(注意与上行的操作对应)
n,N 按上一次的顺序、按上一次相反的顺序继续上次查找
行
[RETURN] 光标移到下行行首第一个非空白字符
0, $ 光标移到当前行首、行尾
^ 光标移到当前行第一个非空白字符
+, 光标移到下一行、上一行行首第一个非空白字符
n| 光标移到当前行第 n 列
H 光标移到当前屏幕第一行
M 光标移到当前屏幕中间
L 光标移到当前屏幕最后一行
编辑
i, a 在光标之前、之后插入文字
I, A 在当前行的行首、行尾插入文字
o, O 在当前行之下、之上新建一行,插入文字
修改
~ 转换光标所在位置的字符的大小写
r 替代单个字符
R 替代(覆盖)文字
cw 修改单词,如: 3cw 修改 3 个单词
cc 修改当前行
C 修改光标所在位置的字符到行尾的内容
s 替代:删除当前字符,插入新的字符
S 替代:删除当前行,插入新内容
x, X 删除光标所在位置、光标之前的字符,而: 5x 删除 5 个字符
dw 删除光标所在位置的单词,而: 2dw 或 d2w 删除 2 个单词
dd 删除当前行,而: 5dd 或 d5d 删除 5 行
D 删除光标所在位置到行尾的所有内容
复制 (yank)
yw 复制单词,而: 3yw 或 y3w 复制 3 个单词
yy 复制当前行,而: 2yy 或 y2y 复制 2 行
粘贴
p ( 小写 ) 将删除、复制的内容插入到光标所在位置之后
P ( 大写 ) 将删除、复制的内容插入到光标所在位置之前
. 重复上一次编辑命令
u, U 撤销上一次操作、恢复当前行
:d 删除行, :d 删除当前行; :12d 删除第 12 行; :5,8d 删除 58行
:m 移动行, :m12 将当前行移到 12 行下; :4m12 将第 4 行移到 12行下; :5,8m16 将 58 行移到 16 行下
:co 或 :t 复制行, :co12 将当前行复制到 12 行下; :4co12 将第 4 行复制到 12 行下; :5,8co16 将 58 行复制到 16 行下
:.,$d 删除当前行到文件末尾所有内容
:30,60m0 将第 30 行至第 60 行移动到文件头部
:.,/pattern/co$ 将当前行至下面第一个匹配 pattern 的行复制到文件末尾
样式匹配及替换
:s/pattern/newstr/
:s/pattern/newstr/g
(g :表示全部,下同 )
将当前行中第一个匹配 pattern 的字符串替换为 newstr
将当前行中所有匹配 pattern 的字符串替换为 newstr在指定范围中匹配
:5,26s/pattern/newstr/g
将 5-26 行中所有匹配 pattern 的字符串替换为 newstr
全局范围中匹配
:%s/pattern/newstr/g 将整个文件中所有匹配 pattern 的字符串替换为 newstr , % 代表所有行 (1,$)
:g/pattern/s//newstr/g 同上
:g/pattern/s/oldstr/newstr/g 在整个文件中,将匹配 pattern 的行中的所有 oldstr 替换成newstr
代码补全
: CTRL+P
与 Shell 交互
:sh 切换到 shell
^D 在 shell 环境中按 ctrlD 返回 vi
:! command 在 vi 中临时执行 shell 命令 command
:n,m! command 将 shell 命令 command 的输出替换 nm 行的内容
:r !command 将 shell 命令 command 的输出追加到当前行下
常用的设置
:set nu 显示行号
:syntax on 开启语法高亮(编辑各类代码很有用)
:set autoindent 自动缩进
:set smartindent 智能选择对齐方式
:set shiftwidth=4 缩进 4 字符
:set tabstop=4 tab 键的宽度设为 4 字符
:set softtabstop=4 移动光标时 tab 键的字符数,不影响插入 tab 键的宽度
:set expandtab 将 tab 转换成指定数量的空格
:set showmatch 高亮显示匹配的括号
如果想让这些设置能在下一次打开 vi 中使用,我们可以将这些设置写入
~/.vimrc 文件,写入文件时不要冒号( : )
laoshizhuce
2011-01-04
打赏
举报
回复
有人知道linux下怎么消除vim的光标闪烁吗 非GUI
网上搜索的那个方法是用于windows没问题
histemiss
2010-12-25
打赏
举报
回复
好大的炕啊
gettext
2010-12-24
打赏
举报
回复
normal mode:
K 字典
gg=G indent whole file
Ctrl-A 数字++
Ctrl-X 数字--
insert mode:
Ctrl-X Ctrl-F 插入文件名
Ctrl-X Ctrl-N 插入匹配的word
CTRL-K {char1} {char2} 插入一个特殊符号或digraph, 可以用:dig来显示character
其实最全最准确的是资料是vim自带的help, 按Ctrl-D会有提示
:help Ctrl-A
:help!
:help 42
萤火阳光
2010-12-23
打赏
举报
回复
进来看看
Linux-Torvalds
2010-12-21
打赏
举报
回复
[Quote=引用 65 楼 niech1112 的回复:]
vim能够自动补全么?
[/Quote]
有相应的插件。
Linux-Torvalds
2010-12-21
打赏
举报
回复
[Quote=引用 48 楼 laoshizhuce 的回复:]
引用 42 楼 laoshizhuce 的回复:
借高手问下
我在linux下总是无法安装vim的gui版本gvim,不知道是不是要装什么库
有人会吗,装了好几次了,装完后都是Normal version without GUI
[/Quote]
apt-cache search vim看看
或者
yum search vim
看看你系统源到底提供什么套件。
加载更多回复(108)
vi
m
for windows
用于windows下面的
vi
m
编辑器。 给喜欢
vi
m
的人使用。详细如下: 好吧,详细点,这里写出一些基本的命令: 【什么是
vi
】
vi
就是linux命令行下的最著名的编辑器之一,(编辑器就是类似windows记事本的功能,不过
vi
功能比记事本强大无限倍!^_^),现在实际使用的都是
vi
m
,它是
vi
的改进版本,所以现在的
vi
基本上就是
vi
m
了。 【
vi
能做什么】 第一个功能不用多说,
vi
可以编辑文本文件。至于其他的功能,多得无法列举,我只说我所知的一些典型的功能应用: (1)编辑文本文件 (2)方便地阅读程序源代码 (3)当文件目录浏览器来用 (4)提供编程、调试环境 (5)利用
vi
执行一些脚本文件(
vi
有自己的脚本文件语法) (x)等等等等...... 【
vi
的操作模式】
vi
具有两种基本模式,为输入模式(或插入模式、编辑模式)和指令模式(或命令模式)。输入模式下输入字符,文本就会显示在屏幕上;而指令模式下输入字符就解释为一个输入命令并执行,而不会显示相应的字符。理解指令模式最简单方式就是想象平时剪切、复制以及粘贴数据时所发生的情况。 使用[Esc]键可以停止当前操作(插入或者命令)重新回到指令模式,准备接受新的指令。如果本来就在指令模式下面,将会响铃一下。 【最基本的使用】 这里提供了使用
vi
得最基本的操作,能够实现大多数的编辑目的。如果你肯花几分钟把“最基本的使用”的内容都实践一下,那么你至少可以独立地在
vi
m
中
朝你想要得方向“前进”了。如果你不想学习,那么就把它当作一个“字典”吧。 *用
vi
打开一个文件: 输入“
vi
filename”. 这里,filename就是你要打开的文件的名字,默认打开文件后
vi
处于指令模式。 *进入编辑模式编辑打开的文件: 输入“i”. 或输入“a”. 进入编辑模式后,你可以直接敲入想要输入的字符到文件,两者的区别是i在当前字符前面开始插入,a在当前字符后面开始插入。 *退出编辑模式: 输入“[Esc]”. 这样,将返回指令模式,准备接收你要传达给
vi
的指令并执行,如果之前已经在指令模式下,那么系统将响铃提醒一下。 **以下命令都是在命令模式下进行: *撤销修改: 输入“u”. 这里,相比以前的
vi
来说,
vi
m
支持多步撤销。 *恢复修改: 输入“[Ctrl]r”. 这里,和撤销命令相反,是撤销的撤销,也可多步。 *复制行到剪切板: 输入“yy”. *复制选定内容到剪切板: (1)输入“v”。 (2)按方向键将高亮选择的内容。 (3)输入“y”。 这里,开始输入v使
vi
临时进入了一个"选择模式",输入方向键可以选择,输入y将选择的内容复制剪切板。 *删除行: 输入“dd”. 注意,
vi
的删除等价于剪切,删除的内容会保存到剪切板
中
。 *删除选定内容: (1)输入“v”。 (2)按方向键将高亮选择的内容。 (3)输入“d”。 这里,开始输入v使
vi
临时进入了一个“选择模式”,输入方向键可以选择,输入d将选择的内容删除。 *粘贴: 输入“p”. 这样会将剪切板的内容粘贴到光标位置或者光标下一行。 *查找字符并定位到第一个匹配处: 输入“/character”. 这里character是待查找的字符,只要先输入/,再输入待查字符,最后回车即可定位到第一个匹配的字符处。 *定位到匹配查找的下一个字符处: 输入“n”. *定位到匹配查找的上一个字符处: 输入“N”. *保存文件: 输入“:w”. 注意w前面的':',输入':'之后,
vi
m
会将':'之后的输入解释为待执行的指令。 *退出: 输入“:q”. 这里,如果文件没有保存,将提示无法退出,除非你强制退出,不保存文件,或者保存退出。 *强制退出: 输入“:q!”. *保存退出: 输入“:wq”. 或输入“ZZ”. *察看帮助 输入":help". ** 另外还有一个简易的教程: 输入命令:
vi
m
tutor.
Educoder头歌-Linux
vi
/
vi
m
编辑器
第1关:
vi
/
vi
m
基本用法 rm -fr /root/oldFile > /dev/null 2>&1 rm -fr /root/.oldFile > /dev/null 2>&1 echo "welcome to
Vi
/
Vi
m
"> /root/oldFile && echo "welcome to
Vi
/
Vi
m
"> /root/.oldFile
vi
oldFile shift + ; 输入 wq 回车 第2关:
vi
/
vi
m
头歌实验10-4:Linux
vi
/
vi
m
编辑器
实验10-4:Linux
vi
/
vi
m
编辑器
vi
/
vi
m
命令大全
前言
vi
/
vi
m
是linux
中
即强大又常用的编辑器。工作
中
,熟练掌握它的命令可以让你的效率大大提升。假如工作
中
缺少了
vi
/
vi
m
,那么生活是多么的枯燥~~~~~~~ 有关
vi
的百科介绍:
vi
文本编辑器百科 有关
vi
m
的百科介绍:
vi
m
文本编辑器百科 使用方法 下面列举一下常用的
vi
/
vi
m
命令: 插入 i 从光标当前位置开始插入 a 从光标当前位置的下一个字符开始插入 o 在光标位置的下行插入...
Vi
/
Vi
m
命令详解
VI
M
命令可以说是Unix/Linux世界里最常用的编辑文件的命令
Linux/Unix社区
23,124
社区成员
74,508
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章