Vim

参考文章:

https://coolshell.cn/articles/5426.html
https://www.jianshu.com/p/bcbe916f97e1
https://github.com/skywind3000/awesome-cheatsheets/blob/master/editors/vim.txt
未看:https://zhuanlan.zhihu.com/p/58361985

Debian自带vim.tiny,必须完整打完,不能打vim。功能上最明显的缺失是看不到行号和当前的模式。vi命令也是vim.tiny提供的,但因为命令名称不同,会启用vi模式,效果是backspace无法删除,仅仅是左移光标,输入永远是insert模式。

操作

编辑单词和字

命令名称快捷键
删当前光标所在的一个字符x
在光标后插入a
替换光标所指向的当前字符r<加想要替换的字符>
到下一个单词的开头(但会停在标点前)w
到本单词的结尾e
到本单词的开头b
到上一个句子的开头(
到下一个句子的开头)
查找上一个匹配项*
查找下一个匹配项#
匹配括号移动%
删除直到下一个单词前dw
自动补全ctrl+n
对整数加一ctrl+a
修改双引号内的所有文字f”ci”(那个i表示inside)

编辑当前行

命令名称快捷键
在本行第一个非空格字符处插入I
在本行最后一个字符之后插入A
删除当前行dd
删除本段光标(及)右侧所有字符d}
移动到字母x前fx
粘贴p
在当前行后插入一个新行o
在当前行前插入一个新行O
到行头0
到本行第一个不是空字符的位置^
到本行行尾$
复制当前行yy

编辑整个文章

命令名称快捷键
到第n行:n或nG
到第1行gg
到最后一行G
删除直到最后一行dG
page upctrl+b
page downctrl+f
将光标移到屏幕上的第一行H
将光标移到屏幕上的最后一行L
将光标移到屏幕上的第二行2H

程序功能

命令名称快捷键
帮助:help
打开一个文件:e
另存为:saveas
保存并退出:x或ZZ
切换下一个或上一个文件:bn和:bp
移动hjkl
搜索/pattern,反向搜索用?
替换(替换全部):s/pattern/replacement
撤销u
重做Ctrl+r
继续搜索下一个n
搜索上一个N
以root权限保存:w !sudo tee %
分屏,之后按两次ctrl+w或一次加上方向可以切换:split

可视化选择

  • 按v之后移动光标可以选择。选好后按d删除,按gU改成大写,按gu改成小写
  • 按V是选择一行
  • 按ctrl+v开始块操作。之后:J:把所有的行连接起来(变成一行),< 或 >:左右缩进
  • 格式化代码(自动缩进):gg到第一行,V行选择,G移动到最后一行,按=进行缩进

重复

  • .可以重复上一次的命令
  • N:重复某个命令N次

行尾格式/删除^M

https://www.zhihu.com/question/22130727

  • 查看行尾格式::set ff?;或者用file命令
  • 以某种行尾格式保存::set ff=unix/dos;以某种行尾格式打开::e ++ff=unix/dos
  • 经过实验,如果全文都是CRLF结尾的,vim可以正常识别;只有当有些以CRLF结尾,有些以LF结尾,又以LF模式打开的时候,vim才会出现^M(或者主动以另一种方式打开)
  • 两种格式的转换可以用dos2unix这个程序,它同时会附带unix2dos命令;处理多个文件可以用find+xargs
  • 使用%s/^M//g清除掉^M,其中^M可用ctrl + v,ctrl + m按出来

正则表达式和magic

http://qianjigui.iteye.com/blog/368449

vim中有个magic的设定。设定方法为:
:set magic ” 设置magic
:set nomagic ” 取消magic
vim毕竟是个编辑器,正则表达式中包含的大量元字符如果原封不动地引用(像perl那样), 势必会给不懂正则表达式的人造成麻烦,比如 /foo(1) 命令, 大多数人都用它来查找foo(1)这个字符串, 但如果按照正则表达式来解释,被查找的对象就成了 foo1 了。
于是,vim就规定,正则表达式的元字符必须用反斜杠进行转义才行, 如上面的例子,如果确实要用正则表达式,就应当写成 /foo\(1\) 。 但是,像 . * 这种极其常用的元字符,都加上反斜杠就太麻烦了。 而且,众口难调,有些人喜欢用正则表达式,有些人不喜欢用……
为了解决这个问题,vim设置了 magic 这个东西。简单地说, magic就是设置哪些元字符要加反斜杠哪些不用加的。 简单来说:
magic (\m):除了 $ . * ^ 之外其他元字符都要加反斜杠
nomagic (\M):除了 $ ^ 之外其他元字符都要加反斜杠

设置编码

https://www.zhihu.com/question/22363620

  • 查看编码::set fenc?;或者使用file命令可以查看文件编码
  • 自动检测编码(写进.vimrc)::set fileencodings/fencs=ucs-bom,utf-8,utf-16,gbk,big5,gb18030,latin1
  • 按指定编码保存::set fileencoding/fenc,如果写进.vimrc就是创建文件的默认编码
  • 按指定编码打开::e ++enc=someencoding somefile(重新打开当前文件,省略somefile即可)
  • 去掉BOM:set nobomb
  • 不要改encoding这个设置,它是vim的内部编码

其他设置

  • 配置一个tab为4个空格:https://blog.csdn.net/jiang1013nan/article/details/6298727
  • 设置默认编辑器:select-editor或者update-alternatives --config editor,然后进行选择
  • :set nocompatible:取消和vi的兼容模式

设定好的配置

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理