打造属于自己的工具-gvim编辑器使用

gvim下载地址: 

https://github.com/vim/vim-win32-installer/releases

https://download.csdn.net/download/zwhfyy/11193500

文本编辑工具对于一个程序员来说至关重要,那就是刺客身上的背包。请注意不是刀或者剑,IDE才是。但是这个背包至关重要。

为啥用gvim呢?免费,开源,这都不是最重要的,关键是足够强大,背景足够深,这里是指咱们不可避免和linux打交道,在那里面也能用上;我最欣赏他的是可以轻松打开2G多的文本文件,这不是一般文本编辑工具,能做到的。额,说的有点多了,重点是我打算好好研究下这个背包,把吃的喝的,用的到的都放进去,下一步咱们先找找拉锁在哪里。

 

  • 第一个文件,打开UTF-8格式的日志文件,这大哥显示乱码。(一顿倒腾)

打开gVim,并导航到菜单 “编辑”->“启动设定” 处

添加一行代码 set fileencodings=utf-8,cp936 ,然后保存

重新打开乱码没了,81难的第一难就算是过了。

 

  • 第二个问题,必须要使用鼠标右键点击使用gvim直接打开文件才够方便

第一步:

删掉注册表中的HKEY_CLASSES_ROOT//shellex/ContextMenuHandlers/gvim*

第二步:

