我想插入空行而不进入插入模式,我使用了这个键映射:
nomap go o <esc>
Run Code Online (Sandbox Code Playgroud)
这确实创建了空白行,但引入了一些奇怪的行为.我有聪明的缩进和自动设置.新行遵循缩进但不删除它们,即使这样做会手动自动删除冗余空格.它还添加了每个光标所在的单个空格.
任何人都有任何见解来解释这种行为?
我想映射一个键来切换foldmethod=indent和不折叠.我怎样才能做到这一点?
我将键映射F2到refresh(:edit)当前打开的文件.当我在外面更新文件时(日志文件末尾添加了新行),我在观看日志文件时使用此功能来更新屏幕.
nnoremap <silent> <F2> :edit<CR>
Run Code Online (Sandbox Code Playgroud)
我想在刷新后跳转到文件的末尾.
如何创建键映射,同时执行:edit并跳转到文件末尾(快捷方式G)?
我想根据上下文分配不同的命令.
我正在尝试做这样的事情:
if line is empty:
map x key to y command
else
map x key to z command
Run Code Online (Sandbox Code Playgroud) 我试图定义我的次要模式,之后模仿它isearch-mode(因为它是一种交互式搜索和替换工具,我认为它可能是一个很好的起点).我的命令运行良好(在全局键绑定上测试),但我在本地(在次模式映射中)将它们绑定到某些键(即TAB和RET)时遇到严重问题.我正在做这样的事情:
(defvar my-mode-map
(let ((map (make-sparse-keymap)))
(define-key map "\s" 'my-command)
(define-key map "\t" 'another-one)
(define-key map "\r" 'yet-another)
map))
Run Code Online (Sandbox Code Playgroud)
(当然,我确实把我的keymap放到了minor-mode-map-alist中.)
虽然空间绑定命令工作正常,但TAB和RET在某种程度上没有.如果我改变,例如,"\ t"改为"[f11]",它可以正常工作.我尝试使用"矢量符号"([?\ t]),结果相同(在我的键盘映射之后,这并不奇怪).可能会发生什么?
编辑:澄清问题,我试图隔离它,我想出了以下代码.假设我想要一个人为的,相当小的次要模式tabbang,其中TAB键插入一个感叹号.我这样做:
(defvar tabbang-mode)
(add-to-list 'minor-mode-alist '(tabbang-mode tabbang-mode) t)
(defvar tabbang-mode-map
(let ((map (make-sparse-keymap)))
(define-key map [?\t] 'tabbang-insert-bang)
(define-key map [?\C-\t] 'tabbang-insert-bang)
(define-key map [f11] 'tabbang-insert-bang)
(define-key map [?\r] 'tabbang-done)
(define-key map [t] 'tabbang-other-char)
map))
(add-to-list 'minor-mode-map-alist `(tabbang-mode . ,tabbang-mode-map) t)
(defun tabbang-insert-bang ()
(interactive)
(insert "!"))
(defun tabbang-mode ()
(interactive) …Run Code Online (Sandbox Code Playgroud) 编程时,我经常使用以下两行:
sprintf(buff,"%s", __func__);
putrsUART(buff);
Run Code Online (Sandbox Code Playgroud)
是否可以设置任何键盘快捷键来插入这两行?例如,当我在命令模式下键入\ sp时,这些函数会添加到我文件中的光标位置.这可能吗?如果是这样,我如何映射我的密钥?
提前致谢.
我几乎可以肯定,别人也有这个问题,这可能是重复的,但我不知道叫什么命令一样<C-L>,所以我还没有得到任何运气找到一个现有的问题.如果这是重复,请重定向我.
问题来自vimrc部分,其内容如下:
" Map <C-L> (redraw screen) to also turn off search highlighting until the
" next search
nnoremap <C-L> :nohl<CR><C-L>
Run Code Online (Sandbox Code Playgroud)
那么我按哪种键组合(在哪种模式下)来输入<C-L>映射?
我的键盘上有一个 ½ 键,有时我想在 Vim 中编辑 LaTeX 时使用它来扩展到正确的表达式,即\frac{1}{2}.
我知道我应该做类似的事情:
inoremap ½ \frac{1}{2}
Run Code Online (Sandbox Code Playgroud)
现在,我如何使这项工作仅适用于 LaTeX 文件?
我正在编辑线移动的关键映射,如下所示:
vnoremap <silent> <C-j> :m '>+1<CR>gv
vnoremap <silent> <C-k> :m '<-2<CR>gv
Run Code Online (Sandbox Code Playgroud)
它们应该上下移动行块,并且在大多数情况下工作正常,除了文件的顶部和底部.
当我选择线1 2并输入ctrl-k时,确定它不能向上移动,而预期的行为是线1 2仍然在视觉模式中高亮显示.
当前的外观是,线1 2不再突出显示.我知道那是因为":m'< - 1"失败了,那么gv就不会被执行了.
所以我的问题是如何忽略这个错误以确保gv执行呢?或其他一些解决方案?
请注意,我知道解决方案linemovement.vim.它在两个独立的命令和一些函数中运行它们.虽然我认为这应该是一个轻量级的代码.
我在Windows 10上使用gvim并尝试获得一个好的键盘映射来打开垂直拆分到新文件.我第一次尝试
nnoremap <c-m><c-m> :vnew<CR>
Run Code Online (Sandbox Code Playgroud)
但出于某种原因,如果我在正常模式下连续两次回车,我会得到一个新的垂直分割窗口.所以我从关键地图中取出了尾随回车
nnoremap <c-m><c-m> :vnew
Run Code Online (Sandbox Code Playgroud)
如果我在正常模式下按回车三次,仍会得到一个新的垂直分割窗口,由于某种原因,我发现自己正在做.
当_vimrc中的键映射中没有回车符时,为什么回车设置关键映射?我重新启动vim没有任何效果.