如何在EOL上对齐所有这些斜杠

时间:2019-04-25 09:34:02

标签: vim

我正在尝试以一种整齐的方式将所有斜线对齐到这些行的末尾(大约还有800行)。最好我想在第80列使用所有斜线(我正在使用vim)。有人有解决方案吗?这是一个示例:

const a = [
  {
    "productName": "My Product",
    "p_id": "1"
  },
  {
    "productName": "My Other Product",
    "p_id": "2"
  }
]


const availableItems = [
  {
    "i_items": "[{\"act\":\"new\",\"app\":\"nexus\",\"type\":\"package\",\"cost\":\"0.00\",\"tax\":null,\"quantity\":1,\"itemName\":\"My Product\",\"itemID\":1,\"physical\":false,\"methods\":\"*\",\"cfields\":[],\"extra\":null,\"renew_term\":1,\"renew_units\":\"m\",\"renew_cost\":\"100.00\",\"grace_period\":86400}]"
  },
];

const path = k => x => x[k];

const parseAvailable = item => JSON.parse(item['i_items']);

const stringify = x => `${x}`;
const getItemIdAsString = x => stringify(path('itemID')(x))

const availabilityChecker = available => product => parseAvailable(available)
  .map(getItemIdAsString)
  .indexOf(product['p_id']) > -1;

const isProductAvailable = availabilityChecker(availableItems[0]);

const result = isProductAvailable(a[0])
const resultTwo = isProductAvailable(a[1])

console.dir(result)
console.dir(resultTwo)

2 个答案:

答案 0 :(得分:2)

如果您的代码/文本是此命令,将会有所帮助:

  • 使用spaces代替Tab
  • \s*\\$前的文本长度<80

    %s/\v(.{-})\s*\\$/\=submatch(1).repeat(' ',79-len(submatch(1))).'\'
    

enter image description here

答案 1 :(得分:0)

如果您的文字宽度设置为80:

set textwidth=80

您可以将以下功能用作基础:

function! RightAlign(char)
    if strlen(a:char) > 1
        return
    endif
    let l:linelength = strlen(getline('.'))
    right
    let l:spaces = strlen(getline('.')) - l:linelength
    execute "normal 0|d" . l:spaces . "l"
    execute "normal f" . a:char
    normal P
end
funccommand -range -nargs=1 RightAlign <line1>,<line2>call RightAlign(<args>)

在要对齐的行上按以下步骤使用它:

:RightAlign('/')

该参数是您要在右侧对齐的第一个字符。

可以在范围内调用它:

:'<,'>RightAlign '/'
:%RightAlign '/'

如果您传递的参数大于1个字符,则该函数将返回。

此外,如果您使用空格而不是制表符,则效果更好(它也需要进行一些修改)。