vim正则表达式
限定几行到几行之间的字符串匹配替换:
:10,13s/cross_compile/CROSS_COMPILE/g
第10行到第13行匹配字符替换。
元字符 说明
:s/\(\w\+\)\s\+\(\w\+\)/\2\t\1 将 data1 data2 修改为 data2 data1
vim使用疑问解答:
Q:vim如何支持ftp操作:
A:打开 :e ftp://192.168.10.76/abc.txt
保存(如果不存在则创建) :w ftp://192.168.10.76/abc.txt
读取 :r ftp://192.168.10.76/abc.txt
以上操作第一次打开时需要输入用户名和密码,以后就不用了,
Q:vi 处理多个文件编辑有什么法子?
A:1) vi file1 file2 file3...
2) 假设你正在编辑 file1,那么用 :args <CTRL-R>;% file2 file3
Q:如何删除连续两行之间的回车符,使连续的两行成为一行?
A:Jx
Q:怎么将一定段落中的某个词替换成另一个词啊?
A:替换用 s/abc/def/ 这样,就可以把 abc 换成 def
一个简便的方法是,先在 visual 模式下想办法选中你要操作的范围,然后再输入 s 命令就可以替换了。
比如你要操作一个段落,可以先用 { 或者 [[ 挪到段落的开始处,然后再用 v 进入 visual 模式,
然后再用 } 或者 ]] 挪到段落的结尾处,然后再输入 s 命令就可以实现你的目的了
Q:vim中光标在C函数和系统调用上时,按K进入man手册页,可是如果应用程序也有这个名字,比方说readlink,按下K就进入那个应用程序的man页了,
如果我想取得在shell中man 2 readlink这样的效果,该怎么办
A:先按下2,然后shift+k,就进入系统调用man页了
Q:在vi中,怎么选中指定的几行,然后进行规整格式之类的命令?比如用V可以进入虚拟模式,然后上下就可以选中几行,然后用=规整格式。如果我想选中的行比较多,有没有比较好的办法呢?
A:V 打开"可视模式"(不是虚拟模式,虚拟是 virtual)后,可以有很多种办法移动光标的,不一定非得用 h j k l , 比如可以搜索定位, 也可以用 [[ ]] ][ [] } { 等段落定位的命令.
v]] v[[ v} 这样就可以选中一大块,而不用一行一行地选,还有 H L 这些都可以用. 详细请 help motion
另外, vim 内置了很多以 a 打头的文本对象, 如 a{ 表示一个 {} 块, ap 表示一个段落等等。=a{ 就可以重排当前语法块.
Q:=a{命令重排后,是按2个TAB键进行缩进的?想让它按一个TAB键缩进,该如果处理?谢谢! 在Visual状态下,如何选择整个文件?
A:全选的命令是 ggVG gg表示到第一行第一个字母, V进入visual line G则到文件尾。
至于=a{重排,应该跟shiftwidth、softtabstop、tabstop、expandtab等设置有关。具体看你是怎么设置的。
我的是把TAB全部设置成4个空格了。
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set cindent
set ai
Q:从win2k telnet到rh7.3使用vim编辑C文件时候,如何处理Ctrl+]呢?
A:vt100 不支持。用 ansi 终端,或者干脆改用 NetTerm 等软件,.
Q:vim支持语法高亮度显示,那么vim是否支持将语法高亮度显示的结果保存为一个html文档呢?
A::TOhtml
Q:vim如何把 “调用外部程序得到的输出” 转移到它自己一个新型的窗口里?比如我调用:!objdump -S %:p:r<cr>;怎样让VIM产生一个新的BUFFER或者窗口,捕获它的输出?
A::split +enew | r !ls
split :分割窗口 split {+cmd} 表示打开一个新窗口,并在新窗口中执行 {cmd} 命令
split +enew 就是打开一个新窗口,并且在其中执行 enew 这个命令
enew 打开一个新的无名buffer | 命令分割符 r read !ls 执行外部命令
Q:在vim中如何 进行块复制 删除 等 块操作
A::v进入可视模式,hjkl选中要选中的块。y:复制、d:删除/剪切、p:粘贴
v: visual mode//和普通的选择没区别
V: visual line mode//在此模式下,选择的基本单位是行,即:要么就选一行,要么就什么都不选
Ctrl-V: visual block mode//此模式下,可以选择一个块。
Q:能不能读入(解析)一个html文件呢?就是去掉html的的标记,象浏览器一样读入html??
A:vim 是个文本编辑器,不是 html 浏览器。 去掉标记 :%s/<[^>;]*>;//g
Q:写C的时候,如果要把一段注释掉,有什么方法?
A::vmap <F2>; :s/^/\/\//<CR>; 选中内容,按 F2。
Q:缩写
A::ab cu chinaunix 以后就可以自己写cu(空格 or 回车 or tab后)vi自动把cu替换成chinaunix
Q:在vi中,如果我不小心按错了键,跑到文件头或者文件尾了,怎么能快速回到刚才光标所在的位置?
A:vi 中不知道。 vim 中可以用 Ctrl+o(欧) 回来。
Q:如果我键入if,再回车,下一行就自动缩进,直到输入endif再和if对齐,vi中不知道怎么实现这个功能
A::set ai的命令来启动自动缩进。用:syntax on命令来启动语法着色。一般都是写在.exrc中每次自动执行的
Q:用什么快捷键可以在"插入模式"下删除光标到行尾的字符
A:^od$ ^o 表示同时按住 Ctrl 和 O 键。
Q:set autoindent 与 set cindent 区别
A:autoindent 就是自动缩进的意思,当你在输入状态用回车键插入一个新行,或者在 normal 状态用 o 或者 O 插入一个新行时,autoindent 会自动地将当前行的缩进拷贝到新行,也就是上面这位网友说的“自动对齐”,当然了,如果你在新行没有输入任何字符,那么这个缩进将自动删除。
cindent 就不同了,它会按照 C 语言的语法,自动地调整缩进的长度,比如,当你输入了半条语句然后回车时,缩进会自动增加一个 TABSTOP 值,当你键入了一个右花括号时,会自动减少一个 TABSTOP 值。
Q:如何比较快速简单地用一段文字替换文章中的多处不同文字 如:用“为人民服务”来代替
A::%s/TNND\|TMD\|XXX\|FUCK/为人民服务
Q:用vi怎么copy一行,到另外的一个vi打开的文件中
A:Step1 yy Step2 :vi file2 Step3 p
Q:怎么实现vim内,打一个括号如 "("自动补全另一个括号
A::iab ( ()
Q:如何删除所有的偶数行?
A:<ESC>;ggqajddq10000@a 假设你的文本有不到 20000 行,那么输入以上的命令就可以删除所有的偶数行。
Q:隔两行插入一个空行:
A:ggqajo<ESC>;jq1000@a
Q::set tabstop=4 按tab缩进4了..可是退出vi再进 还是8啊..怎么办?
A:你可以在用户目录下建文本.exrc,在里面写上set ts=4就可,下次进入时按tab就只有4格了
Q:怎么在vi里面更方便的删除一段内容?
A:首先在你需要考贝头,mark为ma,然后下移或上移到考贝尾,在命令模式输入 d'a 或者在ex模式输入:.,'ad<CR>;
Q:请问vim有配制文件吗?有的话放在哪里
A:根据你的系统类型及配置情况的不同,vim 配置文件的路径也会不同,所以具体请参照 :help vimrc
Q:怎样让 vim 在打开不同文件的时候在开头写入不同的内容。 例如在打开一个后缀名为 cpp 的空文件的时候写入
#include <iostream>;
using namespace std;
A:[code] autocmd BufNewFile *.cpp exec append(0,"#include <iostream>;") | exec append(1,"using namespace std;") | exec ':$' [/code]
Q:如何实现一下删除多行,或是整个文件中的所有行
A::%d ggdG
Q:源代码比较混乱,有没有办法格式化呢?
A:gg=G
Q:使用:args可以查看你正在编辑哪个文件,但是我在C语言环境下,使用Ctrl-]跳转到函数定义地方以后,怎么知道我现在位于哪个文件呢?
A:Ctrl+g