存档

文章标签 ‘vim’

VIM标记和跳转列表介绍

2013年2月25日 没有评论

跳转列表

当你用 “G” 命令跳到另一个地方,Vim 会记住你从什么地方跳过去的。这个位置成为一个标记,要回到原来的地方,使用如下命令:

”(两个单引号)和“(两个反引号,在键盘上和”~”共用一个键)“两个 命令可以在两个位置上跳来跳去。

使用命令”(两个单引号)和“(两个反引号,在键盘上和”~”共用一个键)可以返回到最后跳转的位置。例如,当前光标位于文件中第1234行,然后我使用”4321G“命令跳转到第4321行;这时如果我按”或“,就会跳回到1234行。

因为这两个命令也属于跳转命令,所以第4321行也被记入跳转表,如果你再次使用这两个命令,就会发现自己又跳回第4321行了。

这两个命令有一点不同,“在跳转时会精确到列,而”不会回到跳转时光标所在的那一列,而是把光标放在第一个非空白字符上。

而 CTRL-O 命令则跳到一个 “较老” 的地方 (提示: O 表示 older)。CTRL-I 则跳到一个 “较新” 的地方

:jumps 命令能输出一个你可以跳往的位置的列表。最后一个你使用的标记会用 “>” 符号标记出来。

 

标记

Vim 允许你在文本中放置自定义的标记。命令 “ma” 用 a 标记当前的光标位置。你可以在文本中使用 26 个标记 (a 到 z)。这些标记是不可见的,只是一个由 Vim 记住的位置。

`{mark}要跳到一个你定义的标记所在行对应列(可以认为是你标记对应的光标位置),可以使用命令 `{mark},这里 {mark} 是指定义标记的那个字母。所以,移到标记 a 的命令是: `a

需要注意的是,以单引号开始的语法 ‘{mark}是跳转到标记所在行的行首.

在同一行多列间进行移动时使用 `{mark}(反引号)会非常有用哦,‘{mark}(单引号)就无能为力了

删除mark的命令是:delmarks + markname

 

你可以用如下命令取得所有的标记的列表::marks

到有一些特殊的标记,包括:

‘ 跳转前的光标位置

” 最后编辑的光标位置

[ 最后修改的开始位置

] 最后修改的结束位置

注:mark仅在当前文件跳转有效,jumps可在多个文件之间来回跳转

其实标记不单在光标跳转时用到,在其他操作也可以灵活运用,比如多行复制: “ay’b命令,即可以实现复制从当前光标行到标记b所在行内容到寄存器a

阅读全文…

分类: VIM 标签: , , ,

vim区域选择之motion特性

2013年2月20日 1 条评论

区域选择语法: <action>a<object> 或 <action>i<object>

action可以是任何的命令,如 d (删除), y (拷贝), v (可以视模式选择),c(修改)。
object 可能是: w 一个单词, W 一个以空格为分隔的单词, s 一个句字, p 一个段落。也可以是一个特别的字符:”、 ‘、 )、 }、 ]、<、>。PS:HTML标签编辑是不是会很爽 🙂

假设你有一个字符串 (map (+) (“foo”)).而光标键在第一个 o 的位置。

vi" → 会选择 foo.
va" → 会选择 "foo".
vi) → 会选择 "foo".
va) → 会选择("foo").
v2i) → 会选择 map (+) ("foo")
v2a) → 会选择 (map (+) ("foo"))

分类: VIM 标签: , ,

Vim换行乱码(^M)处理

2012年8月7日 没有评论

Vim打开文件的时候有时候会出现行尾有多余的字符“^M”,出现这个符号的原因是文件中使用多种换行符混合使用造成的。

换行符(Line-Ending)主要有三种, CR, LF, CRLF.

CR(\r)是Mac采用的方式,

LF(\n)是UNIX/Linux采用的方式,

CRLF(\r\n)是DOS/Windows采用的方式.

Vim打开一个文件和写入一个文件的时候,它需要知道如何把换行符号写入到缓冲区,所以在一个buffer中一般只有一种换行符,具体是什么换行符号,取决于fileformat的设置,如果没有设置的话,它可能会根据fileformats这个设置来决定最后的fileformat。

Vim中可以通过以下命令设置换行符:

set fileformat=dos
当出现多种换行符的时候我们可以全能替换命令统一换行符
:%s/\r\(\n\)/\r/g


参考资料:
http://stackoverflow.com/questions/799417/gvim-showing-carriage-return-m-even-when-file-mode-is-explicitly-dos

http://www.fanjun.me/?p=479

分类: VIM 标签: ,

Vim攻略之NERD Tree、TagList篇

2012年5月26日 没有评论

习惯了ZendStudio这类IDE工作区左侧文件浏览器、中间编辑区、右侧文件结构列表布局的童鞋一定对VIM原生系统简单的文件管理功能很不习惯,不过神奇的VIM也有类似的解决方案,通过NERD Tree和TagList这两个插件和VIM强大的配置功能,我们也可以让神器拥有这些功能.

TagsList需要依赖Ctags生成的tags索引,此外,我们可以借助Ctags实现函数、变量引用查看定义,将鼠标移动到要查看的变量或者方法上,按Ctrl+】将会跳转到定义处,Ctrl+t、Ctrl+o返回

贴张本人配置后的效果

VIM NERDTree TagList

PS:<F3>映射打开/关闭 NERDTree、<F4>映射打开/关闭TagList 阅读全文…

分类: VIM 标签: , , ,

VIM中文乱码相关配置项说明

2012年5月19日 没有评论

Win7对系统内存的贪婪终于让我下定决心使用VIM作为工作编辑器代替了,2G内存Win7下开个Zendstudio有时候真的很要命.我那台ThinkPad上面的XP系统VIM环境配置的还算顺手,可惜丢在武汉,现人在上海没办法只能重新一点点配置了.话说VIM强大而灵活的配置功能,刚开始也是一步一步配置出来的,真的要再重新配置一遍还真有点一夜回到解放前的状态,不过还好,现在上手快多了.今天稍微整理了一下VIM中文乱码问题,后续有时间出个终极解决方案吧,就这点破事,还经常遇到,简单做个笔记. 阅读全文…

分类: VIM 标签: ,