进阶教程:https://coolshell.cn/articles/5426.html
gvim解决utf-8格式乱码问题。
编辑--> 启动设定-->添加如下设置-->重启GVIM
set fileencodings=ucs-bom,utf-8,chinese,cp936,cANSI
cd E:/python_projects --这样的目的是用来设置gvim的启动路径。
set tabstop=4
set nu!
set guifont=Courier_New:h16
set ts=4
set expandtab
更多的设置参考https://www.cnblogs.com/shawnlxf/p/6685526.html
vim使用教程:
详见: https://www.cnblogs.com/harry335/p/5886405.html 非常好, 分分钟叫你入门
使用V 的可视模式, 复制行,第一行前面会带一个回车。最后一行是不带回车。
dd 剪切一行 2dd 剪切2行 第一行前面会带一个回车。最后一行是不带回车
yy赋值一行, 2yy 赋值两行
vim查找替换
详见:https://www.cnblogs.com/huxinga/p/7942194.html
level 0
x → 删当前光标所在的一个字符。
:wq → 存盘 + 退出 (:w 存盘, :q 退出) :w 后可以跟文件名
dd → 删除当前行,并把删除的行存到剪贴板里 相当于剪切
p → 粘贴剪贴板
:help <command> → 显示相关命令的帮助。你也可以就输入 :help 而不跟命令。退出帮助需要输入:q
level 1
各种插入模式
i -> 在光标前插入
a → 在光标后插入
o → 在当前行后插入一个新行 小写o
O → 在当前行前插入一个新行 大写o
cw → 替换从光标所在位置后到一个单词结尾的字符
简单的移动光标
0 → 数字零,到行头
^ → 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
$ → 到本行行尾
g_ → 到本行最后一个不是blank字符的位置。
/pattern → 搜索 pattern 的字符串
拷贝/粘贴 p/P都可以,p是表示在当前位置之后,P表示在当前位置之前
p/P -> 粘贴
yy → 拷贝当前行当行于 ddP
Undo/Redo
u → undo
<C-r> → redo
打开/保存/退出/改变文件(Buffer)
:e <path/to/file> → 打开一个文件
:w → 存盘
:saveas <path/to/file> → 另存为 <path/to/file>
:x, ZZ 或 :wq → 保存并退出 (:x 表示仅在需要时保存,ZZ不需要输入冒号并回车)
:wq 强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间。
:x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。
:bn 和 :bp → 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。 前提你得用另外:e打开另外一个文件。
. → (小数点) 可以重复上一次的命令
N<command> → 重复某个命令N次 光标移动不算在命令中。
2dd → 删除2行
3p → 粘贴文本3次
5o <esc> ->这样就能新增5行。
NG → 到第 N 行 (陈皓注:注意命令中的G是大写的,另我一般使用 : N 到第N行,如 :137 到第137行)
gg → 到第一行。(陈皓注:相当于1G,或 :1)
G → 到最后一行。
> 如果你认为单词是由默认方式,那么就用小写的e和w。默认上来说,一个单词由字母,数字和下划线组成(陈皓注:程序变量)
> 如果你认为单词是由blank字符分隔符,那么你需要使用大写的E和W。(陈皓注:程序语句)
% : 匹配括号移动,包括 (, {, [. (陈皓注:你需要把光标先移到括号上)
* 和 #: 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)
<start position><command><end position>
0y$ 拷贝整行,但是并不能选择最后的回车。
0v$ 选择整行,包括最后的回车
0gU$ 将整行转换成大写
0gu$ 将整行转换成小写。
0d$ 删除整行内容但是保留回车。
在当前行上移动光标: 0 ^ $ f F t T , ;
0 → 到行头
^ → 到本行的第一个非blank字符
$ → 到行尾
g_ → 到本行最后一个不是blank字符的位置。
fa → 到下一个为a的字符处,你也可以fs到下一个为s的字符。
t, → 到逗号前的第一个字符。逗号可以变成其它字符。
3fa → 在当前行查找第三个出现的a。
F 和 T → 和 f 和 t 一样,只不过是相反方向。
必杀技:
0yt, 从开复制到第一个,之前。
V是行选择
v是字符选择。
ctrl+v是块选择。
区域选择 <action>a<object> 或 <action>i<object>
action可以是任何的命令,如 d (删除), y (拷贝), v (可以视模式选择)。
object 可能是: w 一个单词, W 一个以空格为分隔的单词, s 一个句字, p 一个段落。也可以是一个特别的字符:"、 '、 )、 }、 ]。
(map (+) ("foo")) 光标键在第一个 o 的位置
vi" → 会选择 foo.
va" → 会选择 "foo".
vi) → 会选择 "foo".
va) → 会选择("foo").
v2i) → 会选择 map (+) ("foo")
v2a) → 会选择 (map (+) ("foo"))
diw就会删除foo
ctrl + v可视块
前插入要用 I
后插入用 A
使用esc 来让每行都生效。
块操作,典型的操作: 0 <C-v> <C-d> I-- [ESC]
^ → 到行头
<C-v> → 开始块操作
<C-d> → 向下移动 (你也可以使用hjkl来移动光标,或是使用%,或是别的)
I-- [ESC] → I是插入,插入“--”,按ESC键来为每一行生效。
Ctrl+f 向下翻页(Pagedown)
Ctrl+b 向上翻页(Pageup)
Ctrl+d 向下翻半页
Ctrl+u 向上翻半页
如何快速的移动光标
https://harttle.land/2015/11/07/vim-cursor.html
替换:
当前行:
:s/foo/bar/g
全文:
:%s/foo/bar/g
选区,在Visual模式下选择区域后输入:,Vim即可自动补全为 :'<,'>。
:'<,'>s/foo/bar/g
5-12行:
:5,12s/foo/bar/g
当前行.与接下来两行+2:
:.,+2s/foo/bar/g
" 设置默认进行大小写不敏感查找
set ignorecase
" 如果有一个大写字母,则切换到大小写敏感查找
set smartcase
将上述设置粘贴到你的~/.vimrc,重新打开Vim即可生效
删除
1 删除命令
vi命令 | 操作键 |
x | 删除当前光标处的字符 |
X | 删除光标左边的字符 |
D | 删除从当前光标到本行末尾的字符 |
J | 删除两行之间的换行符 (亦可用于合并两行) |
dmove | 删除从当前光标到move所给位置的字符 |
dd | 删除当前行 |
ex命令 |
|
:lined | 删除指定行 |
:line,lined | 删除指定范围内的行 |
2 常用的删除组合命令
说明:操作符命令+位移命令
1 nx 删除多个字符(n为删除的字符个数)
2 dw 删除1个单词
3 d10w 删除10个单词
4 d10W 删除10个单词,忽略标点符号。
5 db 向后删除一个单词
6 d2) 删除两个句子
7 d5} 删除5个段落
8 dG 或 :.,$d 删除当前行到编辑缓冲区末尾的所有行
9 dgg 或 d1G 或:1,.d 删除当前行到编辑缓冲区开头的所有行
10 :1,$d 或 :%f 删除整个编辑缓冲区
11 d/word 删除从光标所在位置到单词word的所有文本
12 .,/word/d 删除从光标所在位置到单词word的所有文本
13 df x 删除至当前行中x所在的位置
14 d^ 删除至该行的开始处
15 :g/^$/d 删除文件中所有空行
3插入模式中删除操作
^U 删除当前行
^H 删除前一个字符
^W 删除前一个词
4 撤销或重复改变
vi命令:
1 u 撤销上一命令对编辑缓冲区的修改
2 U 恢复当前行(即一次撤销对当前行的全部操作)
3 .点号 重复上一命令对编辑缓冲区的修改
5 恢复删除
语法:"1p(P)
说明:
1 1为缓冲区的编号。
2 p在当前行的下面插入,P在当前行的上面插入。
H 移至萤幕顶第一个非空白字元。
M 移至萤幕中间第一个非空白字元。
L 移至萤幕底第一个非空白字元。
这和 PageDown,PageUp 不一样,内文内容并未动,只是游标在动而已。
n| 移至第 n 个字元(栏)处。注意,要用 Shift 键。n 是从头起
算的。
:n 移至第 n 行行首。或 nG。
特殊的移动
) 移至下一个句子(sentence)首。
( 移至上一个句子(sentence)首。
} 移至下一个段落(paragraph)首。
{ 移至上一个段落(paragraph)首。
sentence 是以 . ! ? 为区格。
paragraph 是以空白行为区格。
vim设置字体的N中方法:
https://www.jianshu.com/p/3310ca7b07a1
vim编辑模式下移动光标:
https://www.zhihu.com/question/19643925
不生成讨人厌的~文件
https://www.jianshu.com/p/5de863537d99
取消高亮的方法:
:noh