配置见dotfiles

快捷键

Movement

在搜索后, 被搜索的单词都会高亮, 一般想取消那些高亮的单词, 可以再次搜索随便输入一些字母, 搜索不到自然就取消了. 另外也可以使用 nohl 取消这些被高亮的词.

Deletion

Yank & Put

Insert Mode

Visual Mode

Other

Read More

Vim自定义插件

依葫芦画瓢, 写了一个针对特定格式的高亮插件时的需求。

vimdiff

vim套件中的对比工具

其它版本

技巧

shell多行注释

命令行模式下,注释掉line1与line2之间的行

line1,line2s/^/#/g

自动补全

目前使用jedi-vim插件, 可以配合Supertab

有什么omni(智能补全?), 自动补全啥的, 没去研究.

左右分割打开help文档

默认是上下分割来打开文档,但是对于宽屏,左右分割反而更加方便

:vert help xxx

逐个替换

全文直接替换:

:%s/old_str/new_str/g

加上参数c可以逐个替换,这样可以对每一个再确认:

:%s/old_str/new_str/gc

关于 search/replace 中的换行符

Search:

\n is newline, \r is CR(carriage return = Ctrl-M = ^M)

Replace:

\r is newline, \n is a null byte(0x00)

比如字符串 test1,test2,test3 把逗号换成换行:

%s/,/\r/g

关于.vimrc和plugin的加载

具体见:help --noplugin:

--noplugin      Skip loading plugins.  Resets the 'loadplugins' option.
                {not in Vi}
                Note that the |-u| argument may also disable loading plugins:
                        argument        load vimrc files        load plugins
                        (nothing)               yes                 yes
                        -u NONE                 no                  no
                        -u NORC                 no                  yes
                        --noplugin              yes                 no

重新加载配置:

# % 表示当前文件, so是source简写
:so %

# 指定配置文件
:so ~/.vimrc

删除所有匹配的行

# 删除所有包含abcd的行
:g/abcd/d

参考: Delete all lines containing a pattern

vim调试插件

在使用dash.vim时遇到的一个问题, 想看看插件中某些变量的值是多少。搜到这篇文章:Echoing Messages

比如在插件里加上:

echom var_name

然后在触发到这条后, 可以执行下面来查看输出

:messages

忽略大小写搜索

首先有两个bool开关:

另外,\c, \C可以覆盖ignorecasesmartcase的配置。

\c表示搜索pattern忽略大小写,如下都会忽略大小写匹配hello

# 最前的`/`表示vi中的开始搜索
/\chello
/\cHello
/hello\c
/HELLO\c

\C\c相关,表示大小写敏感。

具体可以:

:help /\c
:help /\C
:help smartcase
:help ignorecase

参考 How to do case insensitive search in Vim

查看某个按键的映射

一般用于排查按键冲突,可以看某个按键实际被谁绑定了。

以tab为例,本地被supertab插件绑定了:

:verbose imap <tab>
i  <Tab>         <Plug>SuperTabForward
    Last set from ~/.vim/bundle/supertab/plugin/supertab.vim

参考

查看加载的文件

:scriptnames

快速跳回到上次位置

''或者``

具体见:Move cursor to its last position

插入特殊字符

最近看Go的字符串编码那块, 想在vim上敲一些特殊字符, 但是不知道怎么弄, 只能在网上找到这个字符, 然后C-v复制到vim里, 但是不行, 于是研究了下这块。

:digraphs可以看到支持的特殊字符列表, 比如u: ü 252, vim定义了两个字符的组合(即digraph)来映射特殊字符, 如这里使用u:来表示ü; 第三个252表示赋予它的十进制编码.

其中有两种方式来键入特殊字符(:h digraphs-use):

  1. CTRL-K {char1} {char2} # 任何模式都行
  2. {char1} <BS> {char2} # 只支持在digraph模式下,即:set digraph

第二种方式还有点疑问, 貌似只能在命令行模式里输入

光标在字符上, 普通模式敲入ga, 可以查看这个字符(包括特殊字符)的十进制,十六进制等: <ü> 252, Hex 00fc, Octal 374

还可以通过敲入16进制符来输出特殊字符, <C-v>uXXXX; 比如上面这个十六进制是00fc, 插入模式输入 <C-v>u00fc

其它参考:


参考:

Related: