vim中,将光标移至第60行,并且删除行尾的15个字符,如何执行命令?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vim中,将光标移至第60行,并且删除行尾的15个字符,如何执行命令?相关的知识,希望对你有一定的参考价值。

答案: 60G$d14hx 或 60G$14hd$
让我们分开来看,这样好理解一些,
首先是60G,作用是将光标移到第60行开头,
其次是$, 作用是移到当前行行尾,如果接着上面的60G来说,即移动到第60行的行尾,
d14h, 这里先说下h,我们都知道在vim中h和l分别是向左或向右移动1个字符,d是删除命令,所以d14h是向左删除14个字符,接着上面的说就是从60行行尾向前删除14个字符,
最后是x,即删除光标所在字符,因为上面14个字符删除后光标位于最后一个字符上,所以使和x将最后一个字符删掉,
至此完成标题的要求。
*.这里最后用的是d14hx而不是d15h,是因为vim中有的移动命令是包含当前字符的,有的不包含,具体可以看下vim文档的motion.txt.
参考技术A

    :60

    :%s/.\\10\\$//

    两条命令

    希望可以帮助你  请  采纳  谢谢

参考技术B 换行方式
在早期的打印机时代,开始新的一行要占用两个字符的时间。如果到了一行的结尾处,你要快速回到新的一行的开头,需要打印针头在纸面上飞快地掠过,常常会在纸面上留下污点。解决这个问题的办法就是,用两个字符:一个字符<Return>来移到第一列,另一个字符<Line feed>来新增一行。计算机产生以后,存储较为昂贵,在如何解决回车换行这个老问题上,人们产生了不同的意见。UNIX人认为在到达一行的结尾时新增一行<Line feed> (LF),而Mac人则认同<Return> (CR)的解决办法,MS则坚持古老的<Return><Line feed> (CRLF)的方法。这就意味着如果你将一个文件从一个系统转移到另一个系统,就面临着回车换行的问题。而Vim编辑器则会自动的认出这种文件格式方面的区别,并做出相应处理。
fileformats选项,用于处理文件格式问题。以下命令,告诉vim将UNIX文件格式做为第一选择,而将MS-DOS的文件格式做为第二选择:
:set fileformats=unix,dos
检测到的文件格式会被存放在fileformat选项中,我们可以用以下命令来查询:
:set fileformat?
我们还可以利用fileformat选项,来转换种文件格式。例如,使用以下命令将名为readme.txt的MS-DOS格式的文件,转换为UNIX格式的文件。
:set fileformat=unix
在默认情况下,Vim认为文件是由行组成的,并且文件最后一行是以<EOL>为结束符的。如果你想设置文件以<EOL>结束符结尾,则可以用以下命令:
:set endofline
如果你想设置文件不以<EOL>结束符来结尾,则可以使用以下命令:
:set noendofline
显示换行
如果你使用以下命令进入<list mode>,那么就可以清楚的看到以“$”表示的换行符和以“^I”表示的制表符。
:set list

你可以使用以下命令退出<list mode>:
:set nolist
删除换行
可以用以下命令删除换行符:
:%s/\n//g
可以用以下命令删除DOS文件中的回车符“^M”:
:%s/\r//g
可以用以下命令转换DOS回车符“^M”为真正的换行符:
:%s/\r/\r/g
可以用以下命令删除行尾的空格以及DOS回车符。它没有使用“/”字符作为替换命令各个参数间的分隔符,而是使用了“#”字符。命令还使用了“\?”正则表达式,用来匹配它前面出现的字符0次或1次。
:%s#\s*\r\?$##
可以用以下命令删除三行空行:
:%s/^\n\3//
可以用以下命令将连续的两个空行替换成一个空行:
:%s/\n\n/\r/g
自动换行
在默认情况下,Vim是不会自动换行的,也就是说我们需要自己决定回车的位置。但是我们也可以通过指定textwidth选项,让Vim自动在指定位置换行。例如,使用以下命令指定在30列时自动换行。由于在遇到空格时才会自动换行,所以换行的精确位置可能会小于你指定的列宽。
:set textwidth=29
而以下命令告诉Vim从右面算起当达到10个字符的空格时要换行:
:set wrapmargin=10
在指定了文本宽度的情况下,当我们将一行中的前几个文字删掉时,Vim并不会将后面行中的文本移动上来,而是形成了一些长短不一的段落,这样看起来不是很好。可以有几种方法处理这个问题:
一种方法是,在可视化模式下选中这些文本,然后用gp命令来格式化选中的段落。另一种方法是,使用gqmotion命令来完成格式。例如要格式化5行,就可以用命令:gq4j。这个命令告诉Vim要格式化本行,同时要格式化下面的4行,这样就达到了格式化5行的目的。如果要格式化整个段落,可以将光标放在段落的第一行上,然后执行命令gq。而使用命令gqip可以格式化当前段落,而且并不必要将光标放在段落的第一行上。