注册表下,HKEY_CLASSES_ROOT/*/shell下添加项,命名为"用vim编辑", 再对"用vim编辑"右键,新建项,命名为"command",在"command"的右边窗口第一个文件(也是唯一一个),将其数值数据设定为""D:\\gvim_8.1.1364_x64\\vim\\vim81\\gvim.exe" -p --remote-tab-silent "%1",其中数值数据包括双引号;上面的数值名称不用修改,点击确定可以退出。
 

 

  • 第三个问题,不支持Ctrl+C  Ctrl+V    Ctrl+A   Ctrl+Z ,没这几个快捷键的编辑器那就不叫编辑器,必须要支持

用户home目录下的   _vimrc文件添加这一段 

source $VIMRUNTIME/mswin.vim
behave mswin

 

 

  • Json对象格式化

 用户home目录下的   _vimrc文件添加这一段

command! Json :execute '%!python -m json.tool'
\ | :execute '%!python -c "import re,sys;chr=__builtins__.__dict__.get(\"unichr\", chr);sys.stdout.write(re.sub(r\"\\u[0-9a-f]{4}\", lambda x: chr(int(\"0x\" + x.group(0)[2:], 16)), sys.stdin.read()))"'
\ | :%s/ \+$//ge
\ | :set ft=javascript
\ | :1

下载 python-3.7.3-embed-amd64 到电脑上,并且把这个目录添加到path上,确保python命令可用

Python下载地址:https://www.python.org/downloads/

 

  • 下面开始尝试把查找到的内容所在行都复制出来

越来越有趣了:

:let @a=""

:g/totalCost/y A

:put a


第一步声明个变量
第二步复制所有totalCost 所在行
第三部新建个文件把查找到的行都复制出来
  • 关于在vim中的查找和替换

1,查找

在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。 Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。

Vim查找支持正则表达式,例如/vim$匹配行尾的"vim"。 需要查找特殊字符需要转义,例如/vim\$匹配"vim$"。

2,大小写敏感查找

在查找模式中加入\c表示大小写不敏感查找,\C表示大小写敏感查找。例如:

/foo\c
将会查找所有的"foo","FOO","Foo"等字符串。

3,大小写敏感配置

Vim 默认采用大小写敏感的查找,为了方便我们常常将其配置为大小写不敏感:

" 设置默认进行大小写不敏感查找
set ignorecase
" 如果有一个大写字母,则切换到大小写敏感查找
set smartcase 
将上述设置粘贴到你的~/.vimrc,重新打开Vim即可生效

4,查找当前单词

在normal模式下按下*即可查找光标所在单词(word), 要求每次出现的前后为空白字符或标点符号。例如当前为foo, 可以匹配foo bar中的foo,但不可匹配foobar中的foo。 这在查找函数名、变量名时非常有用。

按下g*即可查找光标所在单词的字符序列,每次出现前后字符无要求。 即foo bar和foobar中的foo均可被匹配到。

5,查找与替换

:s(substitute)命令用来查找和替换字符串。语法如下:

:{作用范围}s/{目标}/{替换}/{替换标志}
例如:%s/foo/bar/g会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g)

6,作用范围

作用范围分为当前行、全文、选区等等。

当前行:

:s/foo/bar/g
全文:

:%s/foo/bar/g
选区,在Visual模式下选择区域后输入:,Vim即可自动补全为 :'<,'>。

:'<,'>s/foo/bar/g
2-11行:

:5,12s/foo/bar/g
当前行.与接下来两行+2:

:.,+2s/foo/bar/g
替换标志
上文中命令结尾的g即是替换标志之一,表示全局global替换(即替换目标的所有出现)。 还有很多其他有用的替换标志:

空替换标志表示只替换从光标位置开始,目标的第一次出现:

:%s/foo/bar
i表示大小写不敏感查找,I表示大小写敏感:

:%s/foo/bar/i
# 等效于模式中的\c(不敏感)或\C(敏感)
:%s/foo\c/bar
c表示需要确认,例如全局查找"foo"替换为"bar"并且需要确认:

:%s/foo/bar/gc
回车后Vim会将光标移动到每一次"foo"出现的位置,并提示

replace with bar (y/n/a/q/l/^E/^Y)?
按下y表示替换,n表示不替换,a表示替换所有,q表示退出查找模式, l表示替换当前位置并退出。^E与^Y是光标移动快捷键,参考: Vim中如何快速进行光标移

 

不换行命令   set nowrap

 

大小写敏感查找
在查找模式中加入\c表示大小写不敏感查找,\C表示大小写敏感查找。例如:

/foo\c
将会查找所有的"foo","FOO","Foo"等字符串。

 

_vmrc配置文件  关于主题,我喜欢亮色的,背景是白色的,所以我选择了 zellner

set fileencodings=utf-8,cp936 
command! Json :execute '%!python -m json.tool'
\ | :execute '%!python -c "import re,sys;chr=__builtins__.__dict__.get(\"unichr\", chr);sys.stdout.write(re.sub(r\"\\u[0-9a-f]{4}\", lambda x: chr(int(\"0x\" + x.group(0)[2:], 16)), sys.stdin.read()))"'
\ | :%s/ \+$//ge
\ | :set ft=javascript
\ | :1

" 设置默认进行大小写不敏感查找
set ignorecase
" 如果有一个大写字母,则切换到大小写敏感查找
set smartcase 
"设置标签栏的显示,0永远不显示 1两个以上显示 2 永远显示
set showtabline=2
set number
"语法高亮
syntax enable
syntax on
color zellner 
"实现Alt+数字 页签切换
:nn  1gt
:nn  2gt
:nn  3gt
:nn  4gt
:nn  5gt
:nn  6gt
:nn  7gt
:nn  8gt
:nn  9gt
:nn  :tablast
"set go=
set scrolloff=5             " 设定光标离窗口上下边界 5 行时窗口自动滚动
set ruler                   " 打开状态栏标尺
set nocompatible            " 设定 gvim 运行在增强模式下
set incsearch               " 输入搜索内容时就显示搜索结果
set mouse=a                 " 设定在任何模式下鼠标都可用
set backspace=indent,eol,start "启用backspace delete等
set shortmess=atI           "其中 I 表示启动时不显示 intro message 就是乌干达那句话
source $VIMRUNTIME/mswin.vim
behave mswin
let g:winManagerWindowLayout='FileExplorer' 
nmap wm :WMToggle
if has("win32")  
        set guifont=Courier_New:h10:cANSI  
endif  
  • 正则表达式

:g/^\s*$/d 删除只有空白的行

:%s/^M$//g 后,回车即会自动删除该文件中的所有 ^M 字符。

^M 注意要用 Ctrl + V Ctrl + M 来输入

 

  • 常用快捷键

撤销:u

恢复撤销:Ctrl + r

撤销:命令模式  u       插入模式 ctrl + z

保存退出:Ctrl+w+q     或者 ZZ

A行尾编辑

I行首编辑

o 操作,将在光标所在行下面另起新行,并将光标移到新行处,处于编辑模式

O 操作,将光标所在行上面另起新行,并将光标移到新行处,处于编辑模式

i 操作,光标将跑到该字符前 insert

a 操作,光标将跑到该字符后 append

w 光标一次往后移动一个单词的位置,光标定位在单词首部,可以结合数字使用

b 光标一次往前移动一个单词的位置,光标定位在单词首部,可以结合数字使用

e 光标一次往后移动一个单词的位置,光标定位在单词尾部,可以结合数字使用

G 移动光标到文件末尾,和数字结合使用,如33G,移动光标到第33行gg 移动光标到文件开头

`` 移动光标到前一个位置

H home,移动光标到文件开始位置

M Middle 移动光标到文件中部

L last 移动光标到文件末尾

ctrl+G 文件底部会出现文件信息:文件位置,权限,行数,所占百分比

zz 使当前行成为可视窗口中心

zt 使当前行成为可视窗口顶部

zb 使当前行成为可视窗口底部

 

 

[[或者gg跳转行头

]]或者shift+g 跳转行尾

v可视化模式,可以从当前行开始选择

Ctrl+v 列选择模式

全部选择

gg 移动到第一行

v 视图模式

G 移动到最后一行

o跳转到选择区的最前面或者最后面

删除文件所有内容:

gg

dG

格式化代码

非编辑模式,自动对齐:(gg=G)

1,gg 跳转到第一行

2,shift+v 转到可视模式

3,shift+g 全选

4,按下神奇的 =

你会惊奇的发现代码自动缩进了,也可能崩溃了。

 

 

 

 

 

 

 

你可能感兴趣的:(gvim)