Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VI/VIM编辑器:使用映射序列用HTML标记包装单词_Vim - Fatal编程技术网

VI/VIM编辑器:使用映射序列用HTML标记包装单词

VI/VIM编辑器:使用映射序列用HTML标记包装单词,vim,Vim,我试图定义一个vi‘map’命令序列,它将当前单词包装在一个HTML标记中,例如B(粗体)标记。地图定义如下: :map K ebi<B><esc>ea</B><esc> :映射K ebiea 地图以运动“eb”开始,移动到所选单词的开头, 假设最可能的光标位置是单词或的开头 在中间问题是,如果光标位于最后一个位置,它将不起作用 单词的字符-然后将包装下面的单词 有没有一个技巧可以让这张地图在任何带有单词的光标位置上都能可靠地工作?请改用lb

我试图定义一个vi‘map’命令序列,它将当前单词包装在一个HTML标记中,例如B(粗体)标记。地图定义如下:

:map K ebi<B><esc>ea</B><esc>
:映射K ebiea
地图以运动“eb”开始,移动到所选单词的开头, 假设最可能的光标位置是单词或的开头 在中间问题是,如果光标位于最后一个位置,它将不起作用 单词的字符-然后将包装下面的单词

有没有一个技巧可以让这张地图在任何带有单词的光标位置上都能可靠地工作?

请改用lb

e移动到当前单词的末尾,或者您发现的下一个单词。 b移动到当前单词或上一个单词的开头(如果您在第一个字符上)。防止移动到 在第一个字符上的前一个单词,move 右边一个字符。即使你在单词的最后一个字母上, b会带你到正确的位置

因此,您的整个产品线将是:

:map K lbi<B><esc>ea</B><esc>
:地图K lbiea
改用lb

e移动到当前单词的末尾,或者您发现的下一个单词。 b移动到当前单词或上一个单词的开头(如果您在第一个字符上)。防止移动到 在第一个字符上的前一个单词,move 右边一个字符。即使你在单词的最后一个字母上, b会带你到正确的位置

因此,您的整个产品线将是:

:map K lbi<B><esc>ea</B><esc>
:地图K lbiea

如果这是一个一次性映射,那也没关系,但是如果你想做得更多或更频繁,最好使用文本对象

如果使用该脚本,则可以执行(在正常模式下)

你必须逐字输入
ys
是告诉surround.vim听文本运动
iw
选择您当前使用的单词
t
告诉它你想用一个标签包围它<代码>b>告诉它要使用哪个标记

即使您不想使用surround.vim,也可以研究在地图中使用文本对象(
:help text objects
)。
iw
内部单词
文本对象就是您在这里想要的,但我还不知道如何将其包装到地图中

编辑:我想到了如何在地图中使用它,下面是

:map K viwO<Esc>i<b><Esc>lviw<Esc>a</b><Esc>
:映射K viwOilviwa
这将使光标停留在结束标记的结束
。它应该在光标最初所在的单词中的任何位置工作


但正如我所说,surround.vim更可取。

如果这是一个一次性的映射,这很好,但是如果您想做得更多,或者做得更频繁,最好使用文本对象

如果使用该脚本,则可以执行(在正常模式下)

你必须逐字输入
ys
是告诉surround.vim听文本运动
iw
选择您当前使用的单词
t
告诉它你想用一个标签包围它<代码>b>告诉它要使用哪个标记

即使您不想使用surround.vim,也可以研究在地图中使用文本对象(
:help text objects
)。
iw
内部单词
文本对象就是您在这里想要的,但我还不知道如何将其包装到地图中

编辑:我想到了如何在地图中使用它,下面是

:map K viwO<Esc>i<b><Esc>lviw<Esc>a</b><Esc>
:映射K viwOilviwa
这将使光标停留在结束标记的结束
。它应该在光标最初所在的单词中的任何位置工作

但正如我所说,surround.vim更可取。

另一种方法: 删除内部单词(diw),插入标签,找到最后一种方法:
删除内部单词(diw),插入标签,找到最后一个如果你想要一个更全局的解决方案,你可以尝试它可以为你提供环境。只需选择您的文本,键入Selectthegoodsnippet(我认为)并键入您的标记名,但如果您愿意,您可以添加一个特殊的模板


此外,这是一个非常好的工具,可以使用各种语言,正如您在本

中所看到的,如果您想要一个更全球化的解决方案,您可以尝试它,它可以为您提供环境。只需选择您的文本,键入Selectthegoodsnippet(我认为)并键入您的标记名,但如果您愿意,您可以添加一个特殊的模板


此外,这是一个使用各种语言的非常好的工具,正如您在本

中所看到的,只要光标不在单词的第一个字符上,“b”运动就可以工作,否则它将移动到前一个单词。这与光标位于最后一个字符上时的“e”运动相同。只要光标不在单词的第一个字符上,“b”运动就会起作用,否则它会移动到前一个单词。这与光标位于最后一个字符上时的“e”运动面临的困境相同。随机评论:我只使用Vim作为编辑器,但当人们编写Vim命令时,我总是感到困惑,因为它们看起来很可笑。肌肉记忆是一个严厉的情妇。这是一个巧妙的伎俩。关于surround.vim的推荐很好,谢谢+1对于您和Leonard的解决方案。@flemish bee cycle:在这种情况下,对我来说更糟,因为我不使用qwerty键盘布局,所以我的键绑定是自定义的。我需要将我所做的转换回默认的键绑定,以便将它们粘贴到这里。{|随机评论:我专门使用Vim作为编辑,但当人们编写Vim命令时,我总是感到困惑,因为它们看起来很可笑。肌肉记忆是一个苛刻的情妇。这是一个巧妙的技巧。关于surround.Vim的好建议,谢谢。+1为你和Leonard提供了解决方案。@flemish bee cycle:在这种情况下,对我来说更糟,because我不使用qwerty键盘布局,所以我的键绑定是自定义的。我需要将我所做的转换回默认的键绑定,以便我可以将它们粘贴到这里。{太好了!有三种解决方案(来自sykora、Leonard和fgm)可以帮助我