如果要想格式化一行,可以使用命令gqgq,也可以简记为gqq。
注意:选项textwidth优先于wrapmargin。如果要使wrapmargin选项生效,必须将textwidth设置为0(这也是默认值)。
合并行
命令J使两行合并为一行,同时用空格分隔这两行。
通过设置joinspace选项,可以控制合并两行时的分隔符(如果一行是以标点符号来结尾)。如果设置:set nojoinspaces,用J命令合并两行时会用一个空格来分隔;如果设置:set joinspaces,用J命令合并两行时会用两个空格来分隔。如果不希望用空格来分隔合并的行,可以使用gJ命令。
我们也可以使用:join命令,将几行合并为一行并使用空格来分隔各行。如果不希望加入空格,那么可以使用:join!命令。
命令小结
:set fileformat 设置文件格式
:set endofline 设置文件结束符
:set noendofline 取消文件结束符
:set list 进入List Mode
:set nolist 退出List Mode
:%s/\n//g 删除换行符
:set textwidth 设置行宽
:set textwidth 设置行边距
:join 合并多行
J 合并两行

vim的基本操作

插入命令

命令 作用
a 在光标所在字符后插入
A 在光标所在行尾插入
i 在光标所在字符前插入
I 在光标所在行行首插入
o 在光标下插入新行
O 在光标上插入新行

定位命令

命令 作用
:set nu 设置行号
:set nomu 取消行号
:n 到第n行
gg 到第一行
G 到最后一行
nG 到第n行
$ 移至行尾
0 移至行首

删除命令

命令 作用
x 删除光标所在处字符
nx 删除光标所在处n个字符
dd 删除(剪切)光标所在行
ndd 删除(剪切)光标所在下n行
dG 删除光标所在行到文件末尾的内容
D 删除光标所在处到行尾的内容
:n1,n2d 删除指定范围内的行

复制和剪切命令

命令 作用
yy 复制当前行
nyy 复制当前行以下n行
dd 剪切当前行
ndd 剪切当前行以下n行
p 粘贴在当前光标所在行下
P 粘贴在当前光标所在行上

搜索、替换命令

命令 作用
r 取代光标所在处字符(只替换一个)
R 从光标所在处开始替换字符(esc键结束)
u 取消上一步操作

查找和替换命令

命令 作用
/string 搜索指定字符串(严格区分大小写)
n 搜索指定字符串的下一个出现位置
:%s/字符串a/字符串b/c 全文将字符串a替换成字符串b(询问是否替换)
:n1,n2s/字符串a/字符串b/c 在一定范围内将字符串a替换成字符串b(询问)
:%s/字符串a/字符串b/g 全文将字符串a替换成字符串b
:n1,n2s/字符串a/字符串b/g 在一定范围内将字符串a替换成字符串b

注:若想在搜索时忽略大小写需要输入命令:set ic

保存退出命令

命令 作用
:w 保存修改
:w new_name 另存为新的文件名
:wq 保存修改并退出
:q! 不保存修改退出
:wq! 保存修改并退出(文件所有者及root)
ZZ 快捷键,保存修改并退出

高级操作

命令 作用
:r! 文件名 将指定文件的所有内容导入到光标所在位置
:r! 命令 导入命令执行结果
:map 快捷键 触发命令 定义快捷键
:ab 字符串 新字符串 只要输入指定字符串,都将替换为新的字符串

注:定义的快捷键可能会因为系统重启失效,若想永久保存快捷键,在/home/username/.vimrc/root/.vimrc中保存命令(不需要加:)

以上是关于vim中,将光标移至第60行,并且删除行尾的15个字符,如何执行命令?的主要内容,如果未能解决你的问题,请参考以下文章

vim 中将光标从行头移到行尾的快捷键是啥

linux学习一天一个命令(15)[vim命令]

Vim常用命令

vim使用技巧

vim的基本操作

vim的基本操作