VIM操作技巧

  1. 基础说明
    1. words 由空白字符分割,基本上可理解为字母数字下划线以外的都算分割符;
    2. WORDS 由非关键字分割的都算。注意,冒号(:)算;
  2. 定位
    1. hkjl 等于方向键
    2. 0行首
    3. ^本行第一个非空字符
    4. $行尾
    5. g0 单行显示换行时,移动到本屏幕显示行的行首!!
    6. g^ 单行显示换行时,移动到本屏幕显示行的第一个非空字符
    7. g$ 单行显示换行时,移动到本屏幕显示行的行尾
    8. #f% 向后查找#个字符(%)并停在该位置,f改成F为向前;
    9. ; 重复上一次的f/F操作
    10. , 重复上一次的t/F的反向操作
    11. #-|+   向上或向下移动#行,都移动到行首非空
    12. gg 文件头
    13. G 文件尾
    14. #G 跳到第#行
    15. w/W 按单个单词前进,每次移动到单词头部;
    16. e/E  与w/W相同每次移动到单词尾部。
    17. b/B 按单个单词后退,每次移动到单词头部;
    18. ge/gE 按单个单词后退,每次移动到单词尾部;
    19. () 按句子移动
    20. {} 按段落移动
    21. [],]],[[,][ 不太理解
    22. zt z. zb  移动屏幕,注意是移动屏幕的内容,而不是光标,之当前光标位置显示在屏幕的顶部,中间和尾部。
    23.  
  3. 删除操作
    1. dd 删除当前行
    2. #dd 删除从当前行起的#行
    3. :.,+2d 删除从当前行起行及后面的2行(共计3行),同样-2是往前删除;
    4. d$ d^ dE dW 等均可删除
  4. 标记指令
    1. 标记支持a-z和A-Z
    2. a-z是单文件内的;不同文件内容的a-z可以全不相同,每个文件有自己的设置;
    3. A-Z是全局的,即与文件关联的;整个主机只有一套;
    4. ma设置a标签在当前行,当前列;如果a已经存在则移除;
    5. marks 列出所有标记
    6. marks aB 列出标记a和B
    7. delmarks a-d删除a-d
    8. delmarks a,b,d,d 删除a,b,c,d
    9. delmarks!  删除a-z
    10. []往前或往后跳标志
    11. ‘跳到标志所在行的第一个非空字符;`跳到标志所在位置(列)
    12. 如:[‘表示跳到上一个标志所在的行;而]`表示跳到下一个标志所在的行和列;
    13. 预置标志:
      1. `. 最后修改位置
      2. `” 最后离开时的位置
      3. `0 `1 `2 最后一次打开的文件的位置,1是再往前,2依次
      4. ‘’ 最后一次的位置(行)
      5. “最后一次的位置(行+列)
      6. `[  `]最后修改或最后选择的位置
      7. `< `>可视化的选择区域位置
  5. 查找
    1. /是向下查找(前进)
    2. ?是向上查找(回退)
    3. n是重复上一次的查找;N是重复上一次的查找但反向;
    4. /不带参数为重复上一次的。 ?也是同样。
    5. //或??可使用上一次的查找pattern,但提供新的offset参数,一般没用。
    6.  
  6. 查找替换
    1. s/A/B/g      当前行替换所有A为B
    2. %s/A/B/g     所有行(%的作用就是这个)查找替换所有A为B
    3. 5,10s/A/B/g     仅查找替换5~10行
    4. ‘<,’>s/A/Bg      可视模式下的选区内替换:进入可视化模式后,输入:就会自动补全前面的’<,’>
      1. 单引号开头的表示一个标志(mark),如何增加标志参考其它内容;
    5. .,+2s/A/B/g    当前行与接下来的两行
    6. .$s/A/B/g   当前和
    7. 查找与替换范围
      1. s 当前行
      2. %s  所有行
      3. 5,10   第 5~10行
      4. .,+2   当前行及之后的2行(不包括当前行)
      5. .,$   当前行至文件尾
      6. ^,. 
      7.  
    8. 替换标志
      1. /g 全局替换,不带此标志此仅替换第一个;
      2. /c 替换前确认
      3. /i  /I 大写为大小写敏感;小写为不敏感;也可以在A后增加\c 或\C标志;
        1. 例如   %s/A/B/gI    与%s/A\C/B/g 效果相同
  7. 查找替换
    1. 查找内容的匹配
      1. 可使用\zs \ze来匹配需要替换的串;这里与正则表达式中的()的用法类似,但仅限其中一个;例如:
        1. :s/Copyright \zs2007\ze all rights reserved/2008 只仅替换其中的2007为2008,而不会替换其它内容;
      2. //忽略查找内容串,则使用最后一次的查找规则;
      3.  
    2. 查找范围
    3. 替换范围
    4.  
  8. 特殊字符的处理:
    1. \r 换行
    2. \n 表示null
    3. \0 表示整个匹配字符串的内容
    4. \1 \2 … 表示表达式中括号里的内容,按顺序匹配;
    5. \& 
Continue Reading

全面转移到vim(MacVim)

之前一直用Sublime,原因无它:启动快!当你想打开一个文本文件,可能是个配置文件,也可能是个普通文本文件,又或者一段代码,甚至是一个10M的TXT电子书,最想要的是在2秒内打开它!Sublime完全可以满足这一点:)

几个我算是用过一段时间的文本编辑器器的几个关键我我大致比较了一下:
冷启动速度(启动进程,不打开任何文件)

vim<sublime<vscode<atom
vim最快但sublime也不相上下,大概都是在1.5~2.5秒内,相比之下VSCode就延时比较明显了至少需要3秒,ATOM就不提了,哈哈。

已启动的情况下打开大文件
三者没有特别明显的时间差别,但仍然能感觉到vim最快,奇怪的是感觉vsc的加载速度甚至比sublime还要快。

我的主要用途是:
1. 编辑一般文本文件,但不会做开发、调试之类(习惯IDE工具)
2. 处理TXT小说……哈哈
结合这两个用途而言,其实Sublime完全满足我的需要,但它需要破解又想试试更专业的工具,尝试了一翻之后,真心觉得好用。

有几个重要的经验(针对我的需求,特殊需求的人员就自己去折腾了),反正都是配置~/.vimrc,具体方法不说了,无非就是~/.vimrc(文件)和~/.vim目录(里面含有Color/Plugin等子目录)

对中文和OSX系统来说重要的两个配置

“支持的换行模式
set ffs=unix,dos,mac
“支持的编码格式
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936

配置了这个之后打开上述编码(换行)格式的文件就能自动处理,不会有乱码之类的问题。在OSX下默认UTF8,在Sublime中需要安装一个插件来转换编码这个就不需要折腾了。

影响整体效果的配置一,状态栏,一般文本编辑工具都有状态栏显示:)

 

显示文件路径,类型,编码格式,换行格式,文件类型,行,列,当前位置:)够用了。还有些插件可以支持git之类的,我感觉意义不大。代码如下:

“这行很重要,木有这行下面怎么配置都不会显示出来的
set laststatus=2
“正面是状态栏格式代码
set statusline=
set statusline+=%7*\[%n] “buffernr
set statusline+=%1*\ %<%F\ “File+path
set statusline+=%2*\ %y\ “FileType
set statusline+=%3*\ %{”.(&fenc!=”?&fenc:&enc).”} “Encoding
set statusline+=%3*\ %{(&bomb?\”,BOM\”:\”\”)}\ “Encoding2
set statusline+=%4*\ %{&ff}\ “FileFormat (dos/unix..)
set statusline+=%5*\ %{&spelllang}\%{HighlightSearch()}\ “Spellanguage & Highlight on?
set statusline+=%8*\ %=\ row:%l/%L\ (%03p%%)\ “Rownumber/total (%)
set statusline+=%9*\ col:%03c\ “Colnr
set statusline+=%0*\ \ %m%r%w\ %P\ \ “Modified? Readonly? Top/bot.
“前面格式代码中用到的FileFormat函数定义

function! HighlightSearch()
if &hls
return ‘H’
else
return ”
endif
endfunction
“颜色定义

hi User1 guifg=#ffdad8 guibg=#880c0e
hi User2 guifg=#000000 guibg=#F4905C
hi User3 guifg=#292b00 guibg=#f4f597
hi User4 guifg=#112605 guibg=#aefe7B
hi User5 guifg=#051d00 guibg=#7dcc7d
hi User7 guifg=#ffffff guibg=#880c0e gui=bold
hi User8 guifg=#ffffff guibg=#5b7fbb
hi User9 guifg=#ffffff guibg=#810085
hi User0 guifg=#ffffff guibg=#094afe

影响整体效果的配置二就是配色了,随便上Github弄一个放到~/.vim/Color目录下,然后在.vimrc文件中启用这个就行了,我用的是这个(GH上搜索vim color theme 星星最多的):https://github.com/altercation/solarized

 

 

Continue Reading