vim - 在命令模式下导航字符

时间:2016-11-29 16:41:03

标签: vim

对VIM来说相对较新,并且很有时间使用它。

当我想修改命令时,我遇到的一个非常小的烦恼是命令模式字符导航。我习惯在常规(非vim)命令行上使用readline快捷方式,但这些快捷方式在:命令模式下似乎不起作用。

例如,使用ctrl + b返回一个字符最终会将我发送到该行的开头,或者使用alt + f前进一个字,最后清除该行并退出命令模式。

我发现在命令模式下导航的唯一方法是使用箭头键,但我认为你应该避免vim中的箭头键以获得最大效率。

:命令模式下导航的标准方法是什么? vim用户通常在这里使用箭头键吗?是否有不同的修改命令的方法?

作为一个更具体的例子,我一直在使用vimgrep来搜索文件。我会做一个像:

这样的命令

:vimgrep /font-family/j my-project/**/*.less | cope

稍后,我会想要使用相同的搜索但查找不同的属性,因此我点击:然后ctrl + p来访问我之前的vimgrep。现在,我必须使用箭头键向后导航到搜索字符串并进行修改。如果我可以使用readline按字向后导航然后按字删除,那会快得多。

3 个答案:

答案 0 :(得分:3)

对于小编辑, Backspace 和光标键的使用应该没问题。对于任何更大的内容,我建议使用命令行窗口

  

在命令行窗口中,可以像编辑一样编辑命令行   任何窗口中的文字。

因此,没有必要在心理上切换到 readline 键映射;只需使用Vim的全部编辑功能(包括任何自定义映射)。

您可以通过data = new Vector<String>() { @Override public synchronized boolean addAll(Collection<? extends String> arg0) { // TODO Auto-generated method stub Vector<String> v = (Vector<String>) arg0; for (String string : v) { if (contains(string)) { return false; } } return super.addAll(v); } }; 从命令行切换,或直接输入(从正常模式),而不是<C-F>而不是q:。所有细节都可以在:找到。

答案 1 :(得分:1)

我喜欢这个问题。很长一段时间vim用户,但是这里是新的,所以我不能投票。但事实上,也许是非正式的,很多vim粉丝都觉得大部分时间的目标是不让你的手离开主排位置(手指移动,手相对静止)。

我承认,在命令模式方面,我使用箭头。当P在我的小指上时,我会很多地击中ctrl-P,并且右手向下滑动(在我的自然键盘上)并且通过快速感觉立即找到向上箭头来做同样的事情事情。一旦我在那里,左右箭头也很容易找到,没有看或延迟。同样,Ctrl-arrows可让您逐字逐句。

关于vim的一个好处是:帮助。多年来我一直很容易花费数十个小时阅读它,如果我有足够的时间和工作记忆来深入了解它,它可以解决我95%的问题。

以下是我找到的内容:help readline:

  

READLINE readline.vim ft-readline-syntax

     

readline库主要由BASH shell使用,它添加了   相当多的命令和选项已经可用。至   突出显示这些项目,您可以将以下内容添加到您的   | vimrc |里或者在加载文件之前在命令行中输入   readline语法:

let readline_has_bash = 1
  

这将为BASH(版本2.05a)的命令添加突出显示   后来,部分早些时候补充说。

试一试! (我正在使用vim 7.4)

答案 2 :(得分:1)

您可以看到与:help cmdline-history(向下滚动一下)和:help ex-edit-index的默认键绑定列表。

您可以使用cnoremap

重新映射此内容
cnoremap <C-b> <Left>
cnoremap <C-a> <C-b>
" .. Probably more

请注意,使用cmap可能会让您遇到问题,因为右侧是当前映射的操作,而cnoremap右侧则是def get_paths(data): if 'path' in data: yield data['path'] for k in data.keys(): if isinstance(data[k], dict): for i in get_paths(data[k]): yield i for path in get_paths(json_data): # loaded json data print(path) 将始终使用本机Vim操作。