vimtutor 学习&踩坑记录

vimtutor 学习&踩坑记录

使用阿里云服务器,在终端输入vimtutor进行学习,将文件修改,另存后导出到本地。

参考教程: vimtutor官方教程中文版

vi与vim
vi编辑器是所有Unix及Linux系统下标准的编辑器,相当于windows系统中的记事本。它的强大不逊色于任何最新的文本编辑器。它是我们使用Linux系统不能缺少的工具。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的。
vim 具有程序编辑的能力,可以以字体颜色辨别语法的正确性,方便程序设计;因为程序简单,编辑速度相当快速。vim可以当作vi的升级版本,他可以用多种颜色的方式来显示一些特殊的信息。
vim会依据文件扩展名或者是文件内的开头信息, 判断该文件的内容而自动的执行该程序的语法判断式,再以颜色来显示程序代码与一般信息。
vim里面加入了很多额外的功能,例如支持正则表达式的搜索、多文件编辑、块复制等等。 这对于我们在Linux上进行一些配置文件的修改工作时是很棒的功能。

一、基础操作&命令学习

lesson 1

  1. 光标移动:h左 j下 k上 l右
  2. 进入vim:vim 文件名 <回车>
  3. 退出vim: < ESC > :q! <回车> 放弃所有改动;或 < ESC > :wq <回车> 保存改动。
  4. 删除光标处字符:x
  5. 在光标前插入文本:i
  6. 在一行后添加文本:a
  7. 按下 < ESC > 键会回到正常模式或者撤消一个不想输入或部分完整
    的命令。

lesson 2

  1. 从光标删除至下一个单词:dw

  2. 从光标删除至行末:d$

  3. 删除整行:dd

  4. 重复一个动作,加上数字:如2w

  5. 修改命令的格式:operator [number] motion

    operator操作符:代表要做的事情,如d删除

    [number]可以附加的数字:代表重复次数

    motion动作:所操作的文本上的移动,如w为word,$为行末

  6. 移动光标至行首:0

  7. 撤销undo:u

  8. 撤销在一行中的改动:U

  9. 重做redo:ctrl+r

lesson 3

  1. 重新置入已经删除的文本内容:p,注意置入的位置在光标之后,如果最后一次删除的是一个整行,那么该行将置于当前光标所在行的下一行。
  2. 替换光标所在位置的字符:r+新字符
  3. 更改类命令,改变从当前光标位置直到动作指示位置中间的文本:c [number] motion,用法和上面的删除类命令d类似。(这里ce和cw用起来几乎没有区别,目前发现的唯一的区别就是如果修改的是本行最后一个单词的时候,cw是仅仅删除了本行末尾的字符,ce会把换行符也删除,下一行接到了本行的最后。)

lesson 4

  1. 显示当前光标所在位置和文件状态信息:ctrl+g

    光标跳转至文件最后一行:G

    跳转至某行:行号+G

    跳转至第一行:gg

  2. 在当前文档中正向查找字符串:/ +字符串

    在当前文档中反向查找字符串:?+字符串

    在同一方向查找下一个字符串:n

    在反方向查找下一个字符串:N

    跳转回较旧的位置:ctrl+o

    跳转回较新的位置:ctrl+l

  3. 如果光标当前位置是括号(、)、[、]、{、},按 % 会将光标移动到配对的括号上

  4. 在一行内替换头一个字符串old为新字符串new,输入:s/old/new

    在一行内替换所有一个字符串old为新字符串new,输入:s/old/new/g

    在两行内替换所有字符串old为新字符串new,输入:#,#s/old/new/g(#为行号)

    在文件内替换所有字符串old为新字符串new,输入:%s/old/new/g

    在文件内替换所有字符串old为新字符串new并询问用户确认每个替换,输入:%s/old/new/gc

