- 浏览: 1329781 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (732)
- Java_about (146)
- Spring_Hibernate_Struts_OpenSource (27)
- linux_unix (62)
- life_sth (22)
- js_css_html_xml_nodejs (69)
- design_pattens (1)
- Perl (8)
- php_ecshop (4)
- DB_Mysql_Oracle_Informix_SqlServer (43)
- JSTL (8)
- Testing_自动化测试 (42)
- DB_ID_UUID (4)
- SEM_SEO (1)
- english_study_improvement (4)
- SVN_Git (9)
- WebService_SOA_CloudComputing (3)
- E-Commerce (1)
- Lucene_Solr (7)
- others (2)
- Regex (2)
- tomcat_jetty (8)
- zeroc-ice (1)
- java_excel (5)
- ant_maven_gradle (5)
- Unity_VR_AR_C# (2)
- jmeter (1)
- XPath_dom4j (1)
- Ruby_and_Rails (68)
- write_a_rails (17)
- manage_and_team (1)
- getting_real (1)
- ubuntu (20)
- git_and_git_flow (7)
- TODO (1)
- PM_design (2)
- Python_and_Django (8)
- NoSql_mongo_redis (24)
- C/C++ (3)
- vi_vim_gvim (0)
- c#_.Net_windows编程_dll (10)
- Php_and_Yii (9)
- Android_IOS (31)
- Mysql (5)
- sa_运维_network_硬件 (37)
- lua (2)
- c_cpp_VisualStudio (21)
- 硬件-RM-Arduino (6)
最新评论
-
shenkun58:
...
NoClassDefFoundError: Could not initialize springframework.BeanCreationException -
liaojia1:
正解,感谢
NoClassDefFoundError: Could not initialize springframework.BeanCreationException -
flingfox63:
谢谢分享,电脑上有IPV6,导致了Guard启动不了……
ruby错误解决: Address family not supported by protocol - connect(2) -
c39274936:
s = "hello_world_ruby" ...
驼峰格式和下划线格式转换_translation between camel and snake format -
yfj300:
学习了学习了学习了学习了
硬盘基本知识(磁道、扇区、柱面、磁头数、簇、MBR、DBR)
己经常使用到的vi/Vim使用技巧整理一下,希望对大家有用:
(一) 通用操作:
1. 指令模式到输入模式指令:
a (append ) :从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。
A : 从光标所在列最後面的地方开始新增资料。
i (insert ): 从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动。
I :从光标所在列的第一个非空白字元前面开始插入资料。
o (open ):在光标所在列下新增一列并进入输入模式。
O: 在光标所在列上方新增一列并进入输入模式
s : 删除光标所在字元,并进入输入模式
S : 删除光标所在的列,并进入输入模式
2. 编辑指令
x : 删除光标所在字符。
dd :删除光标所在行。
r :修改光标所在字符,r 后接修正的字符。
R : 替换状态,新增文字覆盖原先文字,直到按 [ESC] 为止。
d 删除(delete)
y 复制(yank)
p 放置(put)
c 修改(change)
3. 移动按键
在指令模式下移动光标的基本指令是 h, j, k, l
u :恢复被删除的文字
shift + u: 恢复光标所在列的所有改变
ctrl+d: 向下半页
ctrl+f: 向下一页
ctrl+u: 向上半页
ctrl+b: 向上一页
shift+h: 移动到视窗的第一列
shift+m: 移动到视窗的中间列
shift+l: 移动到视窗的最後列
b 移动到下个字的第一个字母
w 移动到上个字的第一个字母
e 移动到下个字的最後一个字母
^ 移动到光标所在列的第一个非空白字元
$ 光标所在位置到该列的最後一个字母
0 光标所在位置到该列的第一个字母
) 光标所在位置到下个句子的第一个字母
( 光标所在位置到该句子的第一个字母
} 光标所在位置到该段落的最後一个字母
{
光标所在位置到该段落的第一个字母
'''''''' 此命令相当有用, 它移动光标到上一个标记处, 比如用 gd, * 等查找到某个单词后, 再输入此命令则回到上次停留的位置.
''''. 此命令相当好使, 它移动光标到上一次的修改行.
`. 此命令相当强大, 它移动光标到上一次的修改点.
4. 拷贝, 删除与粘贴
在 vi 中 y 表示拷贝, d 表示删除, p 表示粘贴. 其中拷贝与删除是与光标移动命令
结合的, 看几个例子就能够明白了.
yw 表示拷贝从当前光标到光标所在单词结尾的内容.
dw 表示删除从当前光标到光标所在单词结尾的内容.
y0 表示拷贝从当前光标到光标所在行首的内容.
d0 表示删除从当前光标到光标所在行首的内容.
y$ 表示拷贝从当前光标到光标所在行尾的内容.
d$ 表示删除从当前光标到光标所在行尾的内容.
yfa 表示拷贝从当前光标到光标后面的第一个a 字符之间的内容.
dfa 表示删除从当前光标到光标后面的第一个a 字符之间的内容.
特殊地:
yy 表示拷贝光标所在行.
dd 表示删除光标所在行.
D 表示删除从当前光标到光标所在行尾的内容.
关于拷贝, 删除和粘贴的复杂用法与寄存器有关, 可以自行查询.
(二) vi/vim 的设置项(输入到/etc/vimrc 或者~/.vimrc 文件中产生效果)
“双引号开始的行为注释行,下同
set nocompatible “去掉讨厌的有关vi 一致性模式,避免以前版本的一些bug 和局限
set number “显示行号
filetype on “检测文件的类型
set history=1000 “记录历史的行数
set background=dark “背景使用黑色
syntax on “语法高亮度显示
set autoindent “vim 使用自动对齐,也就是把当前行的对起格式应用到下一行;
set smartindent “依据上面的对起格式,智能的选择对起方式,对于类似C 语言编
set tabstop=4 “设置tab 键为4 个空格
set shiftwidth=4 “设置当行之间交错时使用4 个空格
set expandtab "设置tab键扩展为空格
set showmatch “设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号
set guioptions=T “去除vim 的GUI 版本中的toolbar
set vb t_vb= “当vim 进行编辑时,如果命令错误,会发出一个响声,该设置去掉响声
set ruler “在编辑过程中,在右下角显示光标位置的状态行
set hlsearch “高亮显示:
set incsearch
(三) autocmd
这个命令十分的强大, 可以用这个命令实现对不同的文件格式应用不同的配置; 可以
在新建文件时自动添加上版权声明等等. 这些命令一般定义在 ~/.vimrc 这样的配置文件
里面. 由于他很强大, 所以我不能给出很具体的说明, 只能举几个例子, 详细的请看帮助.
:autocmd! 删除所有之前的自动命令.
autocmd FileType java source ~/.vim/files/java.vim
autocmd FileType java source ~/.vim/files/jcommenter.vim
以上两条命令让我在打开 java 文件时才应用后面提到的两个配置文件.
autocmd BufNewFile *.java 0r ~/.vim/files/skeletons/java.skel
以上这条命令让我在新建 java 文件时自动加入 java.skel 文件的内容.
autocmd BufNewFile *.java normal gnp
以上这条命令让我在新建 java 文件时自动运行 gnp 命令, 这个命令进行一些特殊化
处理, 比如将新 java 文件中的 __date__ 替换成今天的日期什么的.
<< 输入此命令则光标所在行向左移动一个 tab.
>> 输入此命令则光标所在行向右移动一个 tab.
5>> 输入此命令则光标后 5 行向右移动一个 tab.
:12,24> 此命令将12 行到14 行的数据都向右移动一个 tab.
:12,24>> 此命令将12 行到14 行的数据都向右移动两个 tab.
(四) 替换
替换是 vi 的强项, 因为可以用正规表达式来匹配字符串. 以下提供几个例子.
:s/aa/bb/g 将光标所在行出现的所有包含 aa 的字符串中的 aa 替换为 bb
:s/\/bb/g 将光标所在行出现的所有 aa 替换为 bb, 仅替换 aa 这个单词
:%s/aa/bb/g 将文档中出现的所有包含 aa 的字符串中的 aa 替换为 bb
:12,23s/aa/bb/g 将从12 行到23 行中出现的所有包含 aa 的字符串中的 aa 替换为 bb
:12,23s/^/#/ 将从12 行到23 行的行首加入 # 字符
:%s= *$== 将所有行尾多余的空格删除
:g/^\s*$/d 将所有不包含字符( 空格也不包含) 的空行删除.
(五) 多文件编辑
在一个 vim 程序中打开很多文件进行编辑是挺方便的.
:sp(:vsp) 文件名 vim 将分割出一个横( 纵) 向窗口, 并在该窗口中打开新文件.
从 vim6.0 开始, 文件名可以是一个目录的名称, 这样, vim 会
把该目录打开并显示文件列表, 在文件名上按回车则在本窗口打
开该文件, 若输入 O 则在新窗口中打开该文件, 输入 ? 可以看
到帮助信息.
:e 文件名 vim 将在原窗口中打开新的文件, 若旧文件编辑过, 会要求保存.
c-w-w vim 分割了好几个窗口怎么办? 输入此命令可以将光标循环定位到各个窗口之中.
:ls 此命令查看本 vim 程序已经打开了多少个文件, 在屏幕的最下方
会显示出如下数据:
1 %a "usevim.html" 行 162
2 # "xxxxxx.html" 行 0
其中:
1 表示打开的文件序号, 这个序号很有用处.
%a 表示文件代号, % 表示当前编辑的文件,
# 表示上次编辑的文件
"usevim.html" 表示文件名.
行 162 表示光标位置.
:b 序号( 代号) 将指定序号( 代号) 的文件在本窗口打开, 序号( 代号) 是用 :ls 命令看到的.
:set diff 此命令用于比较两个文件, 可以用
:vsp filename
命令打开另一个文件, 然后在每个文件窗口中输入此命令, 就能看到效果了.
(六) 数字与命令
在 vi 中数字与命令结合往往表示重复进行此命令, 若在扩展模式的开头出现则表示行
号定位. 如:
5fx 表示查找光标后第 5 个 x 字符.
5w(e) 移动光标到下五个单词.
5yy 表示拷贝光标以下 5 行.
5dd 表示删除光标以下 5 行.
y2fa 表示拷贝从当前光标到光标后面的第二个a 字符之间的内容.
:12,24y 表示拷贝第12 行到第24 行之间的内容.
:12,y 表示拷贝第12 行到光标所在行之间的内容.
:,24y 表示拷贝光标所在行到第24 行之间的内容. 删除类似.
(七) 组合键:
ctrl+p(ctrl+n) 向上( 下) 搜索开头与其匹配的单词并补齐, 在所有这个 vim 程序中打开的文件中进行匹配。
ctrl+x+l 快速补齐整行内容, 但是仅在本窗口中出现的文档中进行匹配.
ctrl+x+f 这个命令表示补齐文件名, 如:/ho 自动匹配出/home/
abbr 即缩写. 在编辑模式中用一个缩写代替另一个字符串. 如c 中打印printf("",) ;
可用 缩写来减少敲字。在命令行输入::abbr pf printf("",); 以后在输入pf 后
再输入 (enter/tab/ 空格), 它就会自动扩展为printf("",);
(八)
添加命令:r
:r filename
该命令将filename
文件的内容自动添加到光标所在位置的后面
:r !cmd
其中cmd
是shell
命令,该指令将cmd
的结果添加到光标所在位置的后面
(九)
vi
与ctags
将Linux的vi和ctags工具结合起来使用时比较常见的。
首先需要某一个目录中,在控制终端输入:
ctags -R *
该命令在当前目录下产生一个“tags
”文件,
将该目录的文件和对应的子目录的文件的代码之间的标记关联建立起来。
然后再控制终端打开一个文件,
可以直接打开某一个标志所在的文件,
并指向这个标志:
vi -t tag (
请把tag
替换为您欲查找的变量或函数名)
,该命令将vi
直接定位到tag
标志定义的地方。
也可以通过vi filename
直接打开某一个文件。
打开某一个文件之后,在可以在vi
环境中进行相关的操作了。
Ctrl + ]
把光标移到变量名或函数名上,然后按下“Ctrl+]
”,这样就能直接跳到这个变量或函数定义的源文件中,并把光标定位到这一行
Ctrl + T
用“Ctrl+t
”可以退回原来的地方。即使用户使用了N
次“Ctrl+]
”查找了N
个变量,按N
次“Ctrl+t
”也能回到最初打开的文件,它会按原路返回 。
注意!运行vim
的时候,必须在“tags
”文件所在的目录下运行。否则,运行vim
的时候还要用“:settags=
”命令设定“tags
”文件的路径,这样vim
才能找到“tags
”文件。在完成编码时,可以手工删掉tags
文件
参考:http://blog.mcuol.com/User/wjh_84/Article/38730_1.htm O
O
O
O
O
O
在vi内部使用
:!ctags file.c 该命令将在当前目录下创建一个tags名称文档,文档中包括了file.c文档中定义的函数信息。
:!ctags *.c 创建当前目录下任何C源文档的tags文档
:tag name 能够定位到name函数定义处
发表评论
-
Linux终端复用神器-Tmux使用梳理(程序员适用)
2018-07-06 18:41 637= = = 参考: Linux终 ... -
linux下awk内置函数的使用(split/substr/length)
2018-06-14 20:02 666= = = 【转】linux下awk内置函数的使用(s ... -
awk引用外部变量
2018-06-14 19:54 1231= 对引用的文做了格式修改和字符串修正。 增加了自己的 ... -
Linux下解决高并发socket最大连接数所受的各种限制(解除IO限制)
2018-06-01 10:47 3237== = - from:Linux下解决高并发sock ... -
SSH远程会话管理工具-screen使用教程
2018-04-11 18:08 729= 朝花夕拾:screen。尤其在远程一个黑盒,不能有多 ... -
rpm命令总结-rpm常用命令-rpm安装源后怎么删除-yum安装怎么降低版本
2018-04-10 20:39 1390= = = rpm命令总结 参考:http://ma ... -
.repo文件共存与优先级,.repo文件的修改,https的repo改成http
2018-03-29 17:16 1337= .repo文件共存与优先 ... -
yum是很么?repo文件详解,epel简介,yum源的更换,repo和epel区别
2018-03-29 17:12 2484= yum是很么?repo文件详解,epel简介,yum ... -
centos_官方源、镜像源汇总
2018-03-29 16:34 1278= = 站点版 (一)、企业站 ... -
国内yum源的安装(163,阿里云,epel)
2018-03-29 16:20 959= 国内yum源的安装(163,阿里云,epel) ... -
同步文件:sersync+rsync原理及部署
2017-09-05 19:42 1258= = = 一、为什么要用rsync+sersy ... -
无人值守安装操作系统
2017-07-17 16:47 1216= 无人值守安装操作系统,对运维来说,很节约生命。 1 ... -
Linux系统下常用日志分析工具:Logcheck简介
2017-07-17 16:15 1717= = = from:http://os.51cto ... -
linux下logrotate 配置和理解
2017-07-17 16:09 987= = = 对于Linux 的系统安全来说,日志文件 ... -
centos 查看版本(转)
2016-12-23 18:58 532centos 查看版本(转) 有以下命令可以查看 ... -
wget下载https文件
2016-12-01 22:27 1659wget --no-check-certifica ... -
利用Linux命令行进行文本按行去重并按重复次数排序
2016-08-26 19:22 815利用Linux命令行进行文本按行去重并按重复次数排序 ht ... -
【Apache ZooKeeper】命令行zkCli.sh使用指南
2016-07-22 20:32 8708from:http://blog.sina.com. ... -
linux nc命令常用用法
2016-07-22 20:26 942from:http://my.oschina.net/ ... -
如何修改Linux命令提示符
2016-07-22 20:16 867无颜色常用:export $PS1="[\u@\h ...
相关推荐
10. **学习资源和社区**:作者还会介绍一些在线资源和社区,供读者进一步学习和交流Vim技巧。 总之,《Learning the Vi/Vim Editors (7th Edition)》是一本全面且深入的指南,它将带你从Vi/Vim的新手逐步成长为熟练...
提供的22个资料涵盖了vi/vim的基础到高级使用,包括书籍、技巧和配置资料,对于初学者和希望提升技能的用户非常有帮助。建议从基础操作开始学习,逐步掌握命令模式和插入模式的切换,熟悉常用的编辑命令,然后逐渐...
vim(Vi Improved)是一款强大的文本编辑器,源自早期的vi编辑器,广泛应用于Linux和Unix系统中。它以其高效、命令行操作和丰富的功能著称,是程序员和系统管理员的必备工具。本教程将涵盖vim的基础使用、进阶技巧...
**vi和vim编辑器详解** ...vi和vim编辑器因其高效和灵活性在IT行业中有着广泛的使用。熟练掌握vim不仅能提高代码编写效率,还能提升在各种环境下的适应性。不断实践和探索,你会发现vim成为你不可或缺的工具。
掌握vi/vim的使用技巧,不仅可以提高工作效率,还能在没有图形界面的环境中进行有效的文本编辑。尽管初学者可能会觉得vi/vim的学习曲线较陡峭,但一旦熟练掌握,你会发现它是一个无可替代的工具。所以,无论是对...
- 实战练习:通过实际项目来练习 vi/vim 的使用技巧。 - 社区论坛:参与 Stack Overflow、Reddit 等社区的讨论,获取帮助和建议。 - 在线课程:许多在线平台提供免费或付费的 vi/vim 教程。 通过不断实践和探索,你...
本文将详细介绍Vi/Vim编辑器的基本使用方法及常用技巧。 #### 二、Vi/Vim编辑器的模式 Vi/Vim编辑器拥有六种基本模式: 1. **普通模式**:默认启动模式,用户可以通过键盘输入编辑命令进行文本操作。 2. **可视...
《学习vi和Vim编辑器(中文版... vi或Vim,是使用Linux或Unix时的必要知识,无论使用哪种平台,《学习vi和Vim编辑器(中文版第7版)》都是基础中的基础。 《学习vi和Vim编辑器(中文版第7版)》由罗宾斯、汉娜和拉姆编著。
5. **学习路径:** 初学者通常会从基础操作开始,逐步掌握Vi/Vim的命令,然后学习使用.vimrc配置文件定制编辑器,最后可能涉及插件管理和高级技巧。 6. **实践应用:** 在Ubuntu Linux中,Vi/Vim是系统默认的文本...
本笔记将详细介绍如何使用Vi/Vim编辑器进行有效的文本编辑,覆盖基础操作、编辑技巧、命令模式应用等,旨在帮助运维人员提高Linux下文本编辑的效率。 首先,Vi编辑器分为三种模式:命令模式、插入模式和末行模式。...
Linux中的`vi`(Visual Editor)是一款强大的文本编辑器,其增强版本`vim`(Vi Improved)更是广泛被系统管理员和开发人员所使用。这款编辑器具有丰富的功能,包括在命令模式和插入模式之间切换、查找与替换、多窗口...
VI和VIM作为广泛使用的文本编辑器,在Unix/Linux环境下尤其流行。它们以其高效性、强大的命令体系以及在远程服务器上运行的特点而著称。在文件中提到的矢量图是一个特别之处,它意味着用户可以无损放大,从而在不同...
在Linux和Unix系统中,`vi`(Visual Editor)是一个非常重要的文本编辑器,而`vim`(Vi IMproved)是其增强版,继承了vi的强大功能并增加了许多现代特性。了解并熟练使用vi/vim可以极大地提升你在命令行环境下的工作...
Vim(Vi Improved)是一款强大的文本编辑器,在Linux系统中广泛使用。它基于早期的Vi编辑器,并进行了大量的增强和改进,提供了丰富的特性集,适用于程序员、系统管理员以及普通用户。Vim在命令模式下工作,通过键盘...
### Vi/Vim中文手册知识点概览 #### 一、Vi/Vim编辑器的本质与学习方法 **Vi/Vim的本质:** - **技能而非知识:** Vim的使用更侧重于技能的掌握,而非纯理论知识的学习。 - **实践重于理论:** Vim强调通过实践来...
通过学习vi/vim编辑器的基础命令和高级技巧,我们可以大大提高文本编辑的效率。无论是日常的文本处理还是编程开发工作,掌握这些工具都将使工作更加高效、便捷。希望本文提供的知识点能够帮助读者更好地理解和掌握vi...
将近三十年的时间里,vi一直... vi或Vim,是使用Linux或Unix时的必要知识,无论使用哪种平台,《学习vi和Vim编辑器(中文版第7版)》都是基础中的基础。 《学习vi和Vim编辑器(中文版第7版)》由罗宾斯、汉娜和拉姆编著。