有没有喜欢用原生ctl+b, ctl+f移动的朋友

说不上喜欢,也就是习惯了

短距离移动倾向于C-f,C-b, 中短距离倾向于h,j,k,l,w,e,b,大范围就avy+其它,我把insert state下的按键全替换成emacs原来的按键。

1 个赞

用机械键盘,双手掌压+拇指控制修饰键,Emacs原生键位很好用,比evil舒服。

我觉得原生的痛点不在移动,在于选择。C-f, M-f都好按,C-M-f 也还行,但是 C-M-S-f 就。。。。

原生肯定是C-SPC了,按shift是为了兼容别的编辑器的方法,类似cua。

觉得C-M-S-f还行,左手手掌边缘按住Ctrl,大拇指按住Alt,食指按住f,右手小拇指按住Shift,按起来很自然

但是C-M-S-n就不舒服了,还是老老实实按C-SPC

比如这种,C-M-u C-M-S-f 或 C-M-n C-M-S-b 就感觉很难按,按多了就手疼。

标记sexp 用 C-M-space 就会简单很多

觉得还是模式编辑方便。除了移动一个字符,都是模式编辑方便。

难道就我用上下左右键吗

很久没用ctrl+b,ctrl+f了,用法是shift+f,shift+b和方向键,要移动很多字符,shift也不想按的时候,我的用法也有模式编辑,caps lock大写字母锁定,然后就可以FBPN移动光标了(不过很少那么用因为方向键也不错), 我的emacs按键使用方式-用shift,看来比较独特,有人也这样用过吗?

强烈推荐交换C-b <-> C-d, M-b <-> M-d

键位偏好,本站有过投票

1 个赞

经常用的是evil的ctl+f和ctl+b来翻页。。。

emacs原生键移动起来非常不舒服,要是没有evil,根本不考虑emacs,还不如用vim。移动的时候一个手指按hjkl肯定比两个手指按c-a c-f之类的舒服,不累。

我vim的 insert 用的是常用 emacs 绑定,哈哈

inoremap <C-P> <Up>
inoremap <C-N> <Down>

set ttimeout
if &ttimeoutlen == -1
  set ttimeoutlen=50
endif

" copy from tpope/vim-rsi
inoremap        <C-A> <C-O>^
inoremap   <C-X><C-A> <C-A>

inoremap <expr> <C-B> getline('.')=~'^\s*$'&&col('.')>strlen(getline('.'))?"0\<Lt>C-D>\<Lt>Esc>kJs":"\<Lt>Left>"

inoremap <expr> <C-D> col('.')>strlen(getline('.'))?"\<Lt>C-D>":"\<Lt>Del>"
" cnoremap <expr> <C-D> getcmdpos()>strlen(getcmdline())?"\<Lt>C-D>":"\<Lt>Del>"

" inoremap <expr> <C-E> col('.')>strlen(getline('.'))<bar><bar>pumvisible()?"\<Lt>C-E>":"\<Lt>End>"
inoremap <C-E> <END>

inoremap <expr> <C-F> col('.')>strlen(getline('.'))?"\<Lt>C-F>":"\<Lt>Right>"


" enter select complete candicate
" inoremap <expr> <CR> pumvisible() ? "\<C-Y>" : "\<CR>"

inoremap <C-X><C-S> <Esc>:w<CR>
cnoremap <C-X><C-S> <Esc>:w<CR>
nnoremap <C-X><C-S> <Esc>:w<CR>

" kill line
inoremap <C-k> <C-r>=<SID>kill_line()<CR>

function! s:kill_line()
  let [text_before_cursor, text_after_cursor] = s:split_line_text_at_cursor()
  if len(text_after_cursor) == 0
    normal! J
  else
    call setline(line('.'), text_before_cursor)
  endif
  return ''
endfunction

function! s:split_line_text_at_cursor()
  let line_text = getline(line('.'))
  let text_after_cursor  = line_text[col('.')-1 :]
  let text_before_cursor = (col('.') > 1) ? line_text[: col('.')-2] : ''
  return [text_before_cursor, text_after_cursor]
endfunction

if has('nvim')
    inoremap <m-f> <Esc>lea
    inoremap <m-b> <Esc>bi
    inoremap <m-d> <Esc>ldwi
    inoremap <m-x> <Esc>:
else
    " map alt in vim is different
    execute "set <m-f>=\ef"
    inoremap <m-f> <Esc>lea
    execute "set <m-b>=\eb"
    inoremap <m-b> <Esc>bi
    execute "set <m-d>=\ed"
    inoremap <m-d> <Esc>ldwi
    execute "set <m-x>=\ex"
    inoremap <m-x> <Esc>:
endif
2 个赞

我的键位习惯是 Vim 和 Emacs 的融合体,vi 在插入模式下除了方向键好像没有可以移动的,Esc 或者 kj 退出插入模式都很慢,所以若有小范围移动我更倾向于 C-f C-b C-a C-e 快捷键,大范围移动还是 Esc kj 退出后,hjkl 移动。这样的后果是一些 IDE,网页编辑区 都只提供单独的 Emacs 或者单独 vim 键位,让我很不习惯。

我一直在用C-f/b M-f/b,包括在终端下也适用,已经习惯了。难道还有其他的方式?

df 二连猛如虎

1 个赞

M-f M-b移动比h l爽