ChinaUnix: vim资料整理

1. set all

2. set list 显示不可见字符,取消这种显示set nolist

flw:

所有的 bool 型的选项用 set no??? 就可以关掉。
反过来讲,有些默认是 no??? 的,用 set ??? 就可以打开。
只要掌握了这个规律就好办了。

3. hotyt:

vim如何支持ftp操作

现在很多的编辑器都支持使用ftp打开远程文件,然后进行操作,vim中怎么进行这个?

flw:

这个也可以。很方便。
打开:
:e ftp://192.168.10.76/abc.txt
保存(如果不存在则创建):
:w ftp://192.168.10.76/abc.txt
读取:
:r ftp://192.168.10.76/abc.txt
以上操作第一次打开时需要输入用户名和密码,
以后就不用了,vim 会记住的。

总之,大多数针对文件的操作都可以直接用来操作 ftp 文件,
vim 通过解析文件名中的 URL 标记来区别。

其实打开文件还有一个比较方便的办法,
那就是当你编辑的文件中包含有类似于 ftp://192.168.10.76/abc.txt 这样的文件 URL 时,
你直接把光标挪到上面,再用 gf 命令就可以打开了。

需要注意的一点是,
vim 本身并不携带 ftp 客户端,vim 只是调用操作系统提供的 ftp 客户端并捕获它的输出。不过大多数操作系统都是有 ftp 客户端的,所以这一点不用担心。

4. benlan:

vi 处理多个文件编辑有什么法子?
我一般是用vi   file1 file2 file3…
然后用n N first last切换

flw:

如果是 vim 的话,n 和 N 命令象大多数 vim 的命令一样,是可以带重复次数的。比如 4N 5n 这样子。
你可以用 :args 命令查看当前正在编辑的文件列表,你正在编辑的文件名会用方括号括起来,然后可以用 4n 4N 这样的命令,快速地跳转到你要编辑的文件。

aero:

也可以用:sp filename、:vsp filename来分屏打开文件,用ctrl+w+方向键来选择不同的窗口。

注:我在使用vim for windows时遇到了可耻的失败。1). args命令没有反馈 2).如果只开一个buffer不能使用N/n 3). 操纵buffer的命令是好用的bn

benlan:

vim在编辑一个文件时如果打开多个文件,如  vim   file1   时,不关闭file1时,如何打开file2  file3

现在我只能e file2,然后用e #跳回,能不能在vim file1时又打开file2 file3且能互相切换..

flw:

假设你正在编辑 file1,那么用

:args <CTRL-R>;% file2 file3

就可以了。

5. krs:请问楼主,如何删除连续两行之间的回车符,使连续的两行成为一行?

flw: Jx

6. aero: 怎么将一定段落中的某个词替换成另一个词?

flw: 替换用 s/abc/def/ 这样,就可以把 abc 换成 def。
s 是最基本的替换命令,象大多数文本操作命令一样,它也可以带一个表示操作范围的前缀。有空了我会给大家讲讲范围前缀的语法和常见的用法。
一个简便的方法是,先在 visual 模式下想办法选中你要操作的范围,然后再输入 s 命令就可以替换了。
比如你要操作一个段落,可以先用 { 或者 [[ 挪到段落的开始处,然后再用 v 进入 visual 模式,然后再用 } 或者 ]] 挪到段落的结尾处,然后再输入 s 命令就可以实现你的目的了。

7. aero: 在vi中,怎么选中指定的几行,然后进行规整格式之类的命令?
比如用V可以进入虚拟模式,然后上下就可以选中几行,然后用=规整格式。
如果我想选中的行比较多,有没有比较好的办法呢?

sdemon915:我知道用indent *.c 可以整理整个文件的代码风格 只整理几行的话还真不清楚

flw: 呵呵,
V 打开”可视模式”(不是虚拟模式,虚拟是 virtual)后,可以有很多种办法移动光标的,不一定非得用 h j k l , 比如可以搜索定位, 也可以用 [[ ]] ][ [] } { 等段落定位的命令.
v]]
v[[
v}
这样就可以选中一大块,而不用一行一行地选
还有 H L 这些都可以用.
详细请 help motion

另外, vim 内置了很多以 a 打头的文本对象, 如 a{ 表示一个 {} 块, ap 表示一个段落等等。=a{ 就可以重排当前语法块.

yeath:=a{命令重排后,是按2个TAB键进行缩进的?想让它按一个TAB键缩进,该如果处理?谢谢! 在Visual状态下,如何选择整个文件?

assiss:

全选的命令是
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

aero:我是windows平台,那我如何才能按照我想要得意思是用Ctrl+V呢?
flw:windows 下因为 Ctrl+V 被定义成粘贴了,

所以真正的 Ctrl+V 被映射成 Ctrl+Q 了,你用 Ctrl+Q 就相当于输入 Ctrl+V。

8.
hoyt:vim支持语法高亮度显示,那么vim是否支持将语法高亮度显示的结果保存为一个html文档呢?这样就可以很轻松的将源代码转换为html文档了。
flw::TOhtml
9. netcalf:那么能不能读入(解析)一个html文件呢?就是去掉html的的标记,象浏览器一样读入html??
flw: :%s/<[^>;]*>;//g
10. aero: flw讲一下这两个的区别吧。我的用set ai就好用了。

flw: autoindent 就是自动缩进的意思,当你在输入状态用回车键插入一个新行,或者在 normal 状态用 o 或者 O 插入一个新行时,autoindent 会自动地将当前行的缩进拷贝到新行,也就是上面这位网友说的“自动对齐”,当然了,如果你在新行没有输入任何字符,那么这个缩进将自动删除。
cindent 就不同了,它会按照 C 语言的语法,自动地调整缩进的长度,比如,当你输入了半条语句然后回车时,缩进会自动增加一个 TABSTOP 值,当你键入了一个右花括号时,会自动减少一个 TABSTOP 值。
你之所以只用 set ai 就好了的原因,大抵是因为你的 cindent 已经在别的地方设置好了。你用 set all 就可以检查一下。
11.

参考:

1. ChinaUnix

2. vim Chinese Documentation

打赏

《ChinaUnix: vim资料整理》有一个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注