没有总结的学习等于白学
前言:
VIM之前在学linux的时候就学过,当时接触的很浅,只是会一些基本的操作,修改文本内容没什么大的问题。
这次又开始学习是因为自己用的IDE出现了问题。
本来不同的编程语言我用的是不同的IDE, C语言用的是Dev C++, Python 用的是PyCharm, java 用的是eclipse. 但我对每个IDE都不是很熟练,只会一些基本的操作,快捷键及技巧什么的都不是很熟练。
然后,就有一个担心,不能没学习一个语言就要去琢磨下对应IDE的技巧(有些IDE确实挺好,如Rstudio),没有那么多的时间和精力。于是就去找可以通用的IDE。一开始,用的是VScode。VScode我也看了教程,照着教程配置。刚开始用的挺好,最近几天不知怎么回事,总是抽风,各种问题,按下葫芦起了瓢。
现阶段,主要是进行一些算法的学习,代码量不是很大,不需要专业的IDE。其实只靠记事本和命令行应该就可以满足我的需求。但刚好了解到,vim也是一个IDE,且比较小,跨平台。又考虑到以后有很大的概率经常接触linux,那么vim的学习就是绕不过去的坎儿。
于是就有了最近的学习,一方面满足现在的需求,掌握基本的技巧,提高效率;另一方面也是为之后的学习和工作做好准备。
一开始纠结于vim 与 neovim 究竟该学哪个,vim是linux平台默认安装的,而neovim比较激进,新特性可能更多些。如果按我以往的习惯,有新东西肯定要学新的,毕竟要跟上时代的潮流。但是毕竟要考虑到以后不一定会接触到什么样的机器,或许就有很早之前的老古董呢?以兼容性考虑,最终还是选择了vim。
资料来源
vim 帮助文档:http://vimcdoc.sourceforge.net/doc/help.html
一开始,也看了一些杂七杂八的教程,后来还是感觉帮助文档最全面,最透彻,推荐阅读官方文档,先跟随vim tutor走一遍较好。
一些常用的知识点
全部来自于文档
字:w b
行:0 ^ $
半页:ctl-u ctl-d
window:H M L
首行:gg
尾行:G
N行:<number>G
文档百分比:<number>%
光标位置信息:ctl-G、set ruler
光标前:i 光标后:a 光标上:O 光标下: o
修改模式:R 修改单个字符:r 修改一个word:cw 修改n个word:c<numbe>w
正向查询: /pattern 反向查询:?pattern 高亮:set hls (highlight search) 忽略大小写:set ic (ignore case)
字符 .*[]^%/\?~$ 有特殊含义。如果你要查找它们,需要在前面加上一个\
查找整个单词 \<只匹配单词开头,\>只匹配单词结尾.
^行首 &行尾 .任意字符
substitute::[range]substitute/from/to/[flags]
[range]:
{number},{number} 指定行之间
{number} 指定行
在范围中使用模式:?stdio.h?+1,/stdio.h/-1s/from/to/g
在范围中使用标记:mt mb :'t,'bs/from/to/g
可视模式和范围:可视模式中选中的就是范围。
global:":global" 命令是 Vim 中一个更强大的命令 (之一)。它允许你找到一个匹配点并且在那里执行一个命令。它的一般形式是:[range]global/{pattern}/{command}
可视列模块 插入文本"I{string}<Esc>" 命令把 {string} 插到可视列块的每一行的左边。
平 移: ">" 命令把选中的文档向右移动一个 "平移单位",中间用空白填充。平移的起始点是可视列块的左边界。
连接若干行:“J"命令连接被选中的行
读文件:[0|$]read <filename>
写文件:[range] write <filename> 添加内容:[range] write >> <filename>
外部程序: :[位置] read !<command>
总结:
目前只是满足了现阶段的需求,后面可能要加强对各种插件,vimrc的设置等方面内容的了解,以满足大型项目的需求
吾生也有涯,而知也无涯,以有涯随无涯,殆已!