lesson 5

  1. 执行一个外部命令command,输入: !command。如:!dir或:!ls可显示当前目录内容;而:!del filename或:!rm filename用于删除文件。
  2. 将当前vim中正在编辑的文件保存到名为filename的文件中,输入:w filename
  3. 编辑模式:v。在编辑模式下,输入:w filename,将选中的内容保存到文件filename中
  4. 提取磁盘文件filename并将其插入当前文件的光标位置,输入:r filename
  5. 读取dir命令的输出并将其放置到光标位置后面,输入:r!dir

lesson 6

  1. 在光标下方打开新的一行并进行插入:o

    在光标上方打开新的一行并进行插入:O

  2. 在光标所在位置之后插入文本:a

    在光标所在行的行末插入文本:A

  3. 使光标移动到单词末尾:e

  4. 复制文本:y,粘贴文本:p

  5. 进入替换模式:R,按< ESC >退出

  6. 输入:set xxx,可以设置xxx选项

    查找时忽略字母大小写:ic(ignorecase)

    查找短语时显示部分匹配:is(incsearch)

    高亮显示所有匹配短语:hls(hlserarch)

  7. 在选项前加no可以关闭选项,如输入:set noic

lesson 7

  1. 打开帮助窗口:按< Help >或< F1 >或输入:help
  2. 关于cmd命令的帮助,输入: help cmd
  3. 在窗口之间跳转:ctrl+w
  4. 关闭帮助窗口,输入:q
  5. 创建一个vimrc启动脚本用来保存偏好的设置
  6. 输入:命令时,按ctrl+d查看可能的补全结果,按< TAB >使用第一个补全。

二、踩坑

2.1 修改后的vimtutor不能保存

  1. : wq不能保存

    直接修改vimtutor后,使用: wq保存退出,但再次通过vimtutor命令进入,保存都丢失了。原因是使用vimtutor打开的是一个新的文件,原来的vimtutor存在tmp或者root下?

  2. v可视模式下不能鼠标右键复制选中文本。即ggvG全选后无法复制。

  3. 鼠标直接选择文本,不能滚动屏幕,只能复制当前屏幕文本

  4. 选中文本后,"+y复制和"+p粘贴只能在当前编辑器下使用,如退出再进入另一个系统编辑器,则失效。

最终解决方法:不使用复制粘贴,而是: w + 新文件名,另存到root目录下的新文件中。新文件名为homework。

2.2 将linux远程服务器的文件下载到本地windows

下载putty,输入阿里云服务器的公网ip。

用户名为root,输入密码

  1. 网上教程pscp root@公网ip:/root/homework d:

    报错pscp command not found

  2. 下载openssh:yum install openssh-clients* -y

  3. 使用scp root@私网ip:/root/homework d:

    报错ssh: Could not resolve hostname d: Name or service not known

  4. 使用scp root@私网ip:/root/homework /home/Download

    成功下载到home文件夹中自己的下载文件夹Download

    (备注:其实安装Openssh后,安装目录产生的home文件夹就等同于linux系统中的/home,只是在windows中换了一种方式而已)

    问题:怎么在本机上找到openssh的路径和home文件夹?

  5. 另寻解决方法:下载pscp.exe,拷贝到C:\Windows\system32

    执行pscp root@私网ip:/root/homework d:,报错ssh_init: Network error: Cannot assign requested address

  6. 加上端口号,pscp -P 22 root@私网ip:/root/homework d:

    报错FATAL ERROR: Network error: Connection timed out

  7. 改用公网地址,pscp -P 22 root@公网ip:/root/homework d:

    输入密码后,终于下载成功!

附加查到的其他信息:

检查ssh server是否启动:ps -e | grep ssh

手动启动ssh server:sudo /etc/init.d/ssh start

查看系统中ssh安装包:rpm -qa | grep ssh

查看该安装包的信息:rpm -ql openssh

查看ssh服务的网络连接情况:root]#netstat -ntlp

Guess you like

Origin blog.csdn.net/ycsss/article/details/115